Java、JDK、JRE、JVM
一、 Java
廣義上看,Kotlin、JRuby等運行于Java虛擬機上的編程語言以及相關的程序都屬于Java體系的一員。從傳統意義上看,Java社區規定的Java技術體系包括以下幾個部分:
- Java程序設計語言
- 各種硬件平臺上的Java虛擬機實現
- Class文件格式
- Java類庫API
- 來自商業機構以及開源社區的第三方Java類庫
二、 JDK
JDK(Java Development Kit),Java開發工具包,是支持Java程序開發的最小環境。它提供了JRE、類庫和編譯器、調試器等開發工具,以支持Java開發人員創建和構建各種類型的程序。
三、 JRE
JRE(Java Runtime Environment),Java運行時環境,是支持Java程序運行的標準環境。它包括JVM和Java類庫,用于解釋和執行Java字節碼,并提供了運行Java應用程序所需的基本功能。
四、 JVM
JVM(Java Virtual Machine),Java虛擬機,是Java程序運行的核心組件之一。JVM是一個用于解釋和執行Java字節碼的虛擬計算機,它提供了運行Java程序的環境。
程序員使用JDK開發Java程序,Java程序最終在JRE中的JVM上運行。
五、 Java,編譯型?解釋型?
-
編譯型語言:把源程序編譯成二進制代碼的可執行程序然后運行這個程序,如C、C++。編譯型語言執行速度快、效率高,但依靠編譯器、跨平臺性差些。
-
解釋型語言:源程序翻譯一句執行一句,如Python、JavaScript。解釋型語言執行速度慢、效率低,但依靠解釋器、跨平臺性好。
Java既不屬于傳統的編譯型語言,也不屬于解釋型語言,Java是先將代碼編譯成字節碼文件(“.class”文件),然后再利用JVM對字節碼進行解釋執行,所以Java即可以說成編譯型,也可以說成解釋型。另外,Java是一種動態語言,可以在程序運行時安全地修改它,這對于無法承受任何停機時間的網絡應用程序來說尤其重要。
Java提出了“一次編譯,到處運行”的口號,這個特性便是通過字節碼以及JVM實現的。Java經過編譯后的字節碼由JVM解釋執行,無論硬件配置如何,JVM的設計都遵循統一的規范。因此,Java在編寫時不需要考慮不同架構CPU之間的差異,這為Java的可移植性、跨平臺性提供了極大地便利。比如,對于C語言,在不同硬件平臺上,int類型的變量可表示的范圍不同。但由于JVM的存在,硬件平臺的差異對于Java是不可見的,Java只需要知道JVM中int類型變量的表示范圍即可。