2016-02-18 49 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