當前位置:才華齋>計算機>java語言>

Java發展史之Java的由來

java語言 閱讀(3.05W)

Java發展史之Java的由來

Java發展史之Java的由來

Java:由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平臺的總稱。Java語言是一種可以撰寫跨平臺應用軟體的面向物件的程式設計語言,由當時任職太陽微系統的詹姆斯·高斯林(James Gosling)等人於1990年代初開發,它最初被命名為Oak。Java伴隨著網際網路的迅猛發展而發展,逐漸成為重要的網路程式語言。

Java從第一個版本誕生到現在已經有十九年的時間了。時間若白駒過隙,轉瞬即逝。彈指間19年過去了,在下圖所展示的時間線中,我們看到JDK已經發展到了1.8版。在這19年裡還誕生了無數和Java相關的產品、技術和標準。現在讓我們走入時間隧道,從孕育Java語言的時代開始,回顧一下Java的發展軌跡和歷史變遷。

1991年4月,由James Gosling博士領導的綠色計劃(Green Project)開始啟動,此計劃的目的是開發一種能夠在各種消費性電子產品(如機頂盒、冰箱、收音機等)上執行的程式架構。這個計劃的產品就是Java語言的前身:Oak(橡樹)。Oak當時在消費品市場上並不算成功,但隨著1995年網際網路潮流的興起,Oak迅速找到了最適合自己發展的市場定位並蛻變成為Java語言。

1995年5月23日,Oak語言改名為Java,並且在SunWorld大會上正式釋出Java 1.0版本。Java語言第一次提出了“Write Once,Run Anywhere”的口號。

1996年1月23日,JDK 1.0釋出,Java語言有了第一個正式版本的執行環境。JDK 1.0提供了一個純解釋執行的Java虛擬機器實現(Sun Classic VM)。JDK 1.0版本的代表技術包括:Java虛擬機器、 、AWT等。

1996年4月,10個最主要的作業系統供應商申明將在其產品中嵌入Java技術。同年9月,已有大約8.3萬個網頁應用了Java技術來製作。在1996年5月底,Sun公司於美國舊金山舉行了首屆JavaOne大會,從此JavaOne成為全世界數百萬Java語言開發者每年一度的技術盛會。

1997年2月19日,Sun公司釋出了JDK 1.1,Java技術的一些最基礎的支撐點(如JDBC等)都是在JDK 1.1版本中釋出的,JDK 1.1版的技術代表有:JAR檔案格式、JDBC、JavaBeans、RMI。Java語法也有了一定的發展,如內部類(Inner Class)和反射(Reflection)都是在這個時候出現的。

直到1999年4月8日,JDK 1.1一共釋出了1.1.0~1.1.8九個版本。從1.1.4之後,每個JDK版本都有一個自己的名字(工程代號),分別為:JDK 1.1.4 - Sparkler(寶石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比蓋爾,女子名)、JDK 1.1.7 - Brutus(布魯圖,古羅馬政治家和將軍)和JDK 1.1.8 – Chelsea(切爾西,城市名)。

1998年12月4日,JDK迎來了一個里程碑式的版本JDK 1.2,工程代號為Playground(競技場),Sun在這個版本中把Java技術體系拆分為3個方向,分別是面向桌面應用開發的J2SE(Java 2 Platform, Standard Edition)、面向企業級開發的J2EE(Java 2 Platform, Enterprise Edition)和麵向手機等移動終端開發的J2ME(Java 2 Platform, Micro Edition)。在這個版本中出現的代表性技術非常多,如EJB、Java Plug-in、Java IDL、Swing等,並且這個版本中Java虛擬機器第一次內建了JIT(Just In Time)編譯器(JDK 1.2中曾並存過3個虛擬機器,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平臺出現過;後面兩個虛擬機器都是內建JIT編譯器的,而之前版本所帶的Classic VM只能以外掛的形式使用JIT編譯器)。在語言和API級別上,Java添加了strictfp關鍵字與現在Java編碼之中極為常用的一系列Collections集合類。

