国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【秒懂JDK,JRE,JVM的關(guān)系】

這篇具有很好參考價(jià)值的文章主要介紹了【秒懂JDK,JRE,JVM的關(guān)系】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

???作者:@TheMythWS.

??座右銘:不走心的努力都是在敷衍自己,讓自己所做的選擇,熠熠發(fā)光。?

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理?

JDK與JRE與JVM的關(guān)系

先用一張圖來(lái)直觀感受JDK JRE JVM之間的關(guān)系

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

JDK與JRE的關(guān)系??

先說(shuō)JDK和JRE:
首先從概念上理解一下吧,JDK(Java Development Kit)簡(jiǎn)單理解就是Java開發(fā)工具包,JRE(Java Runtime Enviroment)是Java的運(yùn)行環(huán)境,JVM( java virtual machine)也就是常常聽到Java虛擬機(jī)。

JDK是面向開發(fā)者的,JRE是面向使用JAVA程序的用戶

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理?

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理?

通過(guò)上圖發(fā)現(xiàn)發(fā)現(xiàn)有兩個(gè)JRE文件夾,如果細(xì)看里面的內(nèi)容基本上是一樣的,如果是只是Java程序使用者,那么只會(huì)有最外層的那個(gè)JRE目錄,JDK中是JRE自帶的,你如果安裝了JDK必然里面會(huì)有一個(gè)JRE.那么問(wèn)題來(lái)了,為什么會(huì)有兩套JRE呢?
從側(cè)面證明:

利用javac.exe進(jìn)行編譯:

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

修改這個(gè)D:\Java\jdk-8u192\lib文件下的tools.jar,隨便修改個(gè)名字,再去編譯

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理?

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

證明:

dt.jar和tools.jar是兩個(gè)java最基本的包,里面包含了從java最重要的lang包到各種高級(jí)功能如可視化的swing包,是java必不可少的。而path下面的bin里面都是java的可執(zhí)行的編譯器及其工具,如java,javadoc等,報(bào)錯(cuò)的原因就是輸入的javac的命令不是去JDK中bin目錄去找的javac.exe,而是去JDK中l(wèi)ib目錄中的tools.jar中com.sun.tools.javac.Main中執(zhí)行,因此javac.exe只是一個(gè)包裝器(Wrapper),存在的目的是為了讓開發(fā)者免于輸入過(guò)長(zhǎng)的指命。

這個(gè)時(shí)候發(fā)現(xiàn)JDK里的工具幾乎是用Java所編寫,同屬于Java應(yīng)用程序,因此要使用JDK所附的工具來(lái)開發(fā)Java程序,所以自身需要附一套JRE才能運(yùn)行

上圖中與jdk同級(jí)目錄下的JRE就是用來(lái)運(yùn)行一般Java程序用的。

兩套JRE運(yùn)行的時(shí)候究竟運(yùn)行哪一個(gè)呢?

這個(gè)時(shí)候JDK中java.exe先從自身目錄中找,然后父級(jí)目錄中找,如果都沒有就去注冊(cè)表中找。

JRE與JVM的關(guān)系??

再說(shuō)JRE和JVM:?

JVM -- java virtual machineJVM就是我們常說(shuō)的java虛擬機(jī),它是整個(gè)java實(shí)現(xiàn)跨平臺(tái)的最核心的部分,所有的java程序會(huì)首先被編譯為.class的類文件,這種類文件可以在虛擬機(jī)上執(zhí)行,class文件并不直接與機(jī)器的操作系統(tǒng)相對(duì)應(yīng),而是經(jīng)過(guò)虛擬機(jī)間接與操作系統(tǒng)交互,由虛擬機(jī)將程序解釋給本地系統(tǒng)執(zhí)行,類似于C#中的CLR。

以下先補(bǔ)充一下跨平臺(tái)的原理:

Java跨平臺(tái)解釋:

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

再次強(qiáng)調(diào):javac的命令不是去JDK中bin目錄去找的javac.exe,而是去JDK中l(wèi)ib目錄中的tools.jar中com.sun.tools.javac.Main中執(zhí)行,因此javac.exe只是一個(gè)包裝器(Wrapper),存在的目的是為了讓開發(fā)者免于輸入過(guò)長(zhǎng)的指命。

C語(yǔ)言跨平臺(tái)解釋:

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

總結(jié)一下:
JVM(Java Virtual Machine)就是一個(gè)虛擬的用于執(zhí)行bytecode字節(jié)碼的”虛擬計(jì)算機(jī)”。他也定義了指令集、寄存器集、結(jié)構(gòu)棧、垃圾收集堆、內(nèi)存區(qū)域。JVM負(fù)責(zé)將Java字節(jié)碼解釋運(yùn)行,邊解釋邊運(yùn)行,這樣,速度就會(huì)受到一定的影響。
不同的操作系統(tǒng)有不同的虛擬機(jī)。Java 虛擬機(jī)機(jī)制屏蔽了底層運(yùn)行平臺(tái)的差別,實(shí)現(xiàn)了“一次編譯,隨處運(yùn)行”。 Java虛擬機(jī)是實(shí)現(xiàn)跨平臺(tái)的核心機(jī)制。如圖所示:

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理

