簡單粗暴的理解
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有自己完善的硬件架構劈彪,如處理器竣蹦、堆棧、寄存器等沧奴,還具有相應的指令系統(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,包括一些重要的語言結構以及基本圖形沫屡,網(wǎng)絡和文件I/O等等饵隙,我們可以直接調(diào)用使用。
現(xiàn)在已經(jīng)有很多版本的JDK沮脖,除了Sun公司金矛,還有很多公司都開發(fā)了屬于自己的JDK,如IBM勺届、淘寶等驶俊。據(jù)說IBM的JDK運行效率比Sun的還要高,但是不管怎么說還是先把基礎的Sun JDK學好免姿,總結:
- 有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:
- 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)用。
轉載自https://blog.csdn.net/qq_21808961/article/details/80647551