Java有句非常有名的口號——“一次編寫,到處執行”,依靠的就是JVM提供的平臺獨立性,本質上來講,就是透過虛擬機器技術,透過限制一些功能,達到遮蔽底層細節的目的。更具體得說,Java的平臺獨立性體現在兩個方面:體系結構無關、可移植。
體系結構無關
JVM裡設計了一套位元組碼指令系統,這套指令系統跟特定的體系結構沒有關係。精心設計的位元組碼不僅可以在各個機器上執行,還可以迅速得翻譯成本地機器的程式碼。解釋位元組碼執行肯定比先編譯後執行慢得多,因此虛擬機器提供了即時編譯子系統,用於將使用最頻繁的位元組碼翻譯成本地指令,這個策略十分有效。
可移植
-
與C和C++不同,Java規範中沒有“依賴具體實現”的地方,基本資料型別的大小以及有關的演演算法都做了明確的定義。例如:在Java中int永遠為32位整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。
-
作為系統組成部分的類庫,定義了可移植的介面。例如:一個抽象的Window類給出了在UNIX、Windows和Mac OS環境不同的實現;檔案路徑分隔符——File.separator,針對不同的檔案系統也有不同的實現。