我們說(shuō)的語(yǔ)言跨平臺(tái)是編譯后的文件跨平臺(tái),而不是源程序跨平臺(tái)。
接下來(lái)我們?cè)俦容^下兩種方式的差異:

  • C語(yǔ)言是編譯執(zhí)行的,編譯器與平臺(tái)相關(guān),編譯生成的可執(zhí)行文件與平臺(tái)相關(guān);
  • Java是解釋執(zhí)行的,編譯為中間碼的編譯器與平臺(tái)無(wú)關(guān),編譯生成的中間碼也與平臺(tái)無(wú)關(guān)(一次編譯,到處運(yùn)行),中間碼再由解釋器解釋執(zhí)行,解釋器是與平臺(tái)相關(guān)的,也就是不同的平臺(tái)需要不同的解釋器.

上面說(shuō)完了跨平臺(tái)原理我們?cè)僬凧RE和JVM,JVM不能單獨(dú)搞定class的執(zhí)行,解釋class的時(shí)候JVM需要調(diào)用解釋所需要的類庫(kù)lib。在JDK下面的的jre目錄里面有兩個(gè)文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類庫(kù),而jvm 和 lib和起來(lái)就稱為jre。

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理?

JVM + Lib = JRE,如果講的具體點(diǎn)就是bin/server目錄下的jvm.dll文件, jvm.dll無(wú)法單獨(dú)工作,當(dāng)jvm.dll啟動(dòng)后,會(huì)使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來(lái)載入輔助用的動(dòng)態(tài)鏈接庫(kù)),而這些輔助用的動(dòng)態(tài)鏈接庫(kù)(.dll)都必須位 于jvm.dll所在目錄的父目錄之中。因此想使用哪個(gè)JVM,只需要設(shè)置PATH,指向JRE所在目錄下的jvm.dll。

【秒懂JDK,JRE,JVM的關(guān)系】,JavaSE,java,jvm,jre,jdk,跨平臺(tái)原理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-768334.html

