Java中總有幾個術語,平時說的多,但是還是讓人有點摸不着頭腦,今天就來解析一下他們的區別:
l JDK:Java development toolkit,是 Java 語言的軟件開發工具包(SDK)。這里面包含了JAVA的運行環境(jre),JAVA工具(javac/java/jdb等)和JAVA基礎的類庫(即Java API 包括rt.jar)。
看到沒?JDK包含了JRE和Java API!所以,JDK可以說是包羅萬象。
l JRE:Java Runtime Environment,是運行基於Java語言編寫的程序所不可缺少的運行環境。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是運行Java程序的必要組件。
這個就是說JRE包含了JVM,同時它只是個運行環境(其實 主要是 JVM在它上面運行,Java程序都是在jvm上運行的),抱 Java程序可以 運行,那自然就沒有各種開發工具(編譯器、調試器等等)
l JVM:java virtual machine,就是我們常說的java虛擬機,它是整個java實現跨平台的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。也就是說class並不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。
注意:只有JVM還不能成class的執行,因為在解釋class的時候 JVM需要調用解釋所需要的類庫lib,而jre包含lib類庫。JVM屏 蔽了與 具體操作系統平台相關的信息,使得Java程序只需生成在Java虛擬機上運 行的目標代碼(字節碼),就可以在多種平台上不加修改地運行
l J2se:Java 2 Standard Edition是Java的標准版,用於標准的應用開發;其實是一個官方的標准,符合這個標准的產品叫“實現”。由於J2SE是標准版,所以只有JDK就可以實現。
l J2me:Java 2 Micro Edition是Java的微型版,常用於手機上的開發;其實是一個官方的標准,符合這個標准的產品叫“實現”。因為用於嵌入式開發,所以J2ME會有其他的標准,而滿足這個標准的就是實現了J2me,支持J2ME。
l J2ee:Java 2 Enterprise Edition是Java的一種企業版用於企業級的應用服務開發;其實是一個官方的標准,符合這個標准的產品叫“實現”。因為用於企業級開發,所以J2EE會有比JDK更加強大的標准,而滿足這個標准的就是實現了J2EE,支持J2EE,比如jboss,weblogic。
l Java API:Application Programming Interface,應用程序編程接口是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節
運行Java程序時,虛擬機裝載程序的class文件所使用的Java API class文件。所有被裝載的class文件(包括從應用程序中和從Java API中提取的)和所有已經裝載的動態庫(包含本地方法)共同組成了在Java虛擬機上運行的整個程序。 在一個平台能夠支持Java程序以前,必須在這個特定平台上明確地實現API的功能。為訪問主機上的本地資源,Java API調用了本地方法。由於Java API class文件調用了本地方法,Java程序就不需要再調用它們了。通過這種方法,Java API class文件為底層主機提供了具有平台無關性、標准接口的Java程序。對Java程序而言,無論平台內部如何,Java API都會有同樣的表現和可預測的行為。正是由於在每個特定的主機平台上明確地實現了Java虛擬機和Java API,
