【深入詳解】核心機制之Java跨平臺原理

Java是一門跨平臺語言,所謂跨平臺就是,Java源文件會被編譯成為字節(jié)碼文件,不管是Windows,Linux還是Mac,都有其適配的JVM,也就是字節(jié)碼文件可以隨意在這些JVM上去運行。

  • 接下來我們來講Java跨平臺原理,博主都會根據(jù)Java學習路線分享技術(shù)知識,感興趣可以私信哦~

Write once,run anywhere.

  • 其他的語言,例如c語言,編譯成為機器碼之后,由于底層的機器語言支持不一樣,編譯后的機器語言文件是不可以跨操作系統(tǒng)運行的。而Java則是把兼容的工作,交給了JVM。不同的JVM負責去適配不同的操作系統(tǒng)。

  • 所有的Java虛擬機都遵守java虛擬機的規(guī)范,語言編寫者不需要考慮兼容問題。


    image.png
  • Java虛擬機是Java平臺的基石。 它是技術(shù)的組成部分,負責硬件和操作系統(tǒng)的獨立性,已編譯代碼的小尺寸以及保護用戶免受惡意程序攻擊的能力。

  • Java虛擬機是抽象的計算機。 像真正的計算機一樣,它具有指令集并在運行時操作各種內(nèi)存區(qū)域。 使用虛擬機實現(xiàn)編程語言是相當普遍的。 最知名的虛擬機可能是UCSD Pascal的P代碼計算機。

JVM 跨語言怎么理解?

  • JVM是跨語言的平臺,很多語言都可以編譯成為遵守規(guī)范的字節(jié)碼,這些字節(jié)碼都可以在Java虛擬機上運行。Java虛擬機不關(guān)心這個字節(jié)碼是不是來自于Java程序,只需要各個語言提供自己的編譯器,字節(jié)碼遵循字節(jié)碼規(guī)范,比如字節(jié)碼的開頭是CAFEBABY。


    image.png
  • 將各種語言編譯成為字節(jié)碼文件的編譯器,稱之為前端編譯器。而Java虛擬機中,也有編譯器,比如即時編譯器,此處稱為后端編譯器。
  • Java虛擬機要做到跨語言,目前來看應(yīng)該是當下最強大的虛擬機。但是并非一開始設(shè)計要跨語言。
    跨語言的平臺有利于什么?
  • 由于有了跨語言平臺,多語言混合編程就更加方便了,通過特定領(lǐng)域的語言去解決特定領(lǐng)域的問題。
  • 比如并行處理使用Clojure語言編寫,展示層使用JRuby/Rails,中間層用Java編寫,每一應(yīng)用層都可以使用不同的語言編寫,接口對于開發(fā)者是透明的。不同語言可以相互調(diào)用,就像是調(diào)用自己語言原生的API一樣。它們都運行在同一個虛擬機上。

何為字節(jié)碼?

  • 字節(jié)碼狹義上是java語言編譯而成,但是由于JVM是支持多種語言編譯的字節(jié)碼的,而字節(jié)碼都是一個標準規(guī)范,因為我們應(yīng)該稱其為JVM字節(jié)碼。
  • 不同的編譯器,可以編譯出相同的字節(jié)碼文件,字節(jié)碼文件也可以在不同操作系統(tǒng)上的不同JVM中運行。
  • 因此,Java虛擬機實際上和Java語言并非強制關(guān)聯(lián)的關(guān)系,虛擬機只和二級制文件(Class文件)強關(guān)聯(lián)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容