Java是编译型还是解释型

定义

编译语言(英语:Compiled language)是一种程式语言类型,通过编译器来实作。它不像直译语言一样,由直译器将程式码一句一句执行,而是以编译器,先将程式码编译为机器码,再加以执行。理论上,任何程式语言都可以是编译式,或直译式的。它们之间的区别,仅与程式的应用有关。

解释型语言(英语:Interpreted language)是一种编程语言类型。这种类型的程式语言,会将程式码一句一句直接执行,不需要像编译语言(Compiled language)一样,经过编译器先行编译为机器码,之后再执行。这种程式语言需要利用直译器,在执行期,动态将程式码逐句直译(interpret)为机器码,或是已经预先编译为机器码的子程式,之后再执行。

java 是解释型还是编译型呢

请添加图片描述

那JAVA究竟是编译型还是解释型语言呢?Wiki上如是说:

JAVA及C#采用混合方式,先将程式码编译为字节码,在执行时再进行直译。

个人认为:

编译型语言是将代码通过编译器编译成二进制机器码,但是Java将.java文件编译成.class文件并不是机器码,还需要不同操作系统的JVM解释成机器码,从这种角度看,Java是“编译后解释”,扣定义,属于解释型语言。

但是,Java中存在JIT,AOT等技术。

JIT:将热点代码编译成机器码缓存起来。

AOT:在运行前,将字节码转换成机器码。

从这种角度看。Java是编译型语言。

Java是编译型还是解释型_第1张图片

优缺点

编译型

优点:

  1. 执行效率高:先编译成机器码,跳过解释步骤,因此效率高。

  2. 一次编译多次执行

  3. 安全性高:编译后,不易被逆向工程,安全性相对高。

缺点:

  1. 开发效率相对低:每次发布都需要打包,编译。
  2. 跨平台受限:编译后的机器码通常与特定的系统有关,不利于跨平台。

解释型

优点:

  1. 开发效率高:解释型语言的源代码易于查看和修改,相对不太容易保护代码的安全性。
  2. 跨平台性好:解释型语言的代码不依赖于特定的计算机架构,可以在多个平台上运行。
  3. 易于调试,灵活

缺点:

  1. 执行效率低:需要解释执行。

  2. 一次编译一次执行

  3. 不安全:解释型语言的源代码易于查看和修改,相对不太容易保护代码的安全性。

综上所述,编译型语言适合性能要求高、复杂度大的应用,而解释型语言适合开发周期短、跨平台性要求高的应用。

哪些语言是编译型?

C、C++、Pascal、Object-C以及Swift。

哪些语言是解释型?

JavaScript、Python、Erlang、PHP、Perl、Ruby。

你可能感兴趣的:(JVM,java,jvm)