因為不同平臺可以安裝對應的JVM(Java Virtual Machine),它是C/ C++寫的,JVM可以屏蔽所有和平臺相關的信息,并幫助把Java文件經過編譯后生成的和平臺無關的class類文件(也就是字節(jié)碼)從硬盤讀取到內存中,并轉換為機器碼執(zhí)行。
總結:一個就是JVM,一個就是生成的運行類文件和平臺無關。所以可以拿著這些文件在不同平臺執(zhí)行。
Python、PHP同理。
C/C++需要根據不同的平臺和操作系統(tǒng)選擇不同的編譯器和庫文件,編譯后生成的可執(zhí)行文件不同平臺是不一樣的,格式如可執(zhí)行文件名都不一樣,內容也不一樣,它中間從編譯——匯編——鏈接,匯編語言和鏈接都與平臺有關,所以不能跨平臺。Java生成的不是可執(zhí)行文件而是中間件的類文件,需要在JVM中進一步編譯成機器語言才能執(zhí)行,中間件和平臺無關。
JVM一般不需要獨立安裝,安裝JRE(Java Runtime Environment)的時候就會帶上,JRE其實也可以不用獨立安裝,安裝JDK(Java Development Kit)的會帶上。文章來源:http://www.zghlxwxcb.cn/news/detail-733658.html
相比C/ C++,Java需要先轉為字節(jié)碼,所以效率相對較低,但已經越來越接近原生機器碼的水平了。另外,像Groovy 、Kotlin、Scala 等等語言也是編譯成字節(jié)碼,所以他們也能在jvm上運行,可見jvm的強大!文章來源地址http://www.zghlxwxcb.cn/news/detail-733658.html
到了這里,關于java可以跨平臺的原因是什么?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!