1. 程式人生 > >JDK、JRE、JVM的區別

JDK、JRE、JVM的區別

不少人(包括我)在初學JAVA時常常會分不清或者記不住什麼是JDK、JRE和JVM,但是這幾個詞又會時常出現,因此有必要徹底區分名瞭解這三者是什麼。

首先貼一張圖說明上著之間的關係

JDK、JRE、JVM三者的區別與聯絡 - 以德糊人 - ——挨踢民工 Playkid——

一、JDK(Java Development Kit)

  JDK是Java開發工具包,是Sun Microsystems針對Java開發員的產品。
  JDK中包含JRE,在JDK的安裝目錄下有一個名為jre的目錄,裡面有兩個資料夾bin和lib,在這裡可以認為bin裡的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。
  JDK是整個JAVA的核心,包括了Java執行環境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基礎的類庫(即Java API 包括rt.jar)。
  ①SE(J2SE),standard edition,標準版,是我們通常用的一個版本,從JDK 5.0開始,改名為Java SE。
  ②EE(J2EE),enterprise edition,企業版,使用這種JDK開發J2EE應用程式,從JDK 5.0開始,改名為Java EE。

  ③ME(J2ME),micro edition,主要用於移動裝置、嵌入式裝置上的java應用程式,從JDK 5.0開始,改名為Java ME。

二、Java Runtime Environment(JRE)
  是執行基於Java語言編寫的程式所不可缺少的執行環境。也是通過它,Java的開發者才得以將自己開發的程式釋出到使用者手中,讓使用者使用。
  RE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是執行Java程式的必要元件。
  與大家熟知的JDK不同,JRE是Java執行環境,並不是一個開發環境,所以沒有包含任何開發工具(如編譯器和偵錯程式),只是針對於使用Java程式的使用者。


三、JVM(java virtual machine)

  就是我們常說的java虛擬機器,它是整個java實現跨平臺的最核心的部分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛擬機器上執行。
  也就是說class並不直接與機器的作業系統相對應,而是經過虛擬機器間接與作業系統互動,由虛擬機器將程式解釋給本地系統執行。
  只有JVM還不能成class的執行,因為在解釋class的時候JVM需要呼叫解釋所需要的類庫lib,而jre包含lib類庫。
  JVM遮蔽了與具體作業系統平臺相關的資訊,使得Java程式只需生成在Java虛擬機器上執行的目的碼(位元組碼),就可以在多種平臺上不加修改地執行。

總結上面所說的,JDK包含JRE、JVM,是開發人員必須安裝的開發工具包,而JRE則是JAVA執行環境,當我們不需要開發JAVA程式,而僅僅需要讓JAVA程式執行起來時就可以只安裝JRE。

JDK、JRE、JVM三者的區別與聯絡 - 以德糊人 - ——挨踢民工 Playkid——

最後再貼一張三者的包含關係圖