通過(guò)實(shí)例了解Java jdk和jre的區(qū)別
首先筆者想闡明的是:JDK和JRE沒(méi)想象中的那么簡(jiǎn)單。
相信大家都知道JDK和JRE是什么,但是具體干什么用不妨先試問(wèn)下自己,如果能說(shuō)出個(gè)所以然來(lái),那么這篇文章大神請(qǐng)自覺(jué)忽略,呵呵,或者可以溫故一下。
如果有哪里說(shuō)的不對(duì)的地方還望指出,謝謝。
下面來(lái)簡(jiǎn)單說(shuō)明下
先上張圖,宏觀的看一下

從圖中可以看出JDK包含JRE包含JVM...
JDK:java development kit (java開(kāi)發(fā)工具)
JRE:java runtime environment (java運(yùn)行時(shí)環(huán)境)
引申出JVM
JVM:java virtuak machine (java虛擬機(jī))
一、JDK——開(kāi)發(fā)環(huán)境(核心)
java development kit 的縮寫(xiě),意思是JAVA開(kāi)發(fā)工具,我們寫(xiě)文檔做PPT需要office 辦公軟件,開(kāi)發(fā)當(dāng)然需要開(kāi)發(fā)工具了,說(shuō)到開(kāi)發(fā)工具大家肯定會(huì)想到Eclipse,但是如果直接安裝Eclipse你會(huì)發(fā)現(xiàn)它是運(yùn)行不起來(lái) 是會(huì)報(bào)錯(cuò)的,只有安裝了JDK,配置好了環(huán)境變量和path才可以運(yùn)行成功。這點(diǎn)相信很多人都深有體會(huì)。
JDK主要包含三部分,
第一部分就是Java運(yùn)行時(shí)環(huán)境,JVM。
第二部分就是Java的基礎(chǔ)類庫(kù),這個(gè)類庫(kù)的數(shù)量還是非??捎^的。
第三部分就是Java的開(kāi)發(fā)工具,它們都是輔助你更好的使用Java的利器。
詳尋《玩好JDK,面試不用愁》
二、JRE——運(yùn)行環(huán)境
java runtime environment (java運(yùn)行時(shí)環(huán)境)的縮寫(xiě)
1.1_JDK中的JRE
如下圖:jdk中包含的jre,在jre的bin目錄里有個(gè)jvm.dll,既然JRE是運(yùn)行時(shí)環(huán)境,那么運(yùn)行在哪?肯定是JVM虛擬機(jī)上了。另,jre的lib目錄中放的是一些JAVA類庫(kù)的class文件,已經(jīng)打包成jar文件。

1.2_第二個(gè)JRE(獨(dú)立出來(lái)的運(yùn)行時(shí)環(huán)境)
如下圖,不管是JDK中的JRE還是JRE既然是運(yùn)行時(shí)環(huán)境必須有JVM。所以JVM也是有兩個(gè)的。
三、JVM——轉(zhuǎn)換環(huán)境
java virtuak machine (java虛擬機(jī))的縮寫(xiě)。
大家一提到JAVA的優(yōu)點(diǎn)就會(huì)想到:一次編譯,隨處運(yùn)行,說(shuō)白了就是跨平臺(tái)性好,這點(diǎn)JVM功不可沒(méi)。
JAVA的程序也就是我們編譯的代碼都會(huì)編譯為Class文件,Class文件就是在JVM上運(yùn)行的文件,
只有JVM還不能成class的執(zhí)行,因?yàn)樵诮忉宑lass的時(shí)候JVM需要調(diào)用解釋所需要的類庫(kù)lib,而jre包含lib類庫(kù)。
JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。
JVM也是一門很深的學(xué)問(wèn),感興趣的童鞋可以深入研究,只有好處,沒(méi)有壞處。
其實(shí)有時(shí)候面試官問(wèn)JDK和JRE的區(qū)別的目的不是想讓你解釋什么名詞的,而是想看看你的基礎(chǔ)和研究JAVA的深淺,還有另一方面就是你是不是經(jīng)常喜歡問(wèn)為什么。
總結(jié):
如果你面試遇到這個(gè)問(wèn)題了,不用解釋太多,一個(gè)詞(javac)就夠了,如果面試官不傻的話,我相信他已經(jīng)秒懂了。
如果繼續(xù)追問(wèn)的話,再一 一給他細(xì)分。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. php模擬實(shí)現(xiàn)斗地主發(fā)牌2. Python random庫(kù)使用方法及異常處理方案3. 理解PHP5中static和const關(guān)鍵字4. spring acegi security 1.0.0 發(fā)布5. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)6. Vuex localStorage的具體使用7. jQuery 實(shí)現(xiàn)DOM元素拖拽交換位置的實(shí)例代碼8. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟9. vue 使用localstorage實(shí)現(xiàn)面包屑的操作10. MyBatis中的JdbcType映射使用詳解

網(wǎng)公網(wǎng)安備