Java技術體系 & 發展史(1991 - 2019)

《深入理解Java虛擬機——JVM高級特性與最佳實踐(第三版)》閱讀筆記(一)

概述

Java不僅僅是一門編程語言,它還是一個由一系列計算機軟件和規範組成的技術體系,這個技術體系提供了完整的用於軟件開發和跨平臺部署的支持環境,並廣泛應用於嵌入式系統、移動終端、企業服務器、大型機等多種場合。

下面羅列一下Java的特性和優勢:

  • Java是一門結構嚴謹、面向對象的編程語言
  • 擺脫了硬件平臺的束縛,實現了“一次編寫,到處運行”
  • 提供了一種相對安全的內存管理和訪問機制,避免了絕大部分內存泄漏和指針越界問題
  • 實現了熱點代碼檢測和運行時編譯及優化,這使得Java應用能隨着運行時間的增長而獲得更高的性能
  • 擁有一套完整的應用程序接口,還有無數來自商業機構和開源社區的第三方類庫來幫助用戶實現各種各樣的功能

Java技術體系

從廣義上講,Kotlin、Clojure、JRuby、Groovy等運行於Java虛擬機上的編程語言及其相關的程序都屬於Java技術體系中的一員。從傳統意義上來看,JCP(Java Community Process)官方定義的Java技術體系包括以下幾個組成部分(按功能劃分):

  • Java程序設計語言
  • 各種硬件平臺上的Java虛擬機實現
  • Class文件格式
  • Java類庫API
  • 來自商業機構和開源社區的第三方Java類庫

JDK(Java Development Kit)其實由三部分組成:Java程序設計語言、Java虛擬機和Java類庫。Java類庫API中的JavaSE API子集和Java虛擬機這兩部分統稱爲JRE(Java Runtime Environment),JRE是支持Java程序運行的標準環境。

這裏還可以按服務領域劃分:

  • Java Card:支持Java小程序(Applets)運行在小內存設備(如智能卡)上的平臺
  • Java ME(Micro Edition):支持Java程序運行在移動終端(手機、PDA)上的平臺
  • Java SE(Standard Edition):支持面向桌面級應用(如Windows下的應用程序)的Java平臺
  • Java EE(Enterprise Edition):支持使用多層架構 的企業應用(如ERP、MIS、CRM應用)的Java平臺

Java發展史(1991 - 2019)

  • 1991年4月,由James Gosling博士領導的綠色計劃(Green Project)開始啓動。計劃最初是開發一種能夠在各種消費性電子產品(如機頂盒、冰箱、收音機等)上運行的程序結構。這個計劃的產品就是Java語言的前身:Oak。
  • 1995年5月23日,Oak語言改名爲Java,並且在SunWorld大會上正式發佈Java 1.0版本,並第一次提出口號:“Write Once, Run Anywhere”。
  • 1996年1月23日,JDK 1.0發佈。Java語言有了第一個正式版本的運行環境。JDK 1.0提供了一個純解釋執行的Java虛擬機實現(Sun Classic VM)。JDK 1.0包括:Java虛擬機、Applet、AWT等。
  • 1996年4月,十個最主要的操作系統和計算機供應商聲明將在其產品中嵌入Java技術。
  • 1997年2月19日,Sun公司發佈JDK 1.1版本,內部類(Inner Class)和反射機制(Reflection)出現。
  • 1998年12月4日,代號爲Playground的JDK 1.2版本發佈,Sun公司把Java技術體系拆分爲三個方向:J2SE、J2EE和J2ME。這個版本中Java虛擬機第一次內置了JIT(Just In Time)即時編譯器。
  • 1999年4月27日,HotSpot虛擬機誕生,後來成爲JDK 1.3及之後所有JDK版本的默認虛擬機。
  • 2002年前後,微軟的.NET Framework發佈。這在技術實現和目標用戶上都與Java有着很多的相近之處,因此後來給Java帶來了很多討論、比較和競爭。
  • 2004年,JDK 5發佈,且把JDK 1.x的命名方式改爲JDK x。這個版本加入了:自動裝箱、泛型、動態註解、枚舉、可變長參數、遍歷循環(foreach循環)等。
  • 2006年,JDK 6發佈,Sun公司把沿用8年的產品線命名方式改爲:Java EE 6、Java SE 6和Java ME 6。
  • 2009年,JDK 7完成了第一個里程碑版本。該版本在後來的開發期間,由於Sun公司相繼在技術競爭和商業競爭中陷入泥潭,公司的股票市值跌至僅有高峯時期的3%,最終導致JDK 7無法按計劃完成。另外值得一提的是,JDK 7 Update 6版本可以運行於Windows(不含Windows 9x)、Linux、Solaris和Mac OS X操作系統上,支持ARM、x86、x86-64和SPARC指令集架構,JDK 7也是可以支持Windows XP操作系統的最後一個版本。
  • 2009年4月20日,Oracle宣佈正式以74億美元的價格收購市值曾超過2000億美元的Sun公司。
  • 2014年3月18日,JDK 8的第一個版本發佈,後來“B計劃”中的Jigsaw模塊化功能被延期到了JDK 9。爲了保證JDK研發能更順利地進行,Oracle啓用了JEP(JDK Enhancement Proposals)來定義和管理納入新版JDK發佈範圍的功能特性。
  • 2017年9月21日,JDK 9發佈。此前跳票了多次,後兩次的跳票原因是以IBM和RedHat爲首的十三家企業在JCP執行委員會上聯手否決了Oracle提出的Jigsaw作爲Java模塊化規範進入JDK 9發佈範圍的提案。JDK 9發佈以後,Oracle隨機宣佈Java將會以持續交付的形式和更加敏捷的研發節奏向前推進,以後JDK將會在每年3月和9月各發佈一個大版本,目的是避免衆多功能特性被集中捆綁到一個JDK版本上而引發交付風險。另外,JDK 10以後命名方式改爲年份加月份作爲開發版本號,比如2018年3月的版本命名爲18.3。
  • 2018年3月20日,JDK 10發佈。
  • 2018年3月27日,Android的Java侵權案有了最終判決,法庭裁定Google賠償Oracle合計88億美元,這個官司的主要焦點在於Java API的版權問題。另外,Oracle正式宣佈把Java EE所有權贈送給Eclipse基金會,且不允許使用“Java”這個商標,取而代之的將是Jakarta EE,這導致一堆javax.*。
  • 2018年9月25日,JDK 11發佈。Oracle調整了JDK的授權許可證,並宣佈以後會同時發行兩個JDK:GPLv2+CE協議下發行的OpenJDK和新的OTN協議下發行的OracleJDK,兩者共享絕大部分源碼,功能幾乎一致,核心差異在於前者可以免費在開發、測試或生產環境中使用,但只有半年時間的更新支持,後者個人依然可以免費使用,但若在生產環境中商用就必須付費,可以有三年時間的更新支持。
  • 2019年3月20日,JDK 12發佈,其中主要更新有:Switch表達式、Java微測試套件(JMH)等,另外加入了由RedHat領導開發的Shenandoah垃圾收集器,但在OracleJDK 12裏卻把Shenandoah的代碼通過條件編譯強行剔除掉。

參考資料

《深入理解Java虛擬機——JVM高級特性與最佳實踐(第三版)》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章