JDK,JRE,JVM区别与联系
很多朋友可能跟我一樣,已經(jīng)使用JAVA開發(fā)很久了,可是對JDK,JRE,JVM這三者的聯(lián)系與區(qū)別,一直都是模模糊糊的。
? ? 今天特寫此文,來整理下三者的關(guān)系。
?
? ? JDK : Java Development ToolKit(Java開發(fā)工具包)。JDK是整個JAVA的核心,包括了Java運行環(huán)境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基礎(chǔ)的類庫(即Java API?包括rt.jar)。
? ? 最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了屬于自己的JDK,例如國外IBM公司開發(fā)了屬于自己的JDK,國內(nèi)淘寶也開發(fā)了屬于自己的JDK,各個組織開發(fā)自己的JDK都是為了在某些方面得到一些提高,以適應(yīng)自己的需求,比如IBM的JDK據(jù)說運行效率就比SUN的JDK高的多。但不管怎么說,我們還是需要先把基礎(chǔ)的Sun JDK掌握好。
? ? JDK有以下三種版本:
J2SE,standard edition,標準版,是我們通常用的一個版本J2EE,enterpsise edtion,企業(yè)版,使用這種JDK開發(fā)J2EE應(yīng)用程序J2ME,micro edtion,主要用于移動設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序
?
? ? 我們常常用JDK來代指Java?API,Java?API是Java的應(yīng)用程序接口,其實就是前輩們寫好的一些java Class,包括一些重要的語言結(jié)構(gòu)以及基本圖形,網(wǎng)絡(luò)和文件I/O等等?,我們在自己的程序中,調(diào)用前輩們寫好的這些Class,來作為我們自己開發(fā)的一個基礎(chǔ)。當(dāng)然,現(xiàn)在已經(jīng)有越來越多的性能更好或者功能更強大的第三方類庫供我們使用。
?
? ? JRE:Java??Runtime??Enviromental(java運行時環(huán)境)。也就是我們說的JAVA平臺,所有的Java程序都要在JRE下才能運行。包括JVM和JAVA核心類庫和支持文件。與JDK相比,它不包含開發(fā)工具——編譯器、調(diào)試器和其它工具。
?
? ? JVM:Java Virtual Mechinal(JAVA虛擬機)。JVM是JRE的一部分,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。JVM?的主要工作是解釋自己的指令集(即字節(jié)碼)并映射到本地的?CPU?的指令集或?OS?的系統(tǒng)調(diào)用。Java語言是跨平臺運行的,其實就是不同的操作系統(tǒng),使用不同的JVM映射規(guī)則,讓其與操作系統(tǒng)無關(guān),完成了跨平臺性。JVM?對上層的?Java?源文件是不關(guān)心的,它關(guān)注的只是由源文件生成的類文件(?class file)。類文件的組成包括?JVM?指令集,符號表以及一些補助信息。
下圖很好的表面了JDK,JRE,JVM三者間的關(guān)系:
?
?
?
? ? 我們開發(fā)的實際情況是:我們利用JDK(調(diào)用JAVA API)開發(fā)了屬于我們自己的JAVA程序后,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節(jié)碼,在JRE上運行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼,映射到CPU指令集或OS的系統(tǒng)調(diào)用。
http://java-mzd.iteye.com/blog/838514
總結(jié)
以上是生活随笔為你收集整理的JDK,JRE,JVM区别与联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse IDE for Java
- 下一篇: S3C6410驱动I80接口LCD