《深入理解JAVA虚拟机》周志明 第三版 - 第一章 走近JAVA
1、java優點
一次編寫、到處運行;相對安全的內存管理和訪問機智;熱點代碼檢索和運行時編譯以及調優;完善的API,多樣的第三方類庫。
2、java體系【廣義】
3、Java發展史
發展時間線圖如下:
4、虛擬機家族
(1)始祖-1996年:Sun Classic/Exact VM 慢
只能使用純解釋型方式來執行代碼,使用即時編譯器需要外掛,使用了外掛解釋器就不能工作。
(2)武林盟主-1997年:HotSpot VM
目前使用范圍最廣,使用熱點代碼探測技術使得即時編譯壓力減小。
(3)小家碧玉:Mobile/Embedded VM
面對移動和嵌入式市場,使用較少,前途不樂觀,多用在功能機上。
(4)天下第二:BEA JRockit/IBM J9 VM
JRockit不包含解釋器,全部代碼即時編譯,被Oracle收購,已不再發展。
J9在設計上全面考慮服務端、桌面應用、嵌入式的多用途虛擬機,依然十分活躍;在職責分離與模塊化上比hot spot優秀,2016年開源后捐獻給了Eclipse基金會管理。
(5)軟硬合璧:BEA Liquid VM/Azul VM
與特定硬件平臺綁定或配合工作的專用虛擬機,或提供特殊的功能特性。
Liquid VM是BEA公司開發的運行在Hypervisor系統上的JRockit虛擬機的版本,不需要操作系統的支持,或者說它自身實現了一個專用操作系統的必要功能,此項目目前已停止。
Azul VM是運行在Azul公司專有硬件系統Vega上的java虛擬機,很優秀,目前已停止。
Zing虛擬機是從HotSPot基礎上獨立開發出的高性能虛擬機,可運行在Linux/X86-64平臺上。
(6)挑戰者:Apache Harmony/Google Android Dalvik VM
只能稱作虛擬機,而不是java虛擬機;Apache Harmony兼容JDK5,JDK6,未通過TCK認證。
Dalvik VM未遵循《Java虛擬機規范》,使用寄存器架構,在Android5.0中被ART取代。
(7)沒有成功,但并非失敗:Microsoft JVM及其他
1997年微軟因為被Sun公司告侵權而要求終止其虛擬機發展,三年后又希望微軟不要這么做。(這波操作屬實令人無語)
(8)百家爭鳴
KVM:強調簡單、輕量、高度可移植,但運行速度較慢
Java Card VM:精簡,支持絕大多數常用加密算法,放入智能卡,SIM卡,銀行卡等
Squawk JM:嵌入式虛擬機實現,
JavaInJava:實驗室性質的虛擬機,用java語言實現java本身的運行環境,只能運行在另一個宿主虛擬機上
Maxin VM:幾乎以Java代碼實現的元循環虛擬機,有先進的即時編譯器和垃圾收集器,是未來代替HotSpot中服務器端編譯器的希望
以及其他很多的虛擬機…………
5、展望未來
(1)無語言傾向:
java最大的優勢在于龐大的用戶群和及其成熟的軟件生態。Graavl VM是跨語言全棧虛擬機,可作為“任何語言”的平臺上使用,是真正意義上和物理計算機相對應的高級語言虛擬機,對輸入中間自動優化,運行時即時編譯優化,優秀的執行效率,發展潛力令人期待。
(2)新一代即時編譯器
HotSpot中含有編譯耗時端但輸出代碼優化低的客戶端編譯器(C1)、編譯耗時長但輸出代碼質量更高的客戶端2(C2),通常會在分層編譯機制下和解釋器相互配合來共同構成執行子系統。JDK10中加入了一個全新的即時編譯器:Graal編譯器,它作為java虛擬機執行代碼的最新引擎,同時為HotSpot和Graal VM注入了更強的驅動力。
(3)向native邁進
小型微服務化,Substrate Vm的出現讓Java逐步開始對提前編譯提供支持,包括了獨立,能異常處理,同步調度,進程管理,內存管理,和JNI訪問等組件,顯著的降低內存和啟動時間。
(4)靈活的胖子
HotSpot經過不斷的更新,一系列的重構和開放,雖然代碼復雜度、體積仍在變大,但其架構未老朽、而是擁有了越來越多的開放性和擴展性。
(5)語言語法持續加強
新版本的Java中越來越出現其他語言中的優秀特性。
接下來呢就是可以自己實戰JDK了,OpenJDK地址:https://openjdk.java.net/
總結
以上是生活随笔為你收集整理的《深入理解JAVA虚拟机》周志明 第三版 - 第一章 走近JAVA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周志明论架构之道:从SOA时代到微服务时
- 下一篇: 【JVM高级特性与最佳实践(第3版)-周