JDK,JRE和JVM之間的區(qū)別

你是無意穿堂風(fēng) 偏偏孤倨引山洪

基本區(qū)別:

JVM


JVM(Java虛擬機)是一個抽象機器。它是一個提供可以執(zhí)行Java字節(jié)碼的運行時環(huán)境的規(guī)范。

JVM可用于許多硬件和軟件平臺。JVM,JRE和JDK是平臺相關(guān)的,因為每個OS的配置不同。 但是,Java是平臺無關(guān)的。

JVM執(zhí)行以下主要任務(wù):

  • 加載代碼
  • 驗證代碼
  • 執(zhí)行代碼
  • 提供運行時環(huán)境

JRE


JRE是Java Runtime Environment的縮寫。它用于提供運行時環(huán)境。它是JVM的實現(xiàn)。它是實際存在的。它包含一組庫和JVM在運行時使用的其他文件。
Sun Micro Systems以外的其他公司也積極發(fā)布JVM的實施(實現(xiàn))。

JRE

JDK


JDK是Java Development Kit的縮寫,它是實際上存在的。它包含JRE+開發(fā)工具。如下圖所示:

JDK

Java虛擬機內(nèi)部體系結(jié)構(gòu)

什么是JVM?


JVM(Java虛擬機)是:

  • 指定Java虛擬機的工作的規(guī)范。 但實現(xiàn)提供程序是獨立的選擇算法。 其實現(xiàn)是由Sun和其他公司提供。
  • 它的實現(xiàn)被稱為JRE(Java運行時環(huán)境)。
  • 運行時實例只要在命令提示符上編寫java命令來運行java類,就會創(chuàng)建JVM的實例。

JVM(Java虛擬機)能做什么?


JVM執(zhí)行以下操作:

  • 加載代碼
  • 驗證代碼
  • 執(zhí)行代碼
  • 提供運行時環(huán)境

JVM提供了以下定義:

  • 內(nèi)存區(qū)
  • 類文件格式
  • 寄存器集合
  • 垃圾收集堆
  • 致命錯誤報告等

JVM(Java虛擬機)內(nèi)部體系結(jié)構(gòu)


下面來了解JVM的內(nèi)部架構(gòu)。它包含類加載器,內(nèi)存區(qū)域,執(zhí)行引擎等。

JVM(Java虛擬機)內(nèi)部體系結(jié)構(gòu)

1) 類加載器
Classloader 是JVM的一個子系統(tǒng),用于加載類文件。

2) 類(方法)區(qū)域
類(方法)區(qū)域存儲每個類結(jié)構(gòu),例如運行時常量池,字段和方法數(shù)據(jù),方法的代碼。

3) 堆
它是分配對象的運行時數(shù)據(jù)區(qū)。

4) 堆棧
Java堆棧存儲幀。它保存局部變量和部分結(jié)果,并在方法調(diào)用和返回中起作用。
每個線程都有一個私有JVM堆棧,同時創(chuàng)建線程。每次調(diào)用方法時都會創(chuàng)建一個新的框架。 框架在其方法調(diào)用完成時被銷毀。

5) 程序計數(shù)器寄存器
PC(程序計數(shù)器)寄存器。 它包含當(dāng)前正在執(zhí)行的Java虛擬機指令的地址。

6) 本地方法堆棧
它包含應(yīng)用程序中使用的所有本地方法。

7) 執(zhí)行引擎
執(zhí)行引擎包含:

  • 虛擬處理器
  • 解釋器:讀取字節(jié)碼流,然后執(zhí)行指令。
  • 即時(JIT)編譯器:它用于提高性能,JIT編譯的同時有類似字節(jié)代碼部分的功能,從而減少編譯所需的時間。編譯器是指從Java虛擬機(JVM)的指令集到特定CPU的指令集的轉(zhuǎn)換器。

世界上所有的追求都是因為熱愛
一枚愛詩詞 愛生活 愛分享的IT信徒
— hongXkeX

最后編輯于
?著作權(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)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理,因此不免有一些不準(zhǔn)確的地方,同時不同JDK版本的...
    高廣超閱讀 16,051評論 3 83
  • 前言 寫這篇文章的目的: 總結(jié)所學(xué)的 JVM 知識 幫助想了解 JVM 的朋友,知無不言,言無不盡 本篇文章將會介...
    SavySoda閱讀 5,227評論 11 105
  • 久負(fù)盛名的“一蘭拉面”入駐紐約了。。。聽說要排隊一個半小時。。。朋友圈吃過的都不是平價很高。。。我這個人老心不老的...
    安安媽咪211閱讀 341評論 2 1
  • 丈母娘要來上海了,今天都是在家收拾些東西,聽廣播,看看視頻。 下午的時候主要考慮創(chuàng)夢的offer的事情,Jeffr...
    GrandFarmer閱讀 173評論 0 0

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