周志明jvm第三版笔记-第一部分:第一章 走进java
生活随笔
收集整理的這篇文章主要介紹了
周志明jvm第三版笔记-第一部分:第一章 走进java
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.1 概述:java過去、現在、未來簡要概述
1.2 java技術體系
Java技術體系包括了以下幾個組成部分:
- Java程序設計語言;
- 各種硬件平臺上的Java虛擬機實現;
- Class文件格式;
- Java類庫API;
- 來自商業機構和開源社區的第三方Java類庫;
上述用圖表示(JDK體系):
按照技術所服務的領域劃分:
- Java Card:支持Java小程序(Applets)運行在小內存設備(如智能卡)上的平臺。
- Java ME(Micro Edition):支持Java程序運行在移動終端(手機、PDA)上的平臺,對Java API有所精簡,并加入了移動終端的針對性支持,這條產品線在JDK 6以前被稱為J2ME。有一點讀者請勿混淆,現在在智能手機上非常流行的、主要使用Java語言開發程序的Android并不屬于Java ME。
- Java SE(Standard Edition):支持面向桌面級應用(如Windows下的應用程序)的Java平臺,提供了完整的Java核心API,這條產品線在JDK 6以前被稱為J2SE。
- Java EE(Enterprise Edition):支持使用多層架構的企業應用(如ERP、MIS、CRM應用)的Java平臺,除了提供Java SE API外,還對其做了大量有針對性的擴充,并提供了相關的部署支持,這條產品線在JDK 6以前被稱為J2EE,在JDK 10以后被Oracle放棄,捐獻給Eclipse基金會管理,此后被稱為Jakarta EE。
1.3 java發展史
具體:可以參考周老師的原書,或者參考《Java核心技術:卷I基礎知識(第10版)》凱S.霍斯特曼,第一章1.4節
1.4 Java虛擬機家族
1.4.1 虛擬機始祖:Sun Classic/Exact VM
- 世界第一款商用java虛擬機;
- 1996你那1月23日正式問世;
- jdk中帶的虛擬機是Classic VM,這款虛擬機是使用解釋方式來執行java代碼,如果要使用即時編譯就必須進行外掛,但是如果使用外掛了即時編譯器的話,即時編譯器會完全接管虛擬機執行系統。即時編譯器包含:sunwjit(Sun Work-shop JIT)、Symantec JIT、shuJIT等;
- 由于解釋器和編譯器不能同時進行工作,故編譯過程漫長,導致“JAVA語言很慢”的印象開始在用戶心中樹立了起來;
- JDK1.2時,曾在Solaris平臺發布過一款名為Exact VM的虛擬機,他的編譯執行系統已經具備現代高性能虛擬機雛形,如熱點探測、兩級即時編譯器、編譯器與解釋器混合工作模式等,但是英雄氣短,后來被外部引用的HotSpot取代;
- JDK1.3時,HotSpot VM為默認虛擬機,但是可以切換到Classic VM虛擬機,直到JDK1.4時候Classic VM退出;
?
1.4.2 武林盟主:HotSpot VM
- 相信所有Java程序員都聽說過HotSpot虛擬機,它是Sun/OracleJDK和OpenJDK中的默認Java虛擬機,也是目前使用范圍最廣的Java虛擬機。但不一定所有人都知道的是,這個在今天看起來“血統純正”的虛擬機在最初并非由Sun公司所開發,而是由一家名為“Longview Technologies”的小公司設計;甚至這個虛擬機最初并非是為Java語言而研發的,它來源于Strongtalk虛擬機,而這款虛擬機中相當多的技術又是來源于一款為支持Self語言實現“達到C語言50%以上的執行效率”的目標而設計的Self虛擬機,最終甚至可以追溯到20世紀80年代中期開發的Berkeley Smalltalk上。Sun公司注意到這款虛擬機在即時編譯等多個方面有著優秀的理念和實際成果,在1997年收購了Longview Technologies公司,從而獲得了HotSpot虛擬機。
....
上述是未加工過的原文,周老師在這一段的前后還有很精彩的描述,讀者自行閱讀吧。
- 2006年,Sun陸續將SunJDK的各個部分在GPLv2協議下開放了源碼,形成了Open-JDK項目,其中當然也包括HotSpot虛擬機。
1.4.3 小家碧玉:Mobile/Embedded VM
目的是應用于移動市場,具體介紹看原文
1.4.4 天下第二:BEA JRockit/IBM J9 VM
分別是BEA System公司和IBM研發,曾與Hotspot并稱“三大虛擬機”:HostSpot VM、JRockit、J9
1.4.5 軟硬合璧:BEA Liquid VM/Azul VM
1.4.6 挑戰者:Apache Harmony/Google Android Dalvik VM
1.4.7 沒有成功,但并非失敗:Microsoft JVM及其他
- 微軟的Microsoft VM是當時windows平臺運行性能最好的java虛擬機;
- sun公司和微軟的官司,最終以sun公司勝出;
1.4.8 百家爭鳴
介紹其他的虛擬機
1.5 展望Java技術的未來
- 倘若Java的未來依舊燦爛精彩,倘若下一個十年本書還更新第4、第5版,亦希望屆時能在附錄中回首今日,去回溯哪些預測成為現實,哪些改進中途夭折;
- Java“天下第一”的底氣不在于語法多么先進好用,而是來自它龐大的用戶群和極其成熟的軟件生態,這在朝夕之間難以撼動;
- 從更嚴格的角度來看,Graal VM才是真正意義上與物理計算機相對應的高級語言虛擬機,理由是它與物理硬件的指令集一樣,做到了只與機器特性相關而不與某種高級語言特性相關。
- 對Java而言,Graal VM本來就是在HotSpot基礎上誕生的,天生就可作為一套完整的符合Java SE 8標準的Java虛擬機來使用。它和標準的HotSpot的差異主要在即時編譯器上,其執行效率、編譯質量目前與標準版的HotSpot相比也是互有勝負
- Graal編譯器未來的前途可期,作為Java虛擬機執行代碼的最新引擎,它的持續改進,會同時為HotSpot與Graal VM注入更快更強的驅動力。
- 即使HotSpot最初設計時考慮得再長遠,大概也不會想到這個虛擬機將在未來的二十年內一直保持長盛不衰。這二十年間有無數改進和功能被不斷地添加到HotSpot的源代碼上,致使它成長為今天這樣的龐然大物。(靈活的胖子)
1.6 實戰:自己編譯JDK
值得參考
總結
以上是生活随笔為你收集整理的周志明jvm第三版笔记-第一部分:第一章 走进java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周志明架构课--01.原始分布式时代
- 下一篇: 深入理解Java虚拟机(周志明第三版)-