Java代码是如何运行的

作为一名Java程序员,都知道Java代码是运行在这Java虚拟机上面的。

在这里,我们思考两个问题,为什么Java代码要运行在Java虚拟机上面,

而Java虚拟机又是如何执行Java字节码的?

为什么Java代码要运行在Java虚拟机上面

这么做的意义在于,一旦一个程序被转换成Java 字节码,那么它便可以在不同平台上的虚拟机实现里运行。这也就是我们经常说的“一次编写,到处运行”。

Java虚拟机又是如何执行Java字节码的?

从虚拟机视角来看,执行 Java 代码首先需要将它编译而成的 class 文件加载到Java 虚拟机中。加载后的Java 类会被存放于方法区Method Area)中。实际运行时,虚拟机会执行方法区内的代码。

从硬件视角来看,Java 字节码无法直接执行。因此,Java 虚拟机需要将字节码翻译成机器码。
HotSpot 里面,上述翻译过程有两种形式:第一种是解释执行,即逐条将字节码翻译成机器码并执行;第二种是即时编译Just-In-Time compilation,JIT),即将一个方法中包含的所有字节码编译成机器码后再执行。

前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。

来源:极客时间

你可能感兴趣的:(Java代码是如何运行的)