目錄
- 再看前言
- 不完美的程式
- Java發展史
- JVM族譜
- 什么是廣義的虛擬機?
- 什么是Java虛擬機(JVM)?
二刷周先生的《深入理解JVM》時,沒想到已經出了第三版,拿著第二版的我在風中凌亂....
第一次看這本書的時候是在19年的暑假前后,轉眼即將到了20年的暑假,一年里,我也開始做了一些web開發上的作業,然而用到JVM的地方似乎僅僅限于開發環境和服務器的部署環境,這部分的知識偏理論,或者說,沒有需要高強度優化JVM的場景,
不過,養兵千日用兵一時,技術不能等用時再去學,不管是未雨綢繆亦或是杞人憂天,我都決定結合第三版的內容重新整理一下之前的筆記,
再看前言
如果開發人員不了解虛擬機諸多技術特性的運行原理,就無法寫出最適合虛擬機運行和自優化的代碼,
如果把編程比作開槍,那么掌握槍的原理就可能在卡殼的時候迅速解決問題,雖然槍不總是會出現問題,
不完美的程式
世界上并沒有完美的程式,但我們并不因此而沮喪,因為寫程式本來就是一個不斷追求完美的程序.
完成優于完美!
Java發展史
-
1991.4 :Java語言前身Oak誕生
-
1995.5:Oak語言改名為Java
-
1996.1:JDK1.0發布,代表技術包括JVM,Applet,AWT
- Applet是一種Java程式,需要嵌入在HTML中解釋執行
- AWT是早期的抽象視窗工具包,目前流行的有Swing,JavaFx
-
1997.2:JDK1.1發布,代表技術有JAR檔案格式,JDBC,內部類,反射
-
2002.2:JDK1.4發布,新的技術有正則運算式,NIO,日志類
- 正則運算式是對字串操作的一種邏輯格式
- NIO在IO的基礎上增加了緩沖區,是一種非阻塞式的IO模型
-
2004.9:JDK1.5發布,新的技術有自動裝箱,泛型,注解,列舉,foreach回圈
-
2006.11:Sun公司宣布將Java開源,并建立了OpenJDK組織對原始碼進行管理,
-
2009.4:Oracle以74億美元收購Sun公司,
-
2014.3:Oracle發布JDK1.8,新的特性有Lambda運算式,Stream API
-
2017.9:JDK9發布,新特性有模塊化系統,可互動的REPL工具,JIT,JVMCI等等
-
2018.3:JDK10發布,新特性包括JEP286區域變數的型別推斷,JEP317向G1引入Full GC
-
2018.9:JDK11發布,新特性包括基于嵌套的訪問控制,JavaFx被移除【JDK1.8有】
-
2019.3:JDK12發布,新特性有低暫停時間的GC,微基準測驗套件,Switch運算式,
JVM族譜
3.0版本加上了更加形象的比喻
- 虛擬機始祖:Sun Classic,于96年在JDK1.0中發布
- 武林盟主:HotSpot VM,目前使用最廣泛的虛擬機,一直沿用至今
- 小家碧玉:Mobile VM,面對移動領域和嵌入式市場,前景并不樂觀
- 天下第二:BEA公司的JRockit和IBM的J9,其中JRockit被Oracle收購后基本上停止更新了,J9仍然在沿用
- 軟硬合璧:BEA Liquid 運行于特定硬體的虛擬機,擁有更強大的性能
什么是廣義的虛擬機?
虛擬機本質是一種軟體,可分為系統虛擬機(仿真物理機)和程式虛擬機(執行單個計算機程式,比如JVM),
什么是Java虛擬機(JVM)?
JVM是一種將位元組碼轉化為機器碼的軟體,從而實作Java語言跨平臺的目的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117761.html
標籤:Java
