通過實(shí)例了解Java jdk和jre的區(qū)別
首先筆者想闡明的是:JDK和JRE沒想象中的那么簡(jiǎn)單。
相信大家都知道JDK和JRE是什么,但是具體干什么用不妨先試問下自己,如果能說出個(gè)所以然來,那么這篇文章大神請(qǐng)自覺忽略,呵呵,或者可以溫故一下。
如果有哪里說的不對(duì)的地方還望指出,謝謝。
下面來簡(jiǎn)單說明下
先上張圖,宏觀的看一下
從圖中可以看出JDK包含JRE包含JVM...
JDK:java development kit (java開發(fā)工具)
JRE:java runtime environment (java運(yùn)行時(shí)環(huán)境)
引申出JVM
JVM:java virtuak machine (java虛擬機(jī))
一、JDK——開發(fā)環(huán)境(核心)
java development kit 的縮寫,意思是JAVA開發(fā)工具,我們寫文檔做PPT需要office 辦公軟件,開發(fā)當(dāng)然需要開發(fā)工具了,說到開發(fā)工具大家肯定會(huì)想到Eclipse,但是如果直接安裝Eclipse你會(huì)發(fā)現(xiàn)它是運(yùn)行不起來 是會(huì)報(bào)錯(cuò)的,只有安裝了JDK,配置好了環(huán)境變量和path才可以運(yùn)行成功。這點(diǎn)相信很多人都深有體會(huì)。
JDK主要包含三部分,
第一部分就是Java運(yùn)行時(shí)環(huán)境,JVM。
第二部分就是Java的基礎(chǔ)類庫,這個(gè)類庫的數(shù)量還是非常可觀的。
第三部分就是Java的開發(fā)工具,它們都是輔助你更好的使用Java的利器。
詳尋《玩好JDK,面試不用愁》
二、JRE——運(yùn)行環(huán)境
java runtime environment (java運(yùn)行時(shí)環(huán)境)的縮寫
1.1_JDK中的JRE
如下圖:jdk中包含的jre,在jre的bin目錄里有個(gè)jvm.dll,既然JRE是運(yùn)行時(shí)環(huán)境,那么運(yùn)行在哪?肯定是JVM虛擬機(jī)上了。另,jre的lib目錄中放的是一些JAVA類庫的class文件,已經(jīng)打包成jar文件。
1.2_第二個(gè)JRE(獨(dú)立出來的運(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ī))的縮寫。
大家一提到JAVA的優(yōu)點(diǎn)就會(huì)想到:一次編譯,隨處運(yùn)行,說白了就是跨平臺(tái)性好,這點(diǎn)JVM功不可沒。
JAVA的程序也就是我們編譯的代碼都會(huì)編譯為Class文件,Class文件就是在JVM上運(yùn)行的文件,
只有JVM還不能成class的執(zhí)行,因?yàn)樵诮忉宑lass的時(shí)候JVM需要調(diào)用解釋所需要的類庫lib,而jre包含lib類庫。
JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。
JVM也是一門很深的學(xué)問,感興趣的童鞋可以深入研究,只有好處,沒有壞處。
其實(shí)有時(shí)候面試官問JDK和JRE的區(qū)別的目的不是想讓你解釋什么名詞的,而是想看看你的基礎(chǔ)和研究JAVA的深淺,還有另一方面就是你是不是經(jīng)常喜歡問為什么。
總結(jié):
如果你面試遇到這個(gè)問題了,不用解釋太多,一個(gè)詞(javac)就夠了,如果面試官不傻的話,我相信他已經(jīng)秒懂了。
如果繼續(xù)追問的話,再一 一給他細(xì)分。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python裝飾器三種裝飾模式的簡(jiǎn)單分析2. JavaScript Reduce使用詳解3. Python實(shí)現(xiàn)迪杰斯特拉算法過程解析4. 詳解Python模塊化編程與裝飾器5. Spring security 自定義過濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)6. JavaScript中的AOP編程的基本實(shí)現(xiàn)7. 淺談JavaScript中等號(hào)、雙等號(hào)、 三等號(hào)的區(qū)別8. 詳解java中static關(guān)鍵詞的作用9. Python如何進(jìn)行時(shí)間處理10. python使用ctypes庫調(diào)用DLL動(dòng)態(tài)鏈接庫
