<b>1.4 java發展簡史</b>
本節将介紹java的發展簡史。這些内容來自很多出版資料(最重要的是sunworld的線上雜志1995年7月刊上對java建立者的專訪)。
java的曆史要追溯到1991年,由patrick naughton和james gosling(一個全能的計算機奇才)帶領的sun公司的工程師小組想要設計一種小型的計算機語言,主要用于像有線電視轉換盒這類的消費裝置。由于這些消費裝置的處理能力和記憶體都很有限,是以語言必須非常小且能夠生成非常緊湊的代碼。另外,由于不同的廠商會選擇不同的中央處理器(cpu),是以這種語言的關鍵是不與任何特定的體系結構捆綁在一起。這個項目被命名為“green”。
代碼短小、緊湊且與平台無關,這些要求促使開發團隊設計一個可移植的語言,可以為虛拟機生成中間代碼。
不過,sun公司的人都有unix的應用背景。是以,所開發的語言以c++為基礎,而不是lisp、smalltalk或pascal。不過,就像gosling在專訪中談到的:“畢竟,語言隻是實作目标的工具,而不是目标本身”。gosling把這種語言稱為“oak”(這麼起名的原因大概是因為他非常喜歡自己辦公室外的橡樹)。sun公司的人後來發現oak是一種已有的計算機語言的名字,于是,将其改名為java。事實證明這是一個很有靈感的選擇。
1992年,green項目釋出了它的第一個産品,稱之為“*7”。這個産品具有非常智能的遠端控制。遺憾的是,sun公司對生産這個産品并不感興趣,green項目組的人員必須找出其他的方法來将他們的技術推向市場。然而,沒有一個标準消費品電子公司對此感興趣。于是,green項目組競标了一個提供視訊點播等新型服務的有線電視盒的項目,但沒有成功(有趣的是,得到這個項目的公司的上司恰恰是開創netscape公司的jim clark。netscape公司後來對java的成功給予了很大的幫助)。
green項目(這時換了一個新名字——“first person公司”)花費了1993年一整年以及1994年的上半年,一直在苦苦尋求其技術的買家。然而,一個也沒有找到(patrick naughton,項目組的創立人之一,也是完成此項目大多數市場工作的人,聲稱為了銷售這項技術,累計飛行了300 000英裡)。1994年first person公司解散了。
當這一切在sun公司發生的時候,internet的網際網路也在日漸發展壯大。網際網路的關鍵是把超文本頁面轉換到螢幕上的浏覽器。1994年大多數人都在使用mosaic,這是一個1993年出自伊利諾斯大學超級計算中心的非商業化的web浏覽器(mosaic的一部分是由marc andreessen編寫的。當時,他作為一名參加半工半讀項目的大學生,編寫了這個軟體,每小時的薪水隻有6.85美元。他後來成了netscape公司的創始人之一和技術總監,可謂名利雙收)。
在接受sunworld采訪的時候,gosling說在1994年中期,java語言的開發者意識到:“我們能夠建立一個相當酷的浏覽器。我們已經擁有在客戶機/伺服器主流模型中所需要的體系結構中立、實時、可靠、安全——這些在工作站環境并不太重要,是以,我們決定開發浏覽器。”
實際的浏覽器是由patrick naughton和jonathan payne開發的,并演變為hotjava浏覽器。為了炫耀java語言超強的能力,hotjava浏覽器采用java編寫。設計者讓hotjava浏覽器具有在網頁中執行内嵌代碼的能力。這一“技術印證”在1995年5月23日的sunworld上得到展示,同時引發了人們延續至今的對java的狂熱追逐。
1996年年初,sun釋出了java的第1個版本。人們很快地意識到java1.0不能用來進行真正的應用開發。的确,可以使用java 1.0來實作在畫布上随機跳動的神經質的文本applet,但它卻沒有提供列印功能。坦率地說,java 1.0的确沒有為其黃金時期的到來做好準備。後來的java 1.1彌補了其中的大多明顯的缺陷,大大改進了反射能力,并為gui程式設計增加了新的事件處理模型。不過它仍然具有很大的局限性。
1998年javaone會議的頭号新聞是即将釋出java 1.2版。這個版本取代了早期玩具式的gui,并且它的圖形工具箱更加精細而具有可伸縮性,更加接近“一次編寫,随處運作”的承諾。在1998年12月java 1.2釋出三天之後,sun公司市場部将其名稱改為更加吸引人的“java
2标準版軟體開發工具箱1.2版”。
除了“标準版”之外,sun還推出了兩個其他的版本:一個是用于手機等嵌入式裝置的“微型版”;另一個是用于伺服器端處理的“企業版”。本書主要講述标準版。
标準版的1.3和1.4版本對最初的java 2版本做出了某些改進,擴充了标準類庫,提高系統性能。當然,還修正了一些bug。在此期間,java applet采用低調姿态,并淡化了用戶端的應用,但java卻成為伺服器端應用的首選平台。
5.0版是自1.1版以來第一個對java語言做出重大改進的版本(這一版本原來被命名為1.5版,在2004年的javaone會議之後,版本數字升至5.0)。經曆了多年的研究,這個版本添加了泛型類型(generic type)(類似于c++的模闆),其挑戰性在于添加這一特性并沒有對虛拟機做出任何修改。另外,還有幾個受c#啟發的很有用的語言特性:“for
each”循環、自動裝箱和注解。
版本6(沒有字尾.0)于2006年年末釋出。同樣,這個版本沒有對語言方面再進行改進。但是,改進了其他性能,并增強了類庫。
随着資料中心越來越依賴于商業硬體而不是專用伺服器,sun microsystems終于淪陷,于2009年被oracle收購。java的開發停滞了很長一段時間。直到2011年oracle釋出了java的一個新版本,java 7,其中隻做了一些簡單的改進。
2014年,java 8終于釋出,在近20年中這個版本有了最大的改變。java
8提供了一種“函數式”程式設計方式,可以很容易地表述并發執行的計算。所有程式設計語言都必須與時俱進,java在這方面顯示出非凡的能力。
表1-1展示了java語言以及類庫的發展狀況。可以看到,應用程式程式設計接口(api)的規模發生了驚人的變化。
表1-1 java語言的發展狀況
版 本 年 份 語言新特性 類與接口的數量
1.0 1996 語言本身 211
1.1 1997 内部類 477
1.2 1998 strictfp修飾符 1524
1.3 2000 無 1840
1.4 2002 斷言 2723
5.0 2004 泛型類、“for each”循環、可變元參數、自動裝箱、中繼資料、枚舉、靜态導入 3279
6 2006 無 3793
7 2011 基于字元串的switch、鑽石操作符、二進制字面量、異常處理改進 4024
8 2014 lambda表達式,包含預設方法的接口,流和日期/時間庫 4240