概述
执行引擎是java虚拟机核心的组成成分之一.
首先我们知道jvm的主要任务是装载字节码到其内部,但是字节码并不能够直接运行在操作系统中,字节码指令并不是等价于本地机器指令,那么执行引擎的作用就在这里.想要一个java程序运行起来,通过执行引擎将字节码指令解释/编译(后端编译)为对应平台上的本地机器指令.也就是说,执行引擎是将高级语言翻译称为机器语言.
解释器与JIT编译器
解释器:java虚拟机启动,根据预定义的规范对字节码采用逐行解释,将每条字节码文件的内容翻译为本地机器指令执行.
JIT编译器:虚拟机将源代码一次性直接编译成和本地平台相关的机器语言,不是马上执行.
java半编译半解释型语言
解释执行和编译执行二者结合进行。
早期是解释性语言,直接静态编译称为本地机器指令,利用解释器在运行时逐行的进行解释字节码,效率低。后面有了jit编译器,将字节码翻译成本地代码后还能做一个缓存,存储在方法区中,执行效率得到了提高。
对于频繁调用的热点代码,jit编译器还进行了优化(直接编译为本地机器指令)。
为什么编译器执行效率高还需要解释器?
解释器可以立即发挥作用,响应时间快
编译器在编译成本地代码,需要一定的时间,但编译称为本地代码后效率就高了
所以两者结合使用。