Bootstrap

JVM本地方法接口和执行引擎

JVM本地方法接口和执行引擎

在这里插入图片描述

本地方法接口

一个 Native Method(Java方法) 就是一个 java 调用非 java 代码的接口。

问1:为什么要使用Native Method?

出于对不同语言实现功能的简易性以及效率而言:

  • 与计算机外部硬件交互
  • 解释器是用C实现的

执行引擎

将字节码指令解释/编译为对应平台上的本地机器指令。(即将高级语言翻译为机器语言的译者)

  • 执行引擎的两种行为:解释执行和编译执行。

问1:什么是解释器?什么是JIT编译器?

  • 解释器:即根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码内容“翻译”成对应平台的本地机器指令执行。(执行效率低)
  • JIT编译器:将源代码一次性直接编译成和本地机器平台相关的机器语言,但不会马上执行。(相当于做了缓存操作,执行效率高)

问2:为什么Java是半编译半解释型语言?

主要是因为Java是跨平台性语言,但是由于解释器逐行解释字节码执行程序效率低;而JIT编译器将字节码翻译成本地代码后,存储在方法区的JIT代码缓存中,而且JIT编译器在运行时会针对那些频繁被调用的“热点代码”做出深度优化,执行效率高。所以将两者结合起来使用。

问3:JIT编译器执行效率高为什么还需要解释器?

JIT编译器执行效率高只是在编译为本地代码后,执行效率高;但是JIT编译需要一定的执行时间,而这段时间可以充分发挥解释器的作用。从而提高效率以及用户体验度。

;