解答JVM、JDK、JRE是什么?


JVM理解

JVM全稱就叫java虛擬機是運行java字節碼的一個東西(虛擬機),JVM針對不同的操作系統會有不用的特定實現(Windows,Linux,macOS),目的是為了將相同的字節碼在不同的平台上面解釋出相同的結果。所以,java的跨平台特性離不開JVM的支持!!!

“字節碼”又是什么?

在java中,JVM可以識別的代碼就是字節碼,它也就是我們經常見到的以“.class”為擴展名的文件。它不面向任何特定的機器或者平台,只單純的面向虛擬機。java通過字節碼的方式,從一定程度上解決了傳統解釋性語言效率低的問題,並且還保持了解釋性語言可移植的特點。


在.class文件這一步JVM類加載器首先加載字節碼文件,然后通過解釋器逐行解釋執行,這樣一來執行的速度就會比較慢。有的時候一個程序中有些方法和代碼塊需要被經常調用,所以后面也就引入了JIT編譯器,也就是“運行時編譯器”,當JIT編譯器第一次編譯后,會將字節碼對應的機器碼記錄下來,下次可以直接使用,而機器碼的運行效率是高於java解釋器的(原因有興趣的話可以自行百度)。

總結:
Java虛擬機(JVM)是運行 Java 字節碼的虛擬機。JVM有針對不同系統的特定實現(Windows,Linux,macOS),目的是使用相同的字節碼,它們都會給出相同的結果。字節碼和不同系統的 JVM 實現是 Java 語言“一次編譯,隨處可以運行”的關鍵所在

JRE和JDK理解

為什么會直接將JRE和JDK放在一起寫,學過java的小伙伴應該也是知道的,JDK中是包含有JRE的。

簡單套用一下搜索引擎中的解釋:
JDK是Java Development Kit,它是功能齊全的Java SDK。它擁有JRE所擁有的一切,還有編譯器(javac)和工具(如javadoc和jdb)。它能夠創建和編譯程序。

JRE 是 Java運行時環境。它是運行已編譯 Java 程序所需的所有內容的集合,包括 Java虛擬機(JVM),Java類庫,java命令和其他的一些基礎構件。但是,它不能用於創建新程序。

你知道嗎?JDK有兩種版本,OpenJDK和OracleJDK。

對於Java 7,沒什么關鍵的地方。OpenJDK項目主要基於Sun捐贈的HotSpot源代碼。此外,OpenJDK被選為Java 7的參考實現,由Oracle工程師維護。
這類知識作為小彩蛋來看就好,不用過於深究。


*本文涉及內容為小編自己從網上學習后的記錄。如果有錯請勿噴,可以聯系我討論,本文不作為商業用途,轉載請注明出處。*


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM