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