Jdk、Jre Jvm的區別和聯絡

橙子筆記發表於2017-10-16
 JDK(Java Development Kit)
  JDK是Java開發工具包,包含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 )。其中的開發工具:編譯工具(javac.exe),打包工具(jar.exe)
      JDK=JRE+JVM+其它   執行Java程式一般都要求使用者的電腦安裝JRE環境(Java Runtime Environment);沒有jre,java程式無法執行;而沒有java程式,jre就沒有用武之地。
      
Java Runtime Environment(JRE)
  是執行基於Java語言編寫的程式所不可缺少的執行環境。也是通過它,Java的開發者才得以將自己開發的程式釋出到使用者手中,讓使用者使用。(即:JRE是面向Java程式的使用者,而不是開發者。)
  JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是執行Java程式的必要元件。JRE是Java執行環境,並不是一個開發環境,所以沒有包含任何開發工具(如編譯器和偵錯程式),只是針對於使用Java程式的使用者。

JVM(java virtual machine)
  就是我們常說的java虛擬機器,它是整個java實現跨平臺的最核心的部分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛擬機器上執行。也就是說class並不直接與機器的作業系統相對應,而是經過虛擬機器間接與作業系統互動,由虛擬機器將程式解釋給本地系統執行。只有JVM還不能成class的執行,因為在解釋class的時候JVM需要呼叫解釋所需要的類庫lib,而jre包含lib類庫。
 JVM有自己完善的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。JVM的主要工作是解釋自己的指令集(即位元組碼)並對映到本地的CPU的指令集或OS的系統呼叫。Java語言是跨平臺執行的,其實就是不同的作業系統,使用不同的JVM對映規則,讓其與作業系統無關,完成了跨平臺性JVM對上的Java原始檔是不關心的,它關注的只是由原始檔生成的類檔案(class file)。
下圖是JVM的原理:



相關文章