JDK,JRE,JVM三者的區(qū)別.md

簡單粗暴的理解

JDK包含了JRE,JRE包含了JVM

詳解

  • JDK: java development kit, java開發(fā)工具包,用來開發(fā)Java程序的,針對java開發(fā)者。
  • JRE: java runtime environment, java運行時環(huán)境,針對java用戶。
  • JVM: java virtual machine,java虛擬機 用來解釋執(zhí)行字節(jié)碼文件(class文件)的。

JVM 是什么

JVM:Java Virtual Machine(Java 虛擬機)JVM是JRE的一部分,它是一個虛擬出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應的指令系統(tǒng)。

JVM是Java實現(xiàn)跨平臺最核心的部分,所有的Java程序會首先被編譯為.class的類文件,JVM的主要工作是解釋自己的指令集(即字節(jié)碼)并映射到本地的CPU的指令集或OS的系統(tǒng)調(diào)用。Java面對不同操作系統(tǒng)使用不同的虛擬機,依次實現(xiàn)了跨平臺。JVM對上層的Java源文件是不關心的,它關心的只是由源文件生成的類文件

JRE是什么

JRE:Java Runtime Environment(Java運行環(huán)境)。在Java平臺下,所有的Java程序都需要在JRE下才能運行。只有JVM還不能進行class的執(zhí)行,因為解釋class的時候,JVM需要調(diào)用解釋所需要的類庫lib。JRE里面有兩個文件夾bin和lib,這里可以認為bin就是JVM,lib就是JVM所需要的類庫,而JVM和lib合起來就稱為JRE。

JRE包括JVM和JAVA核心類庫與支持文件。與JDK不同,它不包含開發(fā)工具—-編譯器、調(diào)試器和其它工具

JDK是什么?

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

Java API是Java的應用程序接口,里面有很多已經(jīng)寫好的Java Class,包括一些重要的語言結(jié)構(gòu)以及基本圖形,網(wǎng)絡和文件I/O等等,我們可以直接調(diào)用使用。

現(xiàn)在已經(jīng)有很多版本的JDK,除了Sun公司,還有很多公司都開發(fā)了屬于自己的JDK,如IBM、淘寶等。據(jù)說IBM的JDK運行效率比Sun的還要高,但是不管怎么說還是先把基礎的Sun JDK學好,總結(jié):

  • 有JVM就可以解釋執(zhí)行字節(jié)碼文件(.class)
  • JVM解釋執(zhí)行這些字節(jié)碼文件的時候需要調(diào)用類庫,如果沒有這些類庫JVM就不能正確的執(zhí)行字節(jié)碼文件,JVM+類庫=JRE
  • 有了JRE就可以正確的執(zhí)行java程序了,但是光有JRE不能開放Java程序,所以JRE+開發(fā)工具=JDK,有了JDK,就可同時開發(fā),執(zhí)行JRE。

兩個JRE,都有什么作用?

我們平時開發(fā)Java程序的時候,都會同時安裝JDK和JRE:


avatar
  • JDK里面的JRE安裝路徑:D:\dev\java\jdk1.8.0_91\jre
  • JDK外面的JRE安裝路徑:D:\dev\java\jre1.8.0_91

JDK里面的JRE是JDK自帶的為其開發(fā)工具提供運行環(huán)境的JRE,在JDK中有很多用Java編寫的開發(fā)工具(如: javac.exe、jar.exe),這些工具的實現(xiàn)代碼在JDK下面的lib目錄下的tools.jar中,也就是路徑:D:\dev\java\jdk1.8.0_91\lib\tools.jar里面。

JDK外面JRE用于為Java程序提供運行環(huán)境。

兩個JRE的異同

  • 相同點:這兩個JRE都可以作為開發(fā)Java程序的運行環(huán)境。
  • 不同點:JDK自帶的開發(fā)工具只能使用JDK自己目錄下的JRE,不能使用JDK外面的JRE。

實際開發(fā)情況

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

轉(zhuǎn)載自https://blog.csdn.net/qq_21808961/article/details/80647551

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容