最近更新|軟件分類|單機(jī)游戲|軟件專題|手機(jī)版|軟件發(fā)布 jre和jdk的區(qū)別 JDK/JRE/JVM的區(qū)別與聯(lián)系
首頁(yè)>編程開發(fā)>jre和jdk的區(qū)別 JDK/JRE/JVM的區(qū)別與聯(lián)系

jre和jdk的區(qū)別 JDK/JRE/JVM的區(qū)別與聯(lián)系

我要評(píng)論2015/11/24 11:22:19來(lái)源:9553編輯:

很多朋友可能已經(jīng)使用JAVA開發(fā)很久了,可是一直搞不清jre和jdk的區(qū)別,對(duì)于JDK,JRE,JVM這三者的聯(lián)系與區(qū)別,一直都是模模糊糊的。今天特發(fā)此文,來(lái)整理下三者的關(guān)系。

JDK : Java Development ToolKit(JAVA開發(fā)工具包)。JDK是整個(gè)JAVA的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基礎(chǔ)的類庫(kù)(即Java API 包括rt.jar)。

最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了屬于自己的JDK,例如國(guó)外IBM公司開發(fā)了屬于自己的JDK,國(guó)內(nèi)淘寶也開發(fā)了屬于自己的JDK,各個(gè)組織開發(fā)自己的JDK都是為了在某些方面得到一些提高,以適應(yīng)自己的需求,比如IBM的JDK據(jù)說(shuō)運(yùn)行效率就比SUN的JDK高的多。但不管怎么說(shuō),我們還是需要先把基礎(chǔ)的Sun JDK掌握好。

JDK有以下三種版本:

J2SE,standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個(gè)版本J2EE,enterpsise edtion,企業(yè)版,使用這種JDK開發(fā)J2EE應(yīng)用程序J2ME,micro edtion,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序

我們常常用JDK來(lái)代指Java API,Java API是Java的應(yīng)用程序接口,其實(shí)就是前輩們寫好的一些java Class,包括一些重要的語(yǔ)言結(jié)構(gòu)以及基本圖形,網(wǎng)絡(luò)和文件I/O等等 ,我們?cè)谧约旱某绦蛑?,調(diào)用前輩們寫好的這些Class,來(lái)作為我們自己開發(fā)的一個(gè)基礎(chǔ)。當(dāng)然,現(xiàn)在已經(jīng)有越來(lái)越多的性能更好或者功能更強(qiáng)大的第三方類庫(kù)供我們使用。

JRE:Java Runtime Enviromental(java運(yùn)行時(shí)環(huán)境)。也就是我們說(shuō)的JAVA平臺(tái),所有的Java程序都要在JRE下才能運(yùn)行。包括JVM和JAVA核心類庫(kù)和支持文件。與JDK相比,它不包含開發(fā)工具——編譯器、調(diào)試器和其它工具。

JVM:Java Virtual Mechinal(JAVA虛擬機(jī))。JVM是JRE的一部分,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。JVM 的主要工作是解釋自己的指令集(即字節(jié)碼)并映射到本地的 CPU 的指令集或 OS 的系統(tǒng)調(diào)用。Java語(yǔ)言是跨平臺(tái)運(yùn)行的,其實(shí)就是不同的操作系統(tǒng),使用不同的JVM映射規(guī)則,讓其與操作系統(tǒng)無(wú)關(guān),完成了跨平臺(tái)性。JVM 對(duì)上層的 Java 源文件是不關(guān)心的,它關(guān)注的只是由源文件生成的類文件( class file)。類文件的組成包括 JVM 指令集,符號(hào)表以及一些補(bǔ)助信息。

下圖很好的表面了JDK,JRE,JVM三者間的關(guān)系:

我們開發(fā)的實(shí)際情況是:我們利用JDK(調(diào)用JAVA API)開發(fā)了屬于我們自己的JAVA程序后,通過(guò)JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節(jié)碼,在JRE上運(yùn)行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼,映射到CPU指令集或OS的系統(tǒng)調(diào)用。

關(guān)鍵詞: JDK JRE JVM Java