国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網站運營 > JVM基礎系列第3講:到底什么是虛擬機?

JVM基礎系列第3講:到底什么是虛擬機?

時間:2023-07-01 13:03:02 | 來源:網站運營

時間:2023-07-01 13:03:02 來源:網站運營

JVM基礎系列第3講:到底什么是虛擬機?:我們都知道在 Windows 系統(tǒng)上一個軟件包裝包是 exe 后綴的,而這個軟件包在蘋果的 Mac OSX 系統(tǒng)上是無法安裝的。類似地,Mac OSX 系統(tǒng)上軟件安裝包則是 dmg 后綴,同樣無法在 Windows 系統(tǒng)上安裝。

為什么不同系統(tǒng)上的軟件無法安裝,這是因為操作系統(tǒng)底層的實現(xiàn)是不一樣的。對于 Windows 系統(tǒng)來說,exe 后綴的軟件代碼最終編譯成 Windows 系統(tǒng)能識別的機器碼。而 Mac OSX 系統(tǒng)來說,dmg 后綴的軟件代碼最終編譯成 Mac OSX 系統(tǒng)能識別的代碼。

系統(tǒng)軟件無法通用是一個常見的問題。但使用過 Java 的同學都知道,Java 代碼可以在服務端(Linux 系統(tǒng))運行,也可以在 Windows 系統(tǒng)運行,但我們并沒有生成多份不同的代碼。所以 Java 語言是如何做到的呢?

與其他語言不同,Java 語言并不直接將代碼編譯成與系統(tǒng)有關的機器碼,而是編譯成一種特定的語言規(guī)范,這種語言規(guī)范我們稱之為字節(jié)碼。無論 Java 程序要在 Windows 系統(tǒng),還是 Mac OSX 系統(tǒng),抑或是 Linux 系統(tǒng),它首先都得編譯成字節(jié)碼文件,之后才能運行。

但即使編譯成字節(jié)碼文件了,各個系統(tǒng)還是無法明白字節(jié)碼文件的內容,這時候就需要 Java 虛擬機的幫助了。Java 虛擬機會解析字節(jié)碼文件的內容,并將其翻譯為各操作系統(tǒng)能理解的機器碼。

簡單地說,對于同樣一份 Java 源碼文件,我們編譯成字節(jié)碼之后,無論是 Linux 系統(tǒng)還是 Windows 系統(tǒng)都不認識。這時候 Java 虛擬機就是一個翻譯官,在 Linux 系統(tǒng)上翻譯成 Linux 機器碼給 Linux 系統(tǒng)聽,在 Windows 系統(tǒng)上翻譯成 Windows 機器碼給 Windows 系統(tǒng)聽。這樣一來,Java 就實現(xiàn)了「Write Once,Run Anywhere」的偉大愿景了。

在 Java 虛擬機還沒出現(xiàn)之前,為了支持軟件在不同系統(tǒng)上運行,我們必須在多個平臺寫多份代碼,分別對應特定的系統(tǒng)。但 Java 虛擬機出現(xiàn)之后,你只需要按照特定規(guī)范編譯書寫,編譯器編譯成字節(jié)碼文件后,虛擬機會幫你將字節(jié)碼生成對應的 Windows Code 和 Mac Code。本質上最終還是會生成 Windows Code 和 Mac Code 兩份機器代碼,但對于開發(fā)人員來說,卻只需要寫一次代碼了。Java 虛擬機幫開發(fā)人員承擔了重復的工作,讓開發(fā)效率更高了。

很多初學者關于 Java 虛擬機有一個誤區(qū),他們會覺得 Java 虛擬機只能運行 Java 代碼。*但實際上 Java 虛擬機運行的是字節(jié)碼文件。*換句話說,如果你用 php 語言寫一段代碼,并自己用特定編譯器能生成符合字節(jié)碼規(guī)范的字節(jié)碼文件,那么 Java 虛擬機也是可以運行的。

所以雖然名字是 Java 虛擬機,但 Java 虛擬機與 Java 語言沒有直接關系,它只按照 Java 虛擬機規(guī)范去讀取 Class 文件,并按照規(guī)定去解析、執(zhí)行字節(jié)碼指令,僅此而已。

如果你夠牛逼,你完全可以寫一個編譯器,將 PHP 語言代碼編譯成符合 Java 虛擬機規(guī)范的字節(jié)碼文件,那么 Java 虛擬機也是可以執(zhí)行的。

準確地說,Java 虛擬機與字節(jié)碼文件(Class文件)綁定。

最后,讓我們回顧一下,到底什么是虛擬機?其實 Java 虛擬機就是一個字節(jié)碼翻譯器,它將字節(jié)碼文件翻譯成各個系統(tǒng)對應的機器碼,確保字節(jié)碼文件能在各個系統(tǒng)正確運行。

參考資料


一個人可以走得更快,但一群人可以走得更遠。歡迎加入博主的讀者交流群,獲取入群二維碼請關注「架構師指南」回復「入群交流」獲取。群里有來自北上廣深的技術朋友,我們一同探討軟件開發(fā)的職業(yè)發(fā)展、日常生活、技術思維等。


JVM基礎系列文章目錄

關鍵詞:虛擬,基礎,系列

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