
1.JVM(Java Virtual Machine),Java虛擬機(jī)。當(dāng)使用Java編譯器編譯Java程序時,生成的是與平臺無關(guān)的字節(jié)碼,這些字節(jié)碼只面向JVM。不同平臺的JVM都是不同的,但它們都提供了相同的接口。JVM是Java程序跨平臺的關(guān)鍵部分,只要為不同平臺實現(xiàn)了相應(yīng)的虛擬機(jī),編譯后的Java字節(jié)碼就可以在該平臺上運行。
2.JRE(Java Runtime Environment) ,Java運行環(huán)境,包含JVM標(biāo)準(zhǔn)實現(xiàn)及Java核心類庫。JRE是Java運行環(huán)境,并不是一個開發(fā)環(huán)境,所以沒有包含任何開發(fā)工具(如編譯器和調(diào)試器),光有JVM還不能成class的執(zhí)行,因為在解釋class的時候JVM需要調(diào)用解釋所需要的類庫lib。 (jre里有運行.class的java.exe)。
3.JDK(Java Development Kit),Java標(biāo)準(zhǔn)開發(fā)包。它提供了Java運行環(huán)境(JRE),一堆Java工具(javac/java/jdb等)和Java基礎(chǔ)的類庫(即Java API 包括rt.jar等)。其中安裝目錄下的主要文件有:

4.Java IDE(Java?Integrated Development Environment),Java集成開發(fā)環(huán)境。主流的Java集成開發(fā)環(huán)境有:Eclipse,Spring Boot Suite(STS),IntelliJ IDEA,Netbeans IDE等。
5.JVM,JRE,JDK之間的調(diào)用關(guān)系:JVM不能單獨搞定class的執(zhí)行,解釋class的時候JVM需要調(diào)用解釋所需要的類庫lib。在JDK下面的的jre目錄里面有兩個文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。JVM+Lib=JRE??傮w來說就是,我們利用JDK(調(diào)用JAVA API)開發(fā)了屬于我們自己的JAVA程序后,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節(jié)碼,在JRE上運行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼,映射到CPU指令集或OS的系統(tǒng)調(diào)用。
6.JRE與JDK的區(qū)別:JDK 用于開發(fā),JRE 用于運行java程序 ,如果只是運行Java程序,可以只安裝JRE,無序安裝JDK。在bin文件夾下會發(fā)現(xiàn),JDK有javac.exe而JRE里面沒有,javac指令是用來將java文件編譯成class文件的,這是開發(fā)者需要的,而用戶(只需要運行的人)是不需要的。JDK還有jar.exe, javadoc.exe等等用于開發(fā)的可執(zhí)行指令文件。這也證實了一個是開發(fā)環(huán)境,一個是運行環(huán)境。