首先來講一下JDK
JDK(Java Development Kit) 是 Java 語言的軟件開發工具包(SDK)。
JDK是整個JAVA的核心,包括了Java運行環境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基礎的類庫(即Java API )。
有如下三種版本:
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 Runtime Environment的簡稱,Java Runtime Environment(包括Java Plug-in)是Sun的產品,包括兩部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是能夠在其上運行、測試和傳輸應用程序的Java平臺。它包括Java虛擬機(jvm)、Java核心類庫和支持文件。它不包含開發工具(JDK)--編譯器、調試器和其它工具。JRE須要輔助軟件--Java Plug-in--以便在瀏覽器中運行applet。
沒有JDK的話,沒法編譯Java程序,但在有JRE環境的系統上能夠運行程序。因此當你只須要運行Java程序或Applet,下載並安裝JRE便可。若是你要自行開發 Java軟件,請下載JDK。瀏覽器
最後再來了解一下JVM
JVM即Java Virtual Machine(Java虛擬機),JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是經過在實際的計算機上仿真模擬各類計算機功能來實現的。
Java語言的一個很是重要的特色就是與平臺的無關性。而使用Java虛擬機是實現這一特色的關鍵。通常的高級語言若是要在不一樣的平臺上運行,至少須要編譯成不一樣的目標代碼。而引入Java語言虛擬機後,Java語言在不一樣平臺上運行時不須要從新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就能夠在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的可以「一次編譯,處處運行」的緣由。
這是三者的關係圖:app
咱們開發的實際狀況是:咱們利用JDK(調用JAVA API)開發了屬於咱們本身的JAVA程序後,經過JDK中的編譯程序(javac)將咱們的文本java文件編譯成JAVA字節碼,在JRE上運行這些JAVA字節碼,JVM解析這些字節碼,映射到CPU指令集或OS的系統調用。jvm