要想開發Java程序,就須要知道什麼是JVM、JRE以及JDK。JVM是運行Java程序的核心,JRE是支持Java程序運行的環境,而JDK是Java開發的核心,下面咱們分別具體介紹它們以及它們之間的關係。java
1.JVM(Java Virtual Machine,Java虛擬機)sql
Java虛擬機簡稱JVM,是一個抽象的計算機,和實際的計算機同樣,它具備指令集並使用不一樣的存儲區域(內存中不一樣的區域),JVM也就是Java程序的解釋器。不一樣平臺上的JVM也是不一樣的,可是它們都提供了相同的接口,JVM是Java程序跨平臺特性的關鍵元素,只要爲不一樣平臺實現了相應的JVM,編譯後的Java字節碼就能夠在該平臺上運行。顯然,相同的字節碼文件想要直接在不一樣的平臺上運行是不可能的(由於不一樣的平臺有不一樣的指令集),只有經過中間的轉換器(解釋器)才能夠實現,JVM就是這個轉換器,在不一樣平臺上的JVM將同一份字節碼文件轉換爲不一樣平臺上相應的機器指令。數據庫
Sun(Oracle)公司制定的Java虛擬機規範在技術上規定了JVM的統一標準,及具體定義了JVM中的指令集、寄存器、類文件的格式、棧、垃圾回收堆和存儲區。Sun公司制定的這些規範的目的就是爲了提供統一的標準,最終實現Java程序的平臺無關性。編程
2.JRE(Java Runtime Environment,Java運行時環境)網絡
Java運行時環境簡稱JRE,是運行Java應用程序所必須的環境的集合,其中包含了JVM虛擬機實現以及Java核心類庫支持文件。Java核心類庫是jre\lib\rt.jar這個文件。包括了Jave SE平臺的全部類庫。類庫中主要的包以下:socket
● java.lang:這個是系統的基礎類,好比Object、String等類都是這裏面的,這個包是惟一一個不須要引入(import)就可使用的包。工具
● java.io:這裏面是全部輸入輸出有關的類,好比文件操做等。性能
● java.nio:爲了完善io包中的功能,提升io包中性能而編寫的一個新包(但不是爲了替代io包)。開發工具
● java.net:這裏面是與網絡有關的類,好比URL、socket等。.net
● java.util:這個是系統工具類,其中包括了主要的集合如Collection、List和Map等。
● java.sql:這個是數據庫操做的類,其中包括Connection、Statement等類。
若是僅僅須要運行Java程序,那麼計算機中只須要安裝JRE便可。
3.JDK(Java Development Kit,Java開發工具包)
顧名思義,JDK就是用來開發Java應用程序的軟件包,JDK中包含了JRE以及JVM實現。JDK是Sun公司爲了方便開發Java程序而提供的,JDK中提供了經常使用的編程所須要的工具庫,所以Java開發者必須安裝JDK,在JDK的基礎上才能進行Java程序的開發。JDK中包含的一些經常使用的基本組件介紹以下:
● javac:編譯器,將Java源代碼轉換成字節碼文件。
● java:運行編譯後的字節碼文件(解釋器)。
● jar:打包工具,將相關的類文件打包成一個.jar文件。
● javadoc:文檔生成器,從源碼中的文檔註釋提取文檔。
咱們最後來總結一下JVM、JRE和JDK之間的關係,JDK中包含JRE,JRE中包含JVM,如圖所示:
圖JVM、JRE和JDK關係圖