2016-02-18 48 views
3

我以为我一直都明白为什么Java是可移植的,直到我拿走计算机组织。JVM如何考虑计算机组织?

这是我的一个C程序的解释从开始到结束:

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

编译器必须知道ISA。另外,汇编和机器代码将根据ISA而有所不同。

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

字节码是ISA对于JVM。

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

这是准确的吗?

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

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

回答

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如何实现可移植性。

+0

访问很好的教程,但不汇编和机器语言每基于ISA机有什么不同? – jinan

+2

@jinan是的,JVM也是如此。 JVM针对不同的硬件/操作系统有不同的实现,并且每种实现都转换为平台的适当本地语言。 – manouti