Java解释执行与编译执行

问题

Java语言是解释执行还是编译执行

答案

Java是解释执行和编译执行共同存在的

过程

Java源代码文件首先由Javac编译为字节码,字节码由各操作系统对应的虚拟机解释或编译执行。
字节码:字节码是已经经过编译(.class文件),但与特定机器码无关,需要解释器转译后才能成为机器码的中间代码。
无论是采用解释器进行解释执行,还是采用即时编译器进行编译执行,最终字节码都需要被转换为对应平台的本地机器指令。

定义

解释执行:将编译好的字节码一行一行地翻译为机器码执行。
编译执行:以方法为单位,将字节码一次性翻译为机器码后执行。

特点

解释执行:将编译好的字节码一行一行地翻译为机器码执行,但不会进行编译

编译执行:即时编译存在的意义在于它是提高程序性能的重要手段之一。根据“二八定律”(即:百分之二十的代码占据百分之八十的系统资源),对于大部分不常用的代码,我们无需耗时间将之编译为机器码,而是采用解释执行的方式,用到就去逐条解释运行;对于一些仅占据小部分的热点代码(可认为是反复执行的重要代码),则可将之翻译为符合机器的机器码高效执行,JIT编译器可以针对那些频繁被调用的“热点代码”做出深度优化,提高程序的效率,此为运行时的即时编译。

image.png

你可能感兴趣的:(Java解释执行与编译执行)