java如何使用Compiler

时间:2017-07-29 02:11:08

标签: java compiler-construction interpreter jit

我研究了在不同处理器架构上执行Java的地方。如果它将使用编译器,那么将存在一些(机器代码)指令,这些指令将特定于处理器架构并且Java将取决于平台。 但由于java使用解释器,因此它独立于处理器架构。

我的问题是java如何使用JIT(Just In Time)编译器?处理器的体系结构不会影响它吗?如果它没有影响它,那么为什么它不会影响它?

3 个答案:

答案 0 :(得分:5)

不只有一个JIT编译器。每个架构都有一个不同的架构,因此有一个用于Windows 32位,一个用于Windows 64位等。

您的Java代码在所有平台上都是相同的。它由Java编译器编译成字节代码。所有平台的字节代码也相同。

现在我们在Windows 32位上运行您的Java程序。 JVM启动并解释字节代码并将其转换为该体系结构的机器代码。请注意,该JVM专门用于此体系结构。

如果我们在另一个体系结构上运行您的程序,JVM的另一个变体将用于解释字节代码。

这就是您下载JRE时看到所有这些不同下载链接的原因:

enter image description here

答案 1 :(得分:1)

您的Java代码被解释为字节代码,并且不依赖于平台。但是要运行机器代码,您需要一个JVM,JVM依赖于平台,您无法下载x86 JVM并在ARM处理器上运行它,反之亦然。

这个想法是JVM是依赖于平台的,但你的代码不是。

答案 2 :(得分:1)

java程序生命周期如下。 源代码编译到Java Byte Code(又名.class文件), 然后,JVM会对Java字节代码进行解释,它会执行您的特定处理器体系结构可以理解的即时编译发送指令。

重要的是要理解编译只是说“翻译”的另一种方式,并不总是意味着编译为二进制。此外,解释是类似的,但是根据程序的需要按照指令完成。

但更具体地说,在您的问题中, JIT是由JVM完成的解释,它专门针对每个处理器架构进行编码。

相关问题