主要內容如下:
- JVM的概念
- JVM發展歷史
- JVM種類
- Java語言規范
- JVM規范
一、JVM的概念:
JVM:
Java Virtual Machine,意為Java虛擬機。
虛擬機:
指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統
有哪些虛擬機:
VMWare、Virtual Box:都是使用軟件模擬物理CPU的指令集
JVM:使用軟件模擬Java 字節碼的指令集
二、JVM發展歷史:
1、Java發展史:
- 1996年:SUN JDK 1.0 Classic VM
純解釋運行,使用外掛進行JIT
- 1997年:JDK1.1 發布
AWT、內部類、JDBC、RMI、反射
- 1998年:JDK1.2 Solaris Exact VM
JIT 解釋器混合
Accurate Memory Management 精確內存管理,數據類型敏感
提升了GC性能
注:JDK1.2開始,稱為Java 2,於是有了J2SE J2EE J2ME 的出現,同時加入Swing Collections。
- 2000年:JDK 1.3,Hotspot 作為默認虛擬機發布
加入JavaSound
- 2002年:JDK 1.4【Java真正走向成熟的一個版本】,Classic VM退出歷史舞台
加入:Assert 正則表達式 NIO IPV6 日志API 加密類庫
- 2004年:JDK 1.5【至關重要的版本】。即 JDK5 、J2SE 5 、Java 5
泛型
注解
枚舉
自動裝箱
可變長參數
Foreach循環
- 2006年:JDK 1.6發布,JDK6
腳本語言支持
JDBC 4.0
Java編譯器 API
- 2011年:JDK7發布
延誤項目推出到JDK8
G1(全新的GC收集器)
動態語言增強
64位系統中的壓縮指針
NIO 2.0
- 2014年:JDK8發布【重要的版本】
Lambda表達式
語法增強 Java類型注解
- 2016年:計划發布JDK9
模塊化
2、重大歷史事件:
- 使用最為廣泛的JVM為HotSpot
HotSpot 為Longview Technologies開發,被SUN收購
- 2006年:Java開源,並建立OpenJDK
HotSpot 成為Sun JDK和OpenJDK中所帶的虛擬機
- 2008年:Oracle收購BEA
得到JRockit VM
- 2009年4月20日:Oracle公司正式宣布以74億美金的價格收購Sun公司。
得到Hotspot
- Oracle宣布在JDK8時整合JRockit和Hotspot,將這兩款優秀的虛擬機取長補短,最終合二為一。
在Hotspot基礎上,移植JRockit優秀特性
三、JVM種類:
1、KVM:
SUN發布
IOS Android興起之前,廣泛用於手機系統
2、CDC/CLDC HotSpot:
手機、電子書、PDA等設備上建立統一的Java編程接口
J2ME的重要組成部分
3、JRockit:
BEA
4、IBM J9 VM:
IBM內部
5、Apache Harmony:
兼容於JDK 1.5和JDK 1.6的Java程序運行平台
與Oracle關系惡劣,退出JCP ,Java社區的分裂
OpenJDK出現后,受到挑戰,2011年退役
沒有大規模商用經歷
對Android的發展有積極作用
四、Java語言規范:
Java語言規范主要體現在以下幾點:
- 語法
- 變量
- 類型
- 文法
五、JVM規范:
JVM主要定義二進制class文件和JVM指令集等。
JVM語言規范主要體現在以下幾點:
- Class文件類型
- 運行時數據
- 幀棧
- 虛擬機的啟動
- 虛擬機的指令集
此外,JVM需要對Java Library 提供以下支持:(因為這些東西沒有辦法通過java語言本身來實現)
- 反射 java.lang.reflect
- ClassLoader
- 初始化class和interface
- 安全相關 java.security
- 多線程
- 弱引用