java如何使用编译器

java如何使用编译器

问题描述:

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

我的问题是如何在Java应用JIT(准时)编译器?处理器的架构不会影响它吗?如果它不影响它,那为什么不影响它呢?

+0

我认为首先你需要了解JIT的工作原理。请参阅此https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.win.80.doc/diag/understanding/jit_overview.html – bigbounty

+0

@bigbounty感谢您访问我已访问过的链接它也早一点。我已经阅读并理解jit的工作原理。我认为你有问题了解我的问题。 –

+0

JIT在执行过程中根据需要编译代码。然而,即时方法仍然可以显着提升性能。即使将动态编译应用于字节码,便携性和安全性仍然适用,因为运行时系统(执行编译)仍负责执行环境。 – Tehmina

不只有一个JIT编译器。有一个不同的每一个建筑,所以有一个用于Windows 32位,一个用于Windows 64位等

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

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

如果我们在其他架构上运行您的程序,JVM的另一种变体将被用来解释字节码。

这就是为什么你看到所有这些不同的下载链接,当你下载的JRE:

enter image description here

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

的想法是,在JVM与平台相关,但你的代码是没有的。

+0

我已经问过与处理器架构有关的问题,而不是操作系统。 –

+0

你是对的,但同样的原则适用。我已经更新了答案。 – ssc327

+0

@RakeshYadav答案是一样的。这是一个很好的答案。 JIT编译发生在JVM内部,JVM专用于执行环境。该环境包括处理器和操作系统。 – Gene

Java程序的生命周期去如下。 源代码编译 Java字节码(又名.class文件), Java字节码是那么由执行即时编译发送指令特定的处理器架构可以了解JVM解释

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

但更具体的在你的问题,JIT是由JVM,这是每一个处理器架构专门进行编码的解释。