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系統) |