JRE和JDK的區(qū)別?
1.JRE是Java運(yùn)行時(shí)環(huán)境 。 它是運(yùn)行已編譯的Java程序所需的所有程序的包,包括Java虛擬機(jī)(JVM),Java類庫(kù), java命令和其他基礎(chǔ)結(jié)構(gòu)。 但是,它不能用于創(chuàng)建新程序。
JDK是Java Development Kit ,這是Java的全功能SDK。 它具有JRE擁有的所有內(nèi)容,還具有編譯器( javac )和工具(如javadoc和jdb )。 它能夠創(chuàng)建和編譯程序。
通常,如果只關(guān)心在計(jì)算機(jī)上運(yùn)行Java程序,則只會(huì)安裝JRE。 這就是您所需要的。 另一方面,如果您打算進(jìn)行一些Java編程,則需要安裝JDK。
有時(shí),即使您不打算在計(jì)算機(jī)上進(jìn)行任何Java開發(fā),也仍然需要安裝JDK。 例如,如果要使用JSP部署Web應(yīng)用程序,則從技術(shù)上講,您只是在應(yīng)用程序服務(wù)器內(nèi)部運(yùn)行Java程序。 那為什么還要JDK呢? 因?yàn)閼?yīng)用服務(wù)器會(huì)將JSP轉(zhuǎn)換為Java servlet,并且需要使用JDK來(lái)編譯servlet。 我相信還有更多的例子。
2.顧名思義, JRE是一個(gè)環(huán)境 。 基本上,這是一堆包含Java相關(guān)文件的目錄,例如:
bin/包含Java的可執(zhí)行程序。 最重要的是java (對(duì)于Windows,也包括javaw ),它將啟動(dòng)JVM。 這里還有一些其他實(shí)用程序,例如keytool和policytool 。
conf/擁有用戶可編輯的配置文件,供Java專家使用。
lib/具有大量的支持文件:一些.jar ,配置文件,屬性文件,字體,翻譯,證書等–所有Java的“修整”。 最重要的是modules ,該文件包含Java標(biāo)準(zhǔn)庫(kù)的.class文件。
在某種程度上,Java標(biāo)準(zhǔn)庫(kù)需要調(diào)用本機(jī)代碼。 為此,JRE在bin/或lib/下包含一些.dll (Windows)或.dylib (macOS)或.so (Linux)文件,并帶有特定于系統(tǒng)的支持本機(jī)二進(jìn)制代碼。
JDK也是一組目錄。 它是JRE的超集,其中有一些補(bǔ)充:bin/已使用開發(fā)工具進(jìn)行了擴(kuò)展。 其中最重要的是javac ; 其他包括jar , javadoc和jshell 。
jmods/ ,其中包含標(biāo)準(zhǔn)庫(kù)的JMOD文件。 這些文件允許標(biāo)準(zhǔn)庫(kù)與jlink一起使用。
3.從Java官方網(wǎng)站...
JRE(Java運(yùn)行時(shí)環(huán)境):
它是Java虛擬機(jī)*的實(shí)現(xiàn),它實(shí)際上執(zhí)行Java程序。
Java Runtime Environment是運(yùn)行Java程序所需的插件。
JRE比JDK小,因此需要更少的磁盤空間。
它包括JVM,Core庫(kù)和其他附加組件,以運(yùn)行用Java編寫的應(yīng)用程序和applet。
JDK(Java開發(fā)套件)
它是一整套軟件,可用于開發(fā)基于Java的應(yīng)用程序。
開發(fā)Java應(yīng)用程序需要Java Development Kit。
JDK需要更多的磁盤空間,因?yàn)樗琂RE以及各種開發(fā)工具。它包括JRE,API類集,Java編譯器,Webstart以及編寫Java applet和應(yīng)用程序所需的其他文件。
4.從調(diào)試的角度來(lái)看,有一個(gè)區(qū)別:
要調(diào)試Java系統(tǒng)類(例如String和ArrayList),您需要使用“調(diào)試信息”編譯的特殊版本的JRE。 JDK中包含的JRE提供了此信息,但常規(guī)JRE沒有提供。 常規(guī)JRE不包含此信息以確保更好的性能。
什么是調(diào)試信息?
現(xiàn)代的編譯器將其高級(jí)代碼縮進(jìn)和嵌套的控制結(jié)構(gòu)以及任意類型的變量轉(zhuǎn)換為一大堆稱為機(jī)器代碼(在Java中為字節(jié)碼)的位,就可以很好地轉(zhuǎn)換您的高級(jí)代碼。在目標(biāo)CPU(JVM的虛擬CPU)上盡可能快地運(yùn)行。 Java代碼被轉(zhuǎn)換為多個(gè)機(jī)器代碼指令。 變量到處都是-放入堆棧,寄存器或完全優(yōu)化。 結(jié)構(gòu)和對(duì)象甚至不存在于生成的代碼中–它們只是一種抽象,可以轉(zhuǎn)換為硬編碼的偏移量到內(nèi)存緩沖區(qū)中。
那么,當(dāng)您要求調(diào)試器在某個(gè)函數(shù)的入口處中斷時(shí),調(diào)試器如何知道在何處停止? 當(dāng)您詢問變量值時(shí),如何設(shè)法找到要顯示的內(nèi)容? 答案是–調(diào)試信息。
調(diào)試信息由編譯器與機(jī)器代碼一起生成。 它表示可執(zhí)行程序和原始源代碼之間的關(guān)系。 該信息被編碼為預(yù)定義的格式,并與機(jī)器代碼一起存儲(chǔ)。 多年來(lái),針對(duì)不同的平臺(tái)和可執(zhí)行文件發(fā)明了許多此類格式。
5.JDK是JRE的超集,包含JRE中的所有內(nèi)容,以及開發(fā)applet和應(yīng)用程序所需的工具,例如編譯器和調(diào)試器。 JRE提供了庫(kù),Java虛擬機(jī)(JVM)和其他組件,以運(yùn)行用Java編程語(yǔ)言編寫的小程序和應(yīng)用程序。
更多java干貨,可評(píng)論或者私信我!
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),伊通企業(yè)網(wǎng)站建設(shè),伊通品牌網(wǎng)站建設(shè),網(wǎng)站定制,伊通網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,伊通網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
當(dāng)前標(biāo)題:學(xué)習(xí)java卻不知道JRE和JDK的區(qū)別?快進(jìn)來(lái)學(xué)習(xí)
分享地址:http://jinyejixie.com/article8/ghdoip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站收錄、、定制開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)