久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java中JDK,JRE和JVM之間的關(guān)系

 leowong1987 2017-02-05

初學(xué)JAVA很容易被其中的很多概念弄的傻傻分不清楚,,首先從概念上理解一下吧,JDK(Java Development Kit)簡(jiǎn)單理解就是Java開(kāi)發(fā)工具包,,JRE(Java Runtime Enviroment)是Java的運(yùn)行環(huán)境,,JVM( java virtual machine)也就是常常聽(tīng)到Java虛擬機(jī)。JDK是面向開(kāi)發(fā)者的,,JRE是面向使用JAVA程序的用戶,,上面只是簡(jiǎn)單的區(qū)別,一般網(wǎng)上好多都講概念,,我就不講了,,直接截圖應(yīng)該會(huì)更清晰一點(diǎn),我安裝的JDK1.8,效果如圖:

JDK和JRE

通過(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呢?

最開(kāi)始使用JAVA的時(shí)候設(shè)置JAVA環(huán)境變量的時(shí)候除了設(shè)置JAVA_Home中JDK的路徑之外,,還會(huì)需要設(shè)ClassPath,%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;dt.jar和tools.jar是兩個(gè)java最基本的包,,里面包含了從java最重要的lang包到各種高級(jí)功能如可視化的swing包,是java必不可少的,。而path下面的bin里面都是java的可執(zhí)行的編譯器及其工具,,如java,javadoc等,,你在任意的文件夾下面運(yùn)行cmd鍵入javac,,系統(tǒng)就能自動(dòng)召見(jiàn)java的編譯器就是歸功于這個(gè)環(huán)境變量的設(shè)置  ;如果修改其中tools.jar的名字,cmd運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò):

報(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),存在的目的是為了讓開(kāi)發(fā)者免于輸入過(guò)長(zhǎng)的指命,。這個(gè)時(shí)候發(fā)現(xiàn)JDK里的工具幾乎是用Java所編寫,,同屬于Java應(yīng)用程序,因此要使用JDK所附的工具來(lái)開(kā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í)目錄中找,如果都沒(méi)有就去注冊(cè)表中找:

 所以java.exe的運(yùn)行結(jié)果與你的電腦里面哪個(gè)JRE被執(zhí)行有很大的關(guān)系,,JDK和JRE應(yīng)該算是說(shuō)完了,,下面說(shuō)說(shuō)JRE和JVM.

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,。

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,。JVM+Lib=JRE,如果講的具體點(diǎn)就是bin目錄下的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在目前為止還是模糊的概念,這個(gè)時(shí)候可以通過(guò)JDK的目錄文件來(lái)看下:

在目錄下面有五個(gè)文件夾,、一個(gè)src類庫(kù)源碼壓縮包和幾個(gè)聲明文件,,其他五個(gè)文件夾分別是:bin、db,、include、lib,、 jre,,db這個(gè)文件看業(yè)務(wù)需求~

bin:最主要的是編譯器(javac.exe);

db:jdk從1.6之后內(nèi)置了Derby數(shù)據(jù)庫(kù),,它是是一個(gè)純用Java實(shí)現(xiàn)的內(nèi)存數(shù)據(jù)庫(kù),,屬于Apache的一個(gè)開(kāi)源項(xiàng)目。用Java實(shí)現(xiàn)的,,所以可以在任何平臺(tái)上運(yùn)行,;另外一個(gè)特點(diǎn)是體積小,免安裝,,只需要幾個(gè)小jar包就可以運(yùn)行了,。

include:java和JVM交互用的頭文件;

lib:常用類庫(kù)

jre:java運(yùn)行環(huán)境

JDK包含JRE,,而JRE包含JVM,,總的來(lái)說(shuō)JDK是用于java程序的開(kāi)發(fā),而jre則是只能運(yùn)行class而沒(méi)有編譯的功能,Eclipse,、IntelliJ IDEA等其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,,所以在安裝時(shí)只需選中jre路徑就ok了,最后用張網(wǎng)絡(luò)圖片總結(jié)下吧:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多