1. 程式人生 > >Java中的JDK,JRE和JVM之間的區別

Java中的JDK,JRE和JVM之間的區別

run 編譯 java 發布 開發 特性 底層 應用程序 解釋

JDK(Java Development Kit)是針對Java開發員的產品,是整個Java的核心,包括了Java運行環境JRE、Java工具和Java基礎類庫。Java Runtime Environment(JRE)是運行JAVA程序所必須的環境的集合,包含JVM標準實現及Java核心類庫。JVM是Java Virtual Machine(Java虛擬機)的縮寫,是整個java實現跨平臺的最核心的部分,能夠運行以Java語言寫作的軟件程序。盡管它們看起來差不多,但是它們是不同的針對特定目的的產品。

  Java 開發工具包 (JDK)

  Java 開發工具包是 Java 環境的核心組件,並提供編譯、調試和運行一個 Java 程序所需的所有工具,可執行文件和二進制文件。JDK 是一個平臺特定的軟件,有針對 Windows,Mac 和 Unix 系統的不同的安裝包。可以說 JDK 是 JRE 的超集,它包含了 JRE 的 Java 編譯器,調試器和核心類。目前 JDK 的版本號是 1.8,也被稱為 Java 8。

  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)。金字塔結構:JDK=JRE+JVM+ 其它 。運行Java程序一般都要求用戶的電腦安裝JRE環境(Java Runtime Environment);沒有jre,java程序無法運行;而沒有java程序,jre就沒有用武之地。

JDK的幾個版本:

  ①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 運行時環境(JRE)

JRE,也就是我們說的JAVA平臺,所有的Java程序都要在JRE下才能運行。包括JVM和JAVA核心類庫和支持文件。與JDK相比,它不包含開發工具——編譯器、調試器和其它工具。JRE 是JVM 的實施實現,它提供了運行Java 程序的平臺。JRE 包含了 JVM、Java 二進制文件和其它成功執行程序的類文件。

  與大家熟知的JDK不同,JRE是是運行基於Java語言編寫的程序所不可缺少的運行環境,並不是一個開發環境,所以沒有包含任何開發工具(如編譯器和調試器),只是針對於使用Java程序的用戶,也是通過它,Java的開發者才得以將自己開發的程序發布到用戶手中,讓用戶使用。 如果你只是想要執行 Java 程序,你只需安裝 JRE 即可,沒有安裝 JDK 的必要。

  Java 虛擬機(JVM)

  JVM 是整個java實現跨平臺的最核心的部分,JVM有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM 的主要工作是解釋自己的指令集(即字節碼)並映射到本地的 CPU 的指令集或 OS 的系統調用。當我們運行一個程序時,JVM 負責將字節碼轉換為特定機器代碼。JVM 是平臺特定的,並提供核心的Java 方法,例如內存管理、垃圾回收和安全機制等。JVM 是可定制化的,我們可以通過 Java 選項(java options)定制它,比如配置 JVM 內存的上下界。JVM 之所以被稱為虛擬的是因為它提供了一個不依賴於底層操作系統和機器硬件的接口。這種獨立於硬件和操作系統的特性正是 Java 程序可以一次編寫多處執行的原因。

  Java語言是跨平臺運行的,其實就是不同的操作系統,使用不同的JVM映射規則,讓其與操作系統無關,完成了跨平臺性。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。JVM 對上層的 Java 源文件是不關心的,它關註的只是由源文件生成的類文件( class file )。類文件的組成包括 JVM 指令集,符號表以及一些補助信息。

  JDK, JRE 和 JVM 的區別

①JDK 是用於開發的,而JRE 是用於運行 Java 程序的。

  ②JDK 和JRE都包含了JVM,從而使得我們可以運行Java 程序。

  ③JVM 是Java 編程語言的核心並且具有平臺獨立性。

  在Java開發中:我們利用JDK(調用JAVA API)開發了屬於我們自己的JAVA程序後,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節碼,在JRE上運行這些JAVA字節碼,JVM解析這些字節碼,映射到CPU指令集或OS的系統調用。

Java中的JDK,JRE和JVM之間的區別