通過(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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java map中相同的key保存多個(gè)value值方式
這篇文章主要介紹了java map中相同的key保存多個(gè)value值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08shiro并發(fā)人數(shù)登錄控制的實(shí)現(xiàn)代碼
在做項(xiàng)目中遇到這樣的需求要求每個(gè)賬戶同時(shí)只能有一個(gè)人登錄或幾個(gè)人同時(shí)登錄,如果是同時(shí)登錄的多人,要么不讓后者登錄,要么踢出前者登錄,怎么實(shí)現(xiàn)這樣的功能呢?下面小編給大家?guī)?lái)了shiro并發(fā)人數(shù)登錄控制的實(shí)現(xiàn)代碼,一起看看吧2017-09-09SpringBoot之自定義啟動(dòng)異常堆棧信息打印方式
這篇文章主要介紹了SpringBoot之自定義啟動(dòng)異常堆棧信息打印方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java中MyBatis的動(dòng)態(tài)語(yǔ)句詳解
這篇文章主要介紹了Java中MyBatis的動(dòng)態(tài)語(yǔ)句詳解,動(dòng)態(tài) SQL 是 MyBatis 的強(qiáng)大特性之一,通過(guò)不同參數(shù)生成不同的 SQL,可以動(dòng)態(tài)地對(duì)數(shù)據(jù)持久層進(jìn)行操作,而不需要每個(gè)數(shù)據(jù)訪問(wèn)操作都要進(jìn)行手動(dòng)地拼接 SQL 語(yǔ)句,需要的朋友可以參考下2023-08-08springboot前端傳參date類型后臺(tái)處理的方式
這篇文章主要介紹了springboot前端傳參date類型后臺(tái)處理的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Kafka的安裝及接入SpringBoot的詳細(xì)過(guò)程
Kafka 是一種高性能、分布式的消息隊(duì)列系統(tǒng),最初由 LinkedIn 公司開(kāi)發(fā),并于2011年成為 Apache 頂級(jí)項(xiàng)目,這篇文章主要介紹了Kafka的安裝及接入SpringBoot,需要的朋友可以參考下2024-05-05java 對(duì)稱加密算法實(shí)現(xiàn)詳解
這篇文章主要介紹了java 對(duì)稱加密算法實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07