1. 程式人生 > >JDK, JRE 和 JVM 的區別?

JDK, JRE 和 JVM 的區別?

JDK, JRE 和 JVM 的區別?
JDK, JRE 和 JVM 是 Java 程式語言的核心概念。儘管它們看起來差不多,作為程式設計師我們也不怎麼關心這些 概念,但是它們是不同的針對特定目的的產品。這是一道常見的 Java 面試題,而本文則會一一解釋這些概念並給出它們之間的區別。
Java 開發工具包 (JDK)

Java 開發工具包是 Java 環境的核心元件,並提供編譯、除錯和執行一個 Java 程式所需的所有工具,可執行文 件和二進位制檔案。JDK 是一個平臺特定的軟體,有針對 Windows,Mac 和 Unix 系統的不同的安裝包。可以說 JDK 是 JRE 的超集,它包含了 JRE 的 Java 編譯器,偵錯程式和核心類。JDK 的版本號是 1.7,也被稱為 Java 7。

Java 虛擬機器(JVM)

JVM 是 Java 程式語言的核心。當我們執行一個程式時,JVM 負責將位元組碼轉換為特定機器程式碼。JVM 也是平 臺特定的,並提供核心的 Java 方法,例如記憶體管理、垃圾回收和安全機制等。JVM 是可定製化的,我們可以通 過 Java 選項(java options)定製它,比如配置 JVM 記憶體的上下界。JVM 之所以被稱為虛擬的是因為它提供了 一個不依賴於底層作業系統和機器硬體的介面。這種獨立於硬體和作業系統的特性正是 Java 程式可以一次編寫多處執行的原因。

Java 執行時環境(JRE)

JRE 是 JVM 的實施實現,它提供了執行 Java 程式的平臺。JRE 包含了 JVM、Java 二進位制檔案和其它成功執 行程式的類檔案。JRE 不包含任何像 Java 編譯器、偵錯程式之類的開發工具。如果你只是想要執行 Java 程 序,你只需安裝 JRE 即可,沒有安裝 JDK 的必要。

JDK, JRE 和 JVM 的區別

JDK 是用於開發的而JRE 是用於執行 Java 程式的。
JDK 和 JRE 都包含了 JVM,從而使得我們可以執行 Java 程式。 JVM 是 Java 程式語言的核心並且具有平臺獨立性。

即時編譯器(JIT)

有時我們會聽到 JIT 這個概念,並說它是 JVM 的一部分,這讓我們很困惑。JIT 是 JVM 的一部分,它可以在同 一時間編譯類似的位元組碼來優化將位元組碼轉換為機器特定語言的過程相似的位元組碼,從而將優化位元組碼轉換為機 器特定語言的過程,這樣減少轉換過程所需要花費的時間。