Execution Engine
?
?

橙色部分为前端编译器生成线型的字节码指令
绿色部分为解释器
蓝色部分为后端编译器
?
大部分的程序代码转换成物理机的目标代码或者虚拟机能执行的指令集之前,都需要经过上图的各个步骤?
解释器(Interpreter):当Java虚拟机启动时会根据定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行
JIT(Just In Time Compiler)编译器:就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言
?
问题:为什么说Java是半编译半解释型语言?
执行引擎即可以解释执行也可以编译执行
?
JDK1.0时代,将Java语言定位为“解释执行”是比较准确的。再后来,Java也发展出可以直接生成本地代码的编译器(提高效率)
?
现在JVM在执行Java的时候,通常都会将解释执行与编译执行二者结合起来进行
原文:https://www.cnblogs.com/baojiong/p/15202878.html