聊一聊關(guān)于JDK、JRE 和 JVM 的區(qū)別
Java Development Kit (JDK ) 是用于開發(fā) Java 應用程序和小程序的軟件開發(fā)環(huán)境。它包括 Java 運行時環(huán)境 (JRE)、解釋器/加載器 (Java)、編譯器(javac)、歸檔器 (jar)、文檔生成器 (Javadoc) 以及 Java 開發(fā)所需的其他工具。
現(xiàn)在我們需要一個環(huán)境來運行我們的程序。此后,JRE代表“Java 運行時環(huán)境”,也可以寫成“Java RTE”。Java 運行時環(huán)境提供了執(zhí)行 Java 應用程序的最低要求;它由Java 虛擬機 (JVM)、核心類和支持文件組成。
現(xiàn)在讓我們討論一下JVM,它代表了 java 虛擬機。如下:
- 指定 Java 虛擬機工作的規(guī)范。但實現(xiàn)提供者獨立選擇算法。它的實現(xiàn)由 Sun 和其他公司提供。
- 實現(xiàn)是滿足 JVM 規(guī)范要求的計算機程序。
- 運行時實例每當您在命令提示符下編寫 java 命令以運行 java 類時,就會創(chuàng)建一個 JVM 實例。
在繼續(xù)討論 JDK、JRE 和 JVM 之間的區(qū)別之前,讓我們先簡要討論它們,并將它們與下面提出的圖像相互關(guān)聯(lián)。
不用感到困惑,因為我們將一一討論它們。
(1) JDK(Java Development Kit)是一個提供開發(fā)和執(zhí)行(運行) Java程序環(huán)境的工具包。JDK 是一個工具包(或包),包括兩個東西
- 開發(fā)工具(提供開發(fā)Java程序的環(huán)境)
- JRE(執(zhí)行您的 java 程序)。
(2) JRE(Java Runtime Environment)是一個安裝包,它提供了一個環(huán)境,只在你的機器上運行(而不是開發(fā)) java程序(或應用程序)。JRE 僅供那些只想運行作為系統(tǒng)最終用戶的 Java 程序的人使用。
(3) JVM(Java 虛擬機) 是 JDK 和 JRE 中非常重要的一部分,因為它包含或內(nèi)置在兩者中。無論你使用 JRE 還是 JDK 運行的 Java 程序都會進入 JVM,而 JVM 負責逐行執(zhí)行 Java 程序,因此它也被稱為解釋器。
現(xiàn)在讓我們討論 JRE 的組件,以了解它的重要性并了解它的實際工作原理。為此,讓我們討論組件。
JRE的組件如下:
- 部署技術(shù),包括部署、Java Web Start 和 Java 插件。
- 用戶界面工具包,包括抽象窗口工具包 (AWT)、Swing、Java 2D、可訪問性、圖像 I/O、打印服務(wù)、聲音、拖放( DnD)和輸入法。
- 集成庫,包括接口定義語言 (IDL)、Java 數(shù)據(jù)庫連接 (JDBC)、Java 命名和目錄接口 (JNDI)、遠程方法調(diào)用 (RMI)、基于 Internet Inter-Orb 協(xié)議的遠程方法調(diào)用 (RMI-IIOP)和腳本。
- 其他基礎(chǔ)庫,包括國際支持、輸入/輸出 (I/O)、擴展機制、Beans、Java 管理擴展 (JMX)、Java 本機接口 (JNI)、數(shù)學、網(wǎng)絡(luò)、覆蓋機制、安全性、序列化和Java XML 處理 (XML JAXP)。
- Lang 和 util 基礎(chǔ)庫,包括lang 和 util、管理、版本控制、zip、儀器、反射、集合、并發(fā)實用程序、Java 存檔 (JAR)、日志記錄、首選項 API、參考對象和正則表達式。
- Java 虛擬機 (JVM),包括Java HotSpot 客戶端和服務(wù)器虛擬機。
在對組件有足夠的了解之后,現(xiàn)在讓我們討論一下 JRE 的工作原理。為了理解 JRE 是如何工作的,讓我們考慮下面的一個例子:
考慮一個保存為 ‘ Example.java’的 java 源文件。該文件被編譯成一組字節(jié)碼,存儲在“ .class ”文件中。這里將是“
Example.class ”。注意:從上面可以解釋編譯時的媒體操作計算。
以下操作在運行時發(fā)生,如下所示:
(1) 類加載器
(2) 字節(jié)碼驗證器
(3) 口譯員
- 執(zhí)行字節(jié)碼
- 對底層硬件進行適當?shù)恼{(diào)用
現(xiàn)在讓我們簡要討論一下 JVM 是如何工作的。如下:
JVM 在 Java 程序運行時成為 JRE 的一個實例。它被廣泛稱為運行時解釋器。JVM 在很大程度上有助于從使用 JDK 程序庫的程序員抽象內(nèi)部實現(xiàn)。
它主要負責三項活動。
- Loading
- Linking
- Initialization
同樣,現(xiàn)在讓我們討論一下 JRE 的工作原理,如下所示:
- JVM(Java 虛擬機)充當運行 Java 應用程序的運行時引擎。JVM 是實際調(diào)用java 代碼中存在的main方法的那個。JVM 是 JRE(Java 運行時環(huán)境)的一部分。
- Java 應用程序稱為 WORA(一次編寫,隨處運行)。這意味著程序員可以在一個系統(tǒng)上開發(fā) Java 代碼,并且可以期望它在任何其他支持 Java 的系統(tǒng)上運行而無需任何調(diào)整。由于 JVM,這一切皆有可能。
- 當我們編譯文件時*.java,Java 編譯器會生成與*.java文件中存在的相同類名的*.class文件(包含字節(jié)碼) 。當我們運行這個*.class文件時,它會進入各個步驟。這些步驟一起描述了整個 JVM。