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