1. 程式人生 > 其它 >你知道為什麼Java需要虛擬機器嗎?

你知道為什麼Java需要虛擬機器嗎?

曾幾何時,當我們第一次瞭解Hello world時,我們怎麼知道在執行程式碼時,一種神奇的語言Java並沒有直接將我們編寫的Java程式碼交付到作業系統的底部進行解析和編譯,而是使用JDK編譯Java程式碼,編譯成dotclass檔案,然後將dotclass檔案傳輸到JRE。(dotclass實際上是.Class)

JRE是Java執行時環境,因為Java有一個祕密武器,那就是JVM!JVM是JRE的一個重要核心。可以說,JVM是JRE的靈魂,控制身體,執行程式碼的藝術。JRE包含JVM呼叫所需的幾乎所有類庫。可以說JVM是JRE的驅動程式,是整個JDK的驅動程式,也是整個java的驅動程式!

你好,我是人生啟用碼。今天,讓我們簡單地談談為什麼Java需要JVM。今天的話題非常大,但限於篇幅,我們只是簡單地談談!

一、快速理解JVM

JVM是Java虛擬機器,也就是Java虛擬機器的意思。基本上,“虛擬”這個詞也可以看出,如果你想在作業系統上實現許多功能,你需要一個具有完整架構和強大執行力的執行標準!這有點像“作業系統”嗎?JVM實際上是一種Java指令執行規範,它構成了JVM。當我們學習java時,我們都知道有JDK和JRE。當我們深入研究的時候,我們會發現,也有JVM的仙女。。。

讓我們先澄清一下這些事情之間的關係:

讓我先給出答案:JDK包含JRE,JRE包含JVM。

我們都知道JDK是一個java開發工具包,也稱為toolkit,因為它的主要功能是為JVM提供額外的類庫工具,例如用於編譯java檔案的javac二進位制程式,這些程式儲存在bin目錄中。很多程式都安裝了bin目錄,這不是很奇怪嗎?因為這個bin的意思是binary,它是binary的縮寫,也就是二進位制檔案的目錄。

除了javac,類似的小工具還包括Java(bin目錄中的.Exe二進位制檔案)、jar和其他檔案。好的,那麼JRE呢?JRE為Java程式提供了一個執行環境。有了JRE,我們的Java程式可以在瀏覽器中執行。為什麼是JRE?由於我們的JVM,我們都知道Java只需編譯一次,就可以在任何地方執行。這是怎麼回事?

這實際上是JRE的功勞。我們的JRE中文版不是Java執行時環境嗎?是的,我們知道Java在JVM中執行。Java執行時環境不是JVM的執行時環境嗎?俗話說,聰明的女人沒有稻草就做不了磚。JVM不可能單獨執行所有Java程式。它還需要一些用底層C語言編寫的類庫。此時,JRE的重要性顯而易見。JRE為JVM提供了幾乎所有的依賴類庫。這樣,它真的實現了一次性編譯,到處執行!

JVM可以執行Java程式。它是否直接執行java檔案?不,正如我們所說,Java和作業系統之間沒有直接的聯絡,Java檔案被交給作業系統進行處理,但Java檔案是從javac二進位制檔案類檔案(也稱為位元組碼檔案)編譯而來的。位元組碼檔案是否直接執行到作業系統?不,讓我們看看普通程式和Java程式執行之間的區別:

二、Java程式的載入過程

這是什麼意思?這意味著作業系統不知道位元組碼檔案。位元組碼檔案還需要通過JVM載入到機器程式碼中,即操作碼操作程式碼(目前還不是全部),它被翻譯成機器程式碼,即作業系統返回執行Java程式之前可以理解的語言。這是什麼,這實際上有點像我們通常所說的黑盒測試。我們看不到整個過程。我們只能看到我們編寫的Java規範程式碼是由作業系統執行的!

我們說,在JVM識別字節碼檔案後,它將位元組碼指令翻譯成作業系統,從而控制作業系統執行相應的功能。因此,當談到翻譯時,我們必須簡要介紹JVM翻譯位元組碼檔案的方式和方法。JVM有兩種常見的方法來翻譯位元組碼。一種是即時載入方法,一種是解釋和執行。解釋執行是將位元組碼檔案中的操作碼和運算元轉換為操作指令,即機器碼。即時載入是在特定情況下觸發的。它是在位元組碼轉換成機器碼後執行的。如果你想知道位元組碼檔案包含什麼,當我通過JVM時,我會新增你的朋友,我會與你自由交談!儘管它將不得不等到年底