java語言為什麽具有平臺無性
阿新 • • 發佈:2018-09-29
under 機器 tro ++ bytecode 分配 固定 操作 驗證
首先解釋一下什麽叫做平臺無關性:平臺無關性即對每種數據類型在不同的操作系統中都分配固定長度,例如,int類型數據總是占據32個位(4個字節),而C/C++卻不然。
知道了平臺無關性後下面我們簡單說一下java為什麽能夠"Write Once,Run Anywhere"如下是java程序運行的過程:
-
編譯
將Java代碼翻譯成Java字節碼。 -
Java編譯器
將Java源文件(.java)翻譯成Java字節碼文件(.class )。
javac Welcome.java
//將Java源代碼翻譯成Java字節碼,並且生成.class文件
java Welcome
//運行字節碼 -
JVM java虛擬機
解釋Java字節符的程序。不是物理機器。
所以Java字節碼可以在不同的硬件平臺和操作系統上運行,只要安裝了JVM(不同的操作系統對應不同的jvm)。 -
類加載器(class loader)
將類的字節碼加載到內存中的程序。
在執行一個Java程序時,JVM首先會用一個稱為類加載器的程序將類的字節碼加載到內存中。如果程序中使用了其他類,類加載程序會在需要它們之前動態地加載他們。當加載該類後,JVM使用一個成為字節碼驗證器(bytecode verifier)的程序來檢驗字節碼的合法性,確保字節碼不會違反Java的安全規範 - 總的來說:每個操作系統對應的JVM會自動去彌補java程序在不同操作系統之間的“差異”,以達到“一致性”。
java語言為什麽具有平臺無性