解讀JDK、JRE、JVM的區(qū)別與聯(lián)系
一、jdk
JDK(Java Development Kit):
jdk是Java的開發(fā)工具包,是整個java開發(fā)的核心。
其中主要包含了三方面的內容:
- Java程序的運行環(huán)境-JRE
- Java的基礎類庫(Java API)
Java API是Java的應用程序接口,里面有很多已經寫好的Java class,包含一些重要的語法結構和基本的線程、圖形和IO等。
我們可以直接拿來使用。
Java的一些工具包(其中包含了javac源碼編譯器,還有一些其他的命令:jdb,javah,jmp等)。
在學習java之前,一般都是安裝運行環(huán)境,下載一個JDK。在jdk中有很多的文件,其中最主要的就是四個文件:bin、include、jre、lib。

- bin:bin目錄下有大量的可運行exe文件,其中最主要的就是javac.exe文件,源碼編譯器。
- include:包含一些頭文件,用于java和JVM進行交互。
- lib:類庫。
- jre:java程序運行環(huán)境。
在jre目錄底下,還有一個bin文件和lib文件,這兩個文件與之前的不同,這里的bin文件可以認為就是jvm,lib文件就是jvm運行時需要的類庫。
JVM+ lib庫=JRE。
二、jre
JRE(Java Runtime Environment—java運行環(huán)境):
jre是java程序的運行環(huán)境,所有的Java程序必須依賴jre才能運行。jre中包含jvm,但是只有jvm是不能完全解釋字節(jié)碼文件的,還需要一些核心的類庫。
這些類庫都存放在jre目錄底下的lib文件中。所以jre就包括了兩部分:解釋字節(jié)碼的jvm+一些核心類庫(存放于lib文件中)
三、jvm
JVM(Java Virtual Machine–java虛擬機):
jvm是jre的一部分,jvm是虛擬出的一臺計算機,這臺計算機不關心java源代碼如何寫的,它只關心java源程序編譯出的字節(jié)碼文件,jvm是java程序能實現(xiàn)跨平臺的核心,它不關心真實計算機,也不關心操作系統(tǒng)等等,就像一個中間平臺,只負責將字節(jié)碼文件轉換成當前計算機能理解的CPU指令集或系統(tǒng)調用。
jvm有自己完善的硬件架構,如處理器、棧區(qū)、寄存器等。
總結:jvm是一個虛擬的中間平臺,只負責將編譯后的字節(jié)碼文件轉換成當前計算機能理解并執(zhí)行的指令,其他都不關心。jvm是java“一次編譯,到處執(zhí)行”的原因。
四、關系圖

五、一個Java程序的執(zhí)行過程
- 我們利用JDK(通過調用一些Java API)寫出java源程序,然后儲存在.java文件中。
- JDK中的源碼編譯器javac將源代碼編譯成java字節(jié)碼,儲存在.class文件中。
- JRE加載、驗證、執(zhí)行Java字節(jié)碼。
- JVM將字節(jié)碼文件解析為機器碼映射到CPU指令集或者供系統(tǒng)調用。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot攔截器如何獲取http請求參數(shù)
這篇文章主要給大家介紹了SpringBoot攔截器如何獲取http請求參數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Java實戰(zhàn)之醫(yī)院管理系統(tǒng)的實現(xiàn)
這篇文章主要介紹了如何利用Java實現(xiàn)醫(yī)院管理系統(tǒng),文中用到的技術有:SpringBoot、Layui、Freemaker等,感興趣的同學可以了解一下2022-04-04

