深入理解Java虛擬機器(一)--- Java 與 JVM
阿新 • • 發佈:2018-12-16
Java 特性
1.結構嚴謹,面向物件程式語言
2.跨平臺性
3.較安全的記憶體管理和訪問機制(避免了絕大部分記憶體洩漏和指標越界的問題)
4.實現熱點程式碼檢測和執行時編譯優化
5.擁有一套完整的API介面
6.擁有豐富的第三方庫
JVM 特性
- 基於棧的虛擬機器(Stack-based virtual machine): 大多數流行的計算機架構如 Intel x86 架構和 ARM 架構都是基於暫存器執行的。但是,JVM 是基於棧執行的 。
- 識別符號引用(Symbolic reference): 所有型別(類和介面)除了基本型別(又稱原始型別)都是通過識別符號引用的,而不是通過顯式的基於記憶體地址的引用。
- 垃圾收集(Garbage collection): 一個類例項是由使用者程式碼顯式建立的並通過垃圾收集自動銷燬。
- **明確定義基本資料型別(primitive data type):**JVM 清楚地定義了原始資料型別以維持相容性和保證跨平臺的能力(形如Linux C)。
- 網路位元組順序(Network byte order): Java 類檔案使用網路位元組順序(大端序)。要在 Intel x86 架構採用的 little endian 與 RISC 系列架構採用的 大端序 之間維持平臺獨立,就必須保證固定的位元組序。因此,JVM 使用網路位元組序,它是一種網路傳輸的順序。網路位元組序是 大端序 的。
Java語言與JVM的關係
眾所周知,高階程式語言分為解釋性語言與編譯性語言。
-
編譯性語言:需要將原始碼編譯成機器語言(機器可讀的二進位制檔案),執行時不需要進行翻譯,但是再另一臺機器執行時,需要重新編譯。
-
解釋性語言:解釋性語言的程式不要編譯,但執行時需要直譯器進行翻譯。
但是Java語言是特殊的,既不是編譯性語言,也不是解釋性語言。因為它需要先通過JAVAC命令編譯成JAVA位元組碼,這種位元組碼是機器無法直接讀的二進位制檔案,需要JVM充當直譯器來進行翻譯。所以。JAVA程式是執行在JVM上的,具有跨平臺性。
Java技術體系
JDK(程式開發工具包) : Java程式設計語言 java 虛擬機器 java API 類庫
JRE (程式執行環境) : java 虛擬機器 Java SE API
四種體系平臺
平臺 | 適用物件 |
---|---|
Java Card | 小記憶體裝置 (eg:智慧卡) |
Java ME | 移動終端裝置(eg:Android APP) |
Java SE | 桌面級應用(eg:Windows應用) |
Java EE | 多層架構的企業應用(eg:ERP系統) |