最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JVM、JRE、JDK之間的聯(lián)系及區(qū)別說(shuō)明

 更新時(shí)間:2026年01月30日 09:41:03   作者:Getgit  
JVM、JRE和JDK是Java開發(fā)中三個(gè)關(guān)鍵組件,JVM是Java虛擬機(jī),負(fù)責(zé)解析和執(zhí)行Java字節(jié)碼,JRE是Java運(yùn)行環(huán)境,包含JVM和Java核心類庫(kù),JDK是Java開發(fā)工具包,包含JRE和編譯工具,它們之間的關(guān)系是:JDK包含了JRE,JRE包含了JVM

JVM (Java Virtual Machine)

JVM(Java虛擬機(jī))是一個(gè)可執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程,用于解析編譯后的字節(jié)碼文件。 JVM屏蔽了與操作系統(tǒng)平臺(tái)相關(guān)的信息,可以把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行,這也是Java的能夠 “一次編譯,到處運(yùn)行” 的原因。

既然JVM是“虛擬機(jī)”的意思,那么肯定要體現(xiàn)出來(lái) : 可以把JVM類比為一臺(tái)只針對(duì)Java程序的PC虛擬機(jī),它通過(guò)實(shí)體計(jì)算機(jī)仿真各種計(jì)算功能來(lái)實(shí)現(xiàn),JVM有自己完善的硬件架構(gòu),如處理器,堆棧,寄存器等,還有相應(yīng)的指令集.

在Java的世界中,JVM的地位就像一臺(tái)PC機(jī)器。JVM和PC物理機(jī)的宏觀關(guān)系是這樣的 :

JVM與物理PC的微觀關(guān)系是這樣的 :

Java世界中JVM與現(xiàn)實(shí)世界中的物理PC之間關(guān)系是這樣的:

注意事項(xiàng):

JVM的核心任務(wù)是解釋字節(jié)碼文件,它不能運(yùn)行字節(jié)碼文件。因?yàn)镴VM執(zhí)行class還需要JRE下的lib類庫(kù)的支持,尤其是rt.jar,這一點(diǎn)非常重要。

JRE (Java Runtime Environment)

光有JVM還不能完成class的執(zhí)行,需要搭配JRE才能正常運(yùn)行程序員打好的jar包。因?yàn)樵诮忉宑lass的時(shí)候JVM需要調(diào)用解釋所需要的類庫(kù)lib,JRE里有運(yùn)行.classjava.exe.

JRE是Java程序的運(yùn)行環(huán)境,它包含JVM的標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫(kù)。需要注意的是 : JRE是Java的運(yùn)行環(huán)境不是開發(fā)環(huán)境。JRE不包含任何開發(fā)工具,如:編譯器、調(diào)試器等,因?yàn)镴RE是面向Java程序(jar包)的,程序只需要運(yùn)行不需要編譯、調(diào)試等功能。如果只需要運(yùn)行一些Java程序,只需要一個(gè)JRE就足夠了,不需要安裝JDK.

在Java的世界中,JRE的地位相當(dāng)于是一臺(tái)PC機(jī)器中的Windows操作系統(tǒng). Windows操作系統(tǒng)可以運(yùn)行.exe格式化的應(yīng)用程序?qū)?yīng)的JRE操作系統(tǒng)用于運(yùn)行.jar格式的應(yīng)用程序。

綜上所述,Java世界中的JRE與現(xiàn)實(shí)世界中的PC操作系統(tǒng)之間關(guān)系是這樣的 :

JDK (Java Development Kit)

JDK是java開發(fā)工具包,它提供了編譯、運(yùn)行Java程序所需的各種工具和資源,包括Java編譯器、Java運(yùn)行時(shí)環(huán)境,以及常用的Java類庫(kù)等。JDK是面向程序員的。

基本上每個(gè)學(xué)java的人都會(huì)先在機(jī)器 上裝一個(gè)JDK,那它都包含哪幾部分呢?

安裝完jdk之后,切換至jdk的安裝根目錄,可以看到幾個(gè)目錄:bin、jre、src.zip、db、lib、include。

  • bin:開發(fā)工具。里面可以看到一些我們很熟悉的工具,jar、java、javac、javadoc、javap、jconsole、jhat、jmap、jstack、jstat。
  • jre:Java運(yùn)行時(shí)環(huán)境。JRE包括Java虛擬機(jī)(JVM),類庫(kù)和其他支持執(zhí)行用Java編程語(yǔ)言編寫的程序的文件(我們開發(fā)過(guò)程中經(jīng)常使用到的核心類庫(kù)就是在/jre/lib下)。
  • src.zip:Java類庫(kù)源代碼。構(gòu)成Java核心API的所有類的Java編程語(yǔ)言源文件,(注意不是JVM源碼)主要是想幫助開發(fā)人員學(xué)習(xí)和使用Java編程語(yǔ)言。
  • db:Oracle分發(fā)的Apache Derby關(guān)系數(shù)據(jù)庫(kù)。
  • lib:其他庫(kù),開發(fā)工具所需的其他類庫(kù)和支持文件,其中就有我們比較熟悉的 dt.jartools.jar。
  • include:支持使用Java Native Interface和Java Virtual Machine(JVM)調(diào)試器接口進(jìn)行本機(jī)代碼編程的C語(yǔ)言頭文件。