到了這里,關(guān)于【秒懂JDK,JRE,JVM的關(guān)系】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JDK、JRE及JVM的關(guān)系及作用

    JDK、JRE及JVM的關(guān)系及作用,你未必真的知道。更多內(nèi)容詳見公眾hao:云水致誠(chéng) 1 、JDK JDK(Java Development Kit)是java程序的開發(fā)工具集,包含了運(yùn)行環(huán)境JRE、開發(fā)工具及基礎(chǔ)類庫(kù)等。 注意: 生產(chǎn)環(huán)境,目前使用JDK同時(shí)作為開發(fā)和運(yùn)行環(huán)境的比較多,主要是為了排查問(wèn)題方便的同

    2024年02月07日
    瀏覽(18)
  • 【Java探索之旅】我與Java的初相識(shí)(二):程序結(jié)構(gòu)與運(yùn)行關(guān)系和JDK,JRE,JVM的關(guān)系

    【Java探索之旅】我與Java的初相識(shí)(二):程序結(jié)構(gòu)與運(yùn)行關(guān)系和JDK,JRE,JVM的關(guān)系

    ?? 嶼小夏 : 個(gè)人主頁(yè) ??個(gè)人專欄 : Java入門到精通 ?? 莫道桑榆晚,為霞尚滿天! Java作為一門廣泛應(yīng)用的編程語(yǔ)言,其結(jié)構(gòu)和運(yùn)行環(huán)境對(duì)于初學(xué)者來(lái)說(shuō)可能會(huì)帶來(lái)一些困惑。本文旨在幫助初學(xué)者了解Java程序的基本結(jié)構(gòu)以及可能遇到的一些常見問(wèn)題,同時(shí)解釋了JDK、JRE和

    2024年02月04日
    瀏覽(156)
  • JDK、JRE、JVM三者之間的關(guān)系以及區(qū)別

    JDK、JRE、JVM三者之間的關(guān)系以及區(qū)別

    JDK = JRE + Java 開發(fā)工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心類庫(kù) JDK是用于Java程序 開發(fā) 的最小環(huán)境,包含:Java程序設(shè)計(jì)語(yǔ)言,Java虛擬機(jī)(JVM),Java類庫(kù)(API)。它能夠創(chuàng)建和編譯程序 JRE是Java程序 運(yùn)行 的標(biāo)準(zhǔn)環(huán)境。包含:Java類庫(kù)和Java虛擬機(jī)(JVM)。如果想運(yùn)行一

    2024年02月16日
    瀏覽(21)
  • 【面試題】JDK(工具包)、JRE(運(yùn)行環(huán)境和基礎(chǔ)庫(kù))、JVM(java虛擬機(jī))之間的關(guān)系?

    【面試題】JDK(工具包)、JRE(運(yùn)行環(huán)境和基礎(chǔ)庫(kù))、JVM(java虛擬機(jī))之間的關(guān)系?

    【面試題】JDK、JRE、JVM之間的關(guān)系? JDK (Java Development Kit):Java開發(fā)工具包,提供給Java程序員使用,包含了JRE,同時(shí)還包含了編譯器javac與自帶的調(diào)試工具Jconsole、jstack等。 JRE (Java Runtime Environment):Java運(yùn)行時(shí)環(huán)境,包含了JVM,Java基礎(chǔ)類庫(kù)。是使用Java語(yǔ)言編寫程序運(yùn)行的所需環(huán)境

    2024年02月11日
    瀏覽(33)
  • 從官網(wǎng)認(rèn)識(shí) JDK,JRE,JVM 三者的關(guān)系

    從官網(wǎng)認(rèn)識(shí) JDK,JRE,JVM 三者的關(guān)系

    點(diǎn)擊下方關(guān)注我,然后右上角點(diǎn)擊...“設(shè)為星標(biāo)”,就能第一時(shí)間收到更新推送啦~~~ JVM 是一些大廠面試必問(wèn)點(diǎn),要想解決 OOM、性能調(diào)優(yōu)方面的問(wèn)題,掌握 JVM 知識(shí)必不可少,從今天開始,將為大家介紹 JVM 的常用知識(shí)。 1、Java 官網(wǎng) Java 官網(wǎng)主頁(yè):https://docs.oracle.com/en/java/in

    2024年02月15日
    瀏覽(30)
  • JDK、JRE與JVM三者之間的關(guān)系及區(qū)別

    JDK、JRE與JVM三者之間的關(guān)系及區(qū)別

    JDK = JRE + Java 開發(fā)工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心類庫(kù) 什么是JDK,JDK是用于Java程序開發(fā)的最小環(huán)境,包含:Java程序設(shè)計(jì)語(yǔ)言,Java虛擬機(jī)(JVM),Java類庫(kù)(API)。它能夠創(chuàng)建和編譯程序。 什么是JRE,JRE是Java程序運(yùn)行的標(biāo)準(zhǔn)環(huán)境。包含:Java類庫(kù)和Java虛擬機(jī)

    2024年02月16日
    瀏覽(28)
  • Java開發(fā)環(huán)境簡(jiǎn)介(JDK、JRE、JVM)

    Java開發(fā)環(huán)境簡(jiǎn)介(JDK、JRE、JVM)

    目錄 1、Java開發(fā)環(huán)境 2、JDK和JRE 3、JDK下載和安裝 3.1 下載 3.2 安裝 3.3 配置path環(huán)境變量 JDK8配置方案1:只配置path ?JDK8配置方案2:配置JAVA_HOME+path(推薦) path配置小結(jié) JDK17配置方案:自動(dòng)配置 4、Java核心機(jī)制:JVM 補(bǔ)充:Java字節(jié)碼 JVM的優(yōu)點(diǎn) JVM的缺點(diǎn) JVM的運(yùn)行過(guò)程 5、Java程序

    2024年02月21日
    瀏覽(23)
  • 【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別

    【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別

    【java基礎(chǔ)面試題】jdk、jre、jvm區(qū)別 jdk ? 從概念上講JDK是JAVA開發(fā)工具,用它來(lái)開發(fā)JAVA程序,里面有很多基礎(chǔ)類庫(kù)和jre。 ? JDK(Java Development Kit),它是功能齊全的 Java SDK,是提供給開發(fā)者使用的,能夠創(chuàng)建和編譯 Java 程序。他包含了 JRE,同時(shí)還包含了編譯 java 源碼的編譯器

    2024年02月10日
    瀏覽(25)
  • 【Java】JDK、JRE、JVM詳細(xì)解讀(區(qū)別和聯(lián)系)

    【Java】JDK、JRE、JVM詳細(xì)解讀(區(qū)別和聯(lián)系)

    大多數(shù)人剛接觸Java的時(shí)候都會(huì)經(jīng)常看到JDK、JRE、JVM,但可能一直迷迷糊糊,不知道它們之間真正的作用和含義,而了解JDK、JRE、JVM分別是什么及它們之間的關(guān)系有助于我們更加深刻的理解java語(yǔ)言的特性。 Java程序是運(yùn)行在JVM(Java虛擬機(jī))上的,在開發(fā)程序之前要配置Java開發(fā)環(huán)

    2023年04月13日
    瀏覽(33)
  • Java中JVM、JRE和JDK三者有什么區(qū)別和聯(lián)系?

    Java中JVM、JRE和JDK三者有什么區(qū)別和聯(lián)系?

    任何語(yǔ)言或者軟件的運(yùn)行都需要環(huán)境。就像人要生活在空氣中,魚要活在水中,喜陰植物就不能放在陽(yáng)光下暴曬一樣,任何對(duì)象個(gè)體的存在都離不開其所需要的環(huán)境,編程語(yǔ)言亦是一樣的。 java?語(yǔ)言的開發(fā)運(yùn)行,也離不開 Java 語(yǔ)言的運(yùn)行環(huán)境 JRE。沒有 JRE 的支持,Java 語(yǔ)言便

    2024年02月08日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包