都說java是跨平臺的,但為什么是跨平臺呢,.我稍微解釋一下。
java語言編寫的程序要先經過編譯的,但這個編譯不是生成特定平臺的機器碼,而是生成一種與平臺無關的字節碼。
java語言里負責解釋執行字節碼文件的是Java虛擬機(Java Virtual Machine)。JVM是運行字節碼文件的虛擬計算機。所有平臺上的JVM向編譯器提供相同的編程接口,而編譯器只需面向虛擬機,生成虛擬機能理解的字節碼,然后由虛擬機解釋執行。之所以說Java跨平臺是因為字節碼與平臺無關,但不同平臺的JVM是不同的,但它們向編譯器生成的Java字節碼程序都提供了相同的接口,但它們適應不同的平臺的接口不同。JVM是Java跨平臺的關鍵,只要為不同平臺實現了相應的虛擬機,那編譯生成的相同的字節碼文件就可以被解釋后執行了。相同的字節碼在不同的平臺上是不能直接運行的,要通過JVM這個轉換器來解釋執行。
總結:Java跨平臺,原因是相同的字節碼文件在不同的平臺上的不同的Java虛擬機解釋執行的,沒有虛擬機,就只好“呵呵”了。