亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中虛擬機jvm原理是什么

發布時間:2021-11-23 13:39:27 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關java中虛擬機jvm原理是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

曾幾何時,我們還是初識Hello World的時候,我們哪曾知道,Java這門神奇的語言,在執行我們的代碼的時候,不是直接將我們所編寫的Java代碼交付給操作系統底層進行解析編譯,而是采用了JDK來對Java代碼進行編譯,編譯成dotClass文件后,將dotClass文件轉交至JRE中。(dotClass其實就是.class)

java中虛擬機jvm原理是什么

jre也就是JavaRunTimeEnvironment,java運行環境,因為在這里,存在著Java的秘密武器,也就是JVM!Jvm是組成JRE的重要核心,可以說,JVM是JRE的靈魂,控制著軀殼執行著代碼的藝術。JRE中包含著Jvm調用所需要的幾乎所有類庫,可以這么說,jvm是jre的驅動,也是整個JDK的驅動,更是整個Java的驅動!

大家好,我是fntp,今天我們來簡單聊一聊為什么Java需要JVM,今天的話題很大,但是限制于篇幅我們只是簡單的聊一聊!

JVM的快速理解

JVM 是Java 虛擬機,即Java Virtual Machine的意思,“虛擬”這兩個字,基本上也可以看出,要想在操作系統上實現眾多的功能,是需要一個架構完整,執行力很強的執行標準!這是不是有點類似于“操作系統”?JVM,實則就是一個Java指令執行規范,正是這一標準構成了JVM。我們學Java的時候我們都知道有JDK,JRE,當我們學的深入的時候,我們又會發現,還有JVM這號神仙。。。

我們先捋清楚這些東西之間的關系:
我先給出答案:JDK是包含JRE的,JRE是包含JVM的。

java中虛擬機jvm原理是什么

JDK我們都知道是java開發工具包,正所謂工具包,也是因為他的主要作用是為jvm提供了額外的類庫工具,比如編譯Java文件的javac二進制程序,這些都是存儲在bin目錄下,是不是很奇怪,為什么很多程序安裝的時候都帶有一個bin目錄?因為這個bin是binary的意思,是binary的簡寫bin,也就是二進制文件的目錄。

java中虛擬機jvm原理是什么

類似的小工具除了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提供了幾乎所有的依賴類庫,這樣一來,就真正實現了一次編譯到處運行!

java中虛擬機jvm原理是什么

jvm能執行java程序,是直接執行java文件嗎?不是,我們說過,Java與操作系統之間不是直接將.java文件轉交給操作系統處理的,而是將.java文件通過javac二進制文件編譯成.class文件,也稱之為字節碼文件,字節碼文件直接給操作系統執行嗎?并不是,我們來看看普通程序與Java程序執行區別在哪里:

java中虛擬機jvm原理是什么

而Java程序的加載過程:

java中虛擬機jvm原理是什么

什么意思,意思就是告訴你,字節碼文件操作系統也是不認識的,字節碼文件還需要經過jvm加載為機器碼,也就是Opcode操作碼(暫時這么理解因為不全是),翻譯成機器碼也就是操作系統能看得懂的語言后,操作系統才回去執行這個java程序,這是什么,這其實有點像我們常說的黑盒測試,整個流程我們是看不見的,我們只能看見我們編寫的java規范編碼被操作系統執行了!

java中虛擬機jvm原理是什么

我們說,jvm識別字節碼文件后,翻譯了字節碼指令,翻譯給操作系統,從而控制操作系統去執行相應的功能,所以,提及翻譯,就不得不簡單說一下JVM的翻譯字節碼文件的方式方法了,jvm翻譯字節碼常見的有兩種不同的方式,一種是即時加載方法,一種是解釋執行。解釋執行是將字節碼文件中的opcode與操作數翻譯成op指令也就是機器代碼,而即時加載是在特定情況下才會觸發,將字節碼翻譯成機器碼后執行。

關于“java中虛擬機jvm原理是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台前县| 淮滨县| 佛坪县| 大邑县| 东城区| 汶上县| 和顺县| 滕州市| 咸宁市| 绥芬河市| 无为县| 西乌珠穆沁旗| 榕江县| 阿瓦提县| 姚安县| 延津县| 宜城市| 收藏| 中江县| 烟台市| 丁青县| 大连市| 建阳市| 玉树县| 乾安县| 天门市| 荥经县| 陵水| 正蓝旗| 万源市| 三都| 项城市| 南乐县| 利津县| 青田县| 琼海市| 即墨市| 龙州县| 容城县| 靖宇县| 子长县|