1、jvm:java虛擬機,負責把.class 二進制文件翻譯成不同系統上的機器操作指令。因此JVM實現了java的跨平台運行,它把它可識別的.class 文件在不同平台上翻譯成不同的機器操作指令,可以在windows、linux上等不同平台上運行。jvm負責把class文件加載進內存, 它包含類加載器子系統,運行時數據區:方法區(靜態區)、堆(new的對象)、棧(局部變量和方法的中間結果)、程序計數器、本地方法,垃圾回收系統、執行引擎。
2、jre:java運行環境,它包含了jvm和java項目運行所需要的java 類庫, java.util java.sql java.long java.net 等。如果不編譯只運行,那么有jre就可以了,java 命令負責拉起 JVM。
3、jdk:包含jre和編譯等開發java項目所需要的一些工具,這些工具都在 jdk安裝目錄下的 bin目錄下,包括 javac.exe java.exe jar.exe jvisiovm.exe、jconsole 等負責 編譯、運行 和項目調試等。
在eclipse中執行 run as java application的時候,其實是調用 jdk的 java exe,javac 命令工具,根據 .classpath 的配置去找項目的本身的class文件和依賴的jar包的文件(classpath 里會去maven倉庫里找依賴的jar包,不是找 targer下的lib包),然后執行的。
classpath配置的是java類庫的位置以及執行字節碼文件時查找文件的路徑。 Java執行環境本身就是一個平台,執行於這個平台上的程序是已編譯完成的Java程序( 會以.class文件存在)。