3

我以为我一直都明白为什么 Java 是可移植的,直到我学习了计算机组织。

这是我从头到尾对 C 程序的解释:

C程序-->编译器-->汇编-->机器码-->ISA-->微架构(计算机如何解释ISA)-->逻辑门-->电路-->设备

编译器必须了解 ISA。此外,程序集和机器代码将根据 ISA 有所不同。

Java 是这样的:(在 JVM 内部):Java 程序 --> 编译器 --> 字节码

字节码是 JVM 的 ISA。

所以,我猜JVM也有它自己的微架构来解释它的ISA(字节码)。

这是准确的吗?

所以整个周期是:(在 JVM 内部)Java 程序 --> 字节码(ISA) --> JVM 微架构 --> 主机硬件

另外,如果微架构是在处理器中实现的,JVM 是否需要使用主机的处理器之一?

4

2 回答 2

2

它更像是(按照你对 C 的分层):

Java program --> Java compiler --> bytecode --> JVM compiler --> assembly 
--> machine code --> ISA --> micro architecture (how the computer interprets ISA)
--> logic gate --> circuit --> device

请注意,基本上有两个编译器。这就是Java实现可移植性的方式。

于 2016-02-18T21:18:24.147 回答
0

首先,java编译器将源代码编译成字节码。在运行时,Java 虚拟机 (JVM) 解释这个字节码并生成机器码,这些机器码将由运行 java 程序的机器直接执行。

访问 JVM、JRE 和 JDK 的好教程https://javatutorialdetails.blogspot.com/2017/10/java-tutorial-in-details-step-by-step.html

于 2017-10-30T16:34:32.560 回答