既然JDK安裝目錄中是包含JRE的,而JRE中是包含JVM的,所以電腦安裝完JDK后就具備了開發(fā)Java源文件、編譯class字節(jié)碼文件、運(yùn)行jar程序的功能。JDK直接打通了程序員與Java世界的壁壘,這就導(dǎo)致筆者到現(xiàn)在才搞清楚它們?nèi)咧g的關(guān)系,。

JVM、JRE、JDK三者之間的聯(lián)系

綜上所述,三者關(guān)系可以用下面一個(gè)場(chǎng)景來(lái)總結(jié):

程序員借助JDK可以寫好.Java源代碼,然后使用JDK自帶的javac命令將源代碼編譯為.class字節(jié)碼文件,最后使用JDK的jar -cvf命令打包為jar包,到這一步JDK的使命就完成了。

有了jar包之后,下一步就是讓jar跑起來(lái),這一步就該JVM、JRE出場(chǎng)了,使用java -jar運(yùn)行程序。

首先是在JRE上運(yùn)行這些字節(jié)碼,具體到字節(jié)碼執(zhí)行時(shí)就需要JVM解析字節(jié)碼文件,并承擔(dān)將字節(jié)碼命令映射到CPU指令集或OS的系統(tǒng)調(diào)用。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié)

    SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié)

    這篇文章主要介紹了SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)權(quán)限校驗(yàn)的過(guò)程

    SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)權(quán)限校驗(yàn)的過(guò)程

    Spring Security過(guò)濾器鏈中,AuthorizationFilter的authorizationManager是我們要找的組件,該組件的check方法已被棄用,推薦使用authorize方法,最終通過(guò)接口路徑和權(quán)限進(jìn)行校驗(yàn),本文給大家介紹SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)權(quán)限校驗(yàn)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-02-02
  • java包本質(zhì)及命名規(guī)范詳解

    java包本質(zhì)及命名規(guī)范詳解

    這篇文章主要介紹了java包本質(zhì)及命名規(guī)范,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java中String能存儲(chǔ)多少個(gè)字符

    Java中String能存儲(chǔ)多少個(gè)字符

    本文主要介紹了Java中字符串長(zhǎng)度的限制,Java中字符串長(zhǎng)度的限制,
    2026-02-02
  • 新版IDEA使用Spring Initializr創(chuàng)建工程的兩種方法

    新版IDEA使用Spring Initializr創(chuàng)建工程的兩種方法

    這篇文章主要介紹了新版IDEA使用Spring Initializr創(chuàng)建工程(兩種方法,官方工具和IDEA),文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-10-10
  • 實(shí)例講解Java的MyBatis框架對(duì)MySQL中數(shù)據(jù)的關(guān)聯(lián)查詢

    實(shí)例講解Java的MyBatis框架對(duì)MySQL中數(shù)據(jù)的關(guān)聯(lián)查詢

    這里我們來(lái)以實(shí)例講解Java的MyBatis框架對(duì)MySQL中數(shù)據(jù)的關(guān)聯(lián)查詢,包括一對(duì)多、多對(duì)一的關(guān)聯(lián)查詢以及自身關(guān)聯(lián)映射的方法等,需要的朋友可以參考下
    2016-06-06
  • RocketMQ事務(wù)消息原理與使用詳解

    RocketMQ事務(wù)消息原理與使用詳解

    RocketMQ事務(wù)消息(Transactional Message)是指應(yīng)用本地事務(wù)和發(fā)送消息操作可以被定義到全局事務(wù)中,要么同時(shí)成功,要么同時(shí)失敗。RocketMQ的事務(wù)消息提供類似 X/Open XA 的分布式事務(wù)功能,通過(guò)事務(wù)消息能達(dá)到分布式事務(wù)的最終一致
    2023-02-02
  • java實(shí)現(xiàn)電話本系統(tǒng)

    java實(shí)現(xiàn)電話本系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)電話本系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Springboot程序開啟遠(yuǎn)程DEBUG方式

    Springboot程序開啟遠(yuǎn)程DEBUG方式

    本文介紹了SpringBoot程序遠(yuǎn)程debug的原理和步驟,包括在啟動(dòng)時(shí)指定JVM參數(shù)、配置遠(yuǎn)程調(diào)試、注意事項(xiàng)等,同時(shí)提供了配置本地和遠(yuǎn)程調(diào)試的方法和示例,需要注意避免生產(chǎn)環(huán)境中開啟遠(yuǎn)程debug,保護(hù)調(diào)試信息的安全性和一致性,限制調(diào)試范圍,避免資源占用問(wèn)題
    2026-05-05

最新評(píng)論

潜江市| 定南县| 博爱县| 定南县| 东丽区| 社旗县| 郎溪县| 绍兴县| 桑植县| 汾阳市| 扎赉特旗| 曲周县| 抚州市| 汕头市| 石门县| 洛隆县| 洪泽县| 山东省| 屏南县| 高碑店市| 屏东市| 交城县| 洛浦县| 贡觉县| 临海市| 霍城县| 卫辉市| 海兴县| 交城县| 宿迁市| 瓮安县| 西充县| 叙永县| 南召县| 开封市| 顺义区| 河曲县| 许昌市| 建德市| 黔南| 二连浩特市|