在1999年3月和7月,分別有JDK 1.2.1和JDK 1.2.2兩個小版本釋出。

1999年4月27日,HotSpot虛擬機發布,HotSpot最初由一家名為“Longview Technologies”的小公司開發,因為HotSpot的優異表現,這家公司在1997年被Sun公司收購了。HotSpot虛擬機發布時是作為JDK 1.2的`附加程式提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的預設虛擬機器。

2000年5月8日,工程代號為Kestrel(美洲紅隼)的JDK 1.3釋出,JDK 1.3相對於JDK 1.2的改進主要表現在一些類庫上(如數學運算和新的Timer API等),JNDI服務從JDK 1.3開始被作為一項平臺級服務提供(以前JNDI僅僅是一項擴充套件),使用CORBA IIOP來實現RMI的通訊協議,等等。這個版本還對Java 2D做了很多改進,提供了大量新的Java 2D API,並且新添加了JavaSound類庫。JDK 1.3有1個修正版本JDK 1.3.1,工程代號為Ladybird(瓢蟲),於2001年5月17日釋出。

自從JDK 1.3開始,Sun維持了一個習慣:大約每隔兩年釋出一個JDK的主版本,以動物命名,期間釋出的各個修正版本則以昆蟲作為工程名稱。

2002年2月13日,JDK 1.4釋出,工程代號為Merlin(灰背隼)。JDK 1.4是Java真正走向成熟的一個版本,Compaq、Fujitsu、SAS、Symbian、IBM等著名公司都有參與甚至實現自己獨立的JDK 1.4。哪怕是在十多年後的今天,仍然有許多主流應用(Spring、Hibernate、Struts等)能直接執行在JDK 1.4之上,或者繼續釋出能執行在JDK 1.4上的版本。JDK 1.4同樣釋出了很多新的技術特性,如正則表示式、異常鏈、NIO、日誌類、 解析器和XSLT轉換器等。

JDK 1.4有兩個後續修正版:

2002年9月16日釋出的工程代號為Grasshopper(蚱蜢)的JDK 1.4.1

2003年6月26日釋出的工程代號為Mantis(螳螂)的JDK 1.4.2。

2002年前後還發生了一件與Java沒有直接關係,但事實上對Java的發展程序影響很大的事件,那就是微軟公司的 work釋出了。這個無論是技術實現上還是目標使用者上都與Java有很多相近之處的技術平臺給Java帶來了很多討論、比較和競爭,平臺和Java平臺之間聲勢浩大的孰優孰劣的論戰到目前為止都在繼續。

2004年9月30日,JDK 1.5釋出,工程代號Tiger(老虎)。從JDK 1.2以來,Java在語法層面上的變換一直很小,而JDK 1.5在Java語法易用性上做出了非常大的改進。例如,自動裝箱、泛型、動態註解、列舉、可變長引數、遍歷迴圈(foreach迴圈)等語法特性都是在JDK 1.5中加入的。在虛擬機器和API層面上,這個版本改進了Java的記憶體模型(Java Memory Model,JMM)、提供了urrent併發包等。另外,JDK 1.5是官方宣告可以支援Windows 9x平臺的最後一個JDK版本。

2006年12月11日,JDK 1.6釋出,工程代號Mustang(野馬)。在這個版本中,Sun終結了從JDK 1.2開始已經有8年曆史的J2EE、J2SE、J2ME的命名方式,啟用Java SE 6、Java EE 6、Java ME 6的命名方式。JDK 1.6的改進包括:提供動態語言支援(通過內建Mozilla Java Rhino引擎實現)、提供編譯API和微型HTTP伺服器API等。同時,這個版本對Java虛擬機器內部做了大量改進,包括鎖與同步、垃圾收集、類載入等方面的演算法都有相當多的改動。

在2006年11月13日的JavaOne大會上,Sun公司宣佈最終會將Java開源,並在隨後的一年多時間內,陸續將JDK的各個部分在GPL v2(GNU General Public License v2)協議下公開了原始碼,並建立了OpenJDK組織對這些原始碼進行獨立管理。除了極少量的產權程式碼(Encumbered Code,這部分程式碼大多是Sun本身也無許可權進行開源處理的)外,OpenJDK幾乎包括了Sun JDK的全部程式碼,OpenJDK的質量主管曾經表示,在JDK 1.7中,Sun JDK和OpenJDK除了程式碼檔案頭的版權註釋之外,程式碼基本上完全一樣,所以OpenJDK 7與Sun JDK 1.7本質上就是同一套程式碼庫開發的產品。

JDK 1.6釋出以後,由於程式碼複雜性的增加、JDK開源、開發JavaFX、經濟危機及Sun收購案等原因,Sun在JDK發展以外的事情上耗費了很多資源,JDK的更新沒有再維持兩年釋出一個主版本的發展速度。JDK 1.6到目前為止一共釋出了37個Update版本,最新的版本為Java SE 6 Update 37,於2012年10月16日釋出。

2009年2月19日,工程代號為Dolphin(海豚)的JDK 1.7完成了其第一個里程碑版本。根據JDK 1.7的功能規劃,一共設定了10個里程碑。最後一個里程碑版本原計劃於2010年9月9日結束,但由於各種原因,JDK 1.7最終無法按計劃完成。

從JDK 1.7最開始的功能規劃來看,它本應是一個包含許多重要改進的JDK版本,其中的Lambda專案(Lambda表示式、函數語言程式設計)、Jigsaw專案(虛擬機器模組化支援)、動態語言支援、GarbageFirst收集器和Coin專案(語言細節進化)等子專案對於Java業界都會產生深遠的影響。在JDK 1.7開發期間,Sun公司由於相繼在技術競爭和商業競爭中都陷入泥潭,公司的股票市值跌至僅有高峰時期的3%,已無力推動JDK 1.7的研發工作按正常計劃進行。為了儘快結束JDK 1.7長期“跳票”的問題,Oracle公司收購Sun公司後不久便宣佈將實行“B計劃”,大幅裁剪了JDK 1.7預定目標,以便保證JDK 1.7的正式版能夠於2011年7月28日準時釋出。“B計劃”把不能按時完成的Lambda專案、Jigsaw專案和Coin專案的部分改進延遲到JDK 1.8之中。最終,JDK 1.7的主要改進包括:提供新的G1收集器(G1在釋出時依然處於Experimental狀態,直至2012年4月的Update 4中才正式“轉正”)、加強對非Java語言的呼叫支援(JSR-292,這項特性到目前為止依然沒有完全實現定型)、升級類載入架構等。

到目前為止,JDK 1.7已經發布了9個Update版本,最新的Java SE 7 Update 9於2012年10月16日釋出。從Java SE 7 Update 4起,Oracle開始支援Mac OS X作業系統,並在Update 6中達到完全支援的程度,同時,在Update 6中還對ARM指令集架構提供了支援。至此,官方提供的JDK可以運行於Windows(不含Windows 9x)、Linux、Solaris和Mac OS平臺上,支援ARM、x86、x64和Sparc指令集架構型別。

2009年4月20日,Oracle公司宣佈正式以74億美元的價格收購Sun公司,Java商標從此正式歸Oracle所有(Java語言本身並不屬於哪間公司所有,它由JCP組織進行管理,儘管JCP主要是由Sun公司或者說Oracle公司所領導的)。由於此前Oracle公司已經收購了另外一家大型的中介軟體企業BEA公司,在完成對Sun公司的收購之後,Oracle公司分別從BEA和Sun中取得了目前三大商業虛擬機器的其中兩個:JRockit和HotSpot,Oracle公司宣佈在未來1~2年的時間內,將把這兩個優秀的虛擬機器互相取長補短,最終合二為一。可以預見在不久的將來,Java虛擬機器技術將會產生相當巨大的變化。

2011年7月28日,Oracle公司釋出Java SE 1.7

2014年3月18日,Oracle公司發表Java SE 1.8

Java語言有下面一些特點 :簡單、面向物件、分散式、解釋執行、魯棒、安全、體系結構中立、可移植、高效能、多執行緒以及動態性。