天天看點

java 核心技術 卷Ⅰ- 1.4 Java 發展簡史

作者:邯鴿宗gwc

本節将介紹 Java 的發展簡史。這些内容來自很多已釋出的資料(最重要的是 SunWorld的線上雜志 1995 年 7 月刊上對 Java 創始人的專訪)。

Java 的曆史要追溯到 1991 年。由 Patrick Naughton 和 James Gosling(一個全能的計算機奇才,Sun 公司會士)帶領的 Sun 公司的一個工程師小組想要設計一種小型的計算機語言,希望用于有線電視轉換盒之類的消費裝置。由于這些消費裝置的處理能力和記憶體都很有限,是以這個語言必須非常小,而且要能夠生成很緊湊的代碼。另外,由于不同的廠商會選擇不同的中央處理器(CPU),是以很重要的一點是這種語言不應與任何特定的體系結構綁定。這個項目被命名為“Green”。

代碼短小、緊湊且與平台無關,這些要求促使開發團隊設計出一個可移植的語言,可以為虛拟機生成中間代碼。

Sun 公司的人都有 UNIX 的應用背景。是以,所開發的語言以 C++ 為基礎,而不是Lisp、Smalltalk 或 Pascal。不過,正如 Gosling 在專訪中談道:“畢竟,語言隻是實作目标的工具,而不是目标本身。”Gosling 把這種語言稱為“ Oak”(這麼起名大概是因為他非常喜歡他在 Sun 公司的辦公室窗外的一棵橡樹)。Sun 公司的人後來發現,已經有另外一個計算機語言取名為 Oak,于是,他們将這個語言改名為 Java。事實證明這是一個很有靈感的選擇。

1992 年,Green 項目釋出了它的第一個産品,稱之為“ *7”。這個産品可以提供非常智能的遠端控制。遺憾的是,Sun 公司對生産這個産品并不感興趣,Green 項目組的人員必須找到其他方法将他們的技術推向市場。然而,也沒有任何一家标準消費品電子公司對此感興趣。于是,Green 項目組投标了一個設計有線電視盒的項目,它能提供視訊點播等新型有線服務,但他們沒能拿到這個合同(有趣的是,得到這個項目的公司的上司人恰恰是開創Netscape 公司的 Jim Clark。Netscape 公司後來對 Java 的成功做出了很大貢獻)。

在 1993 年以及 1994 年的上半年,Green 項目(這時候換了一個新名字—“First Person公司”)一直在苦苦尋求買家購買他們的技術。然而,一個也沒有找到(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 浏覽器。HotJava 浏覽器采用 Java 編寫,以炫耀 Java 語言超強的能力。這個浏覽器能夠在網頁中執行内嵌的 Java 代碼。這一“技術證明”在 1995 年 5 月 23 日的 SunWorld’95 大會上展示,引發了人們對 Java 的狂熱追逐并延續至今。

1996 年年初,Sun 公司釋出了 Java 的第 1 個版本。人們很快地意識到 Java 1.0 不能用來完成真正的應用開發。的确,可以使用 Java 1.0 實作在畫布上随機跳動的“神經質文本”applet,但它沒有提供列印功能。坦率地說,Java 1.0 的确沒有為其黃金時期的到來做好準備。後來的 Java 1.1 彌補了大多明顯的缺陷,大大改進了反射能力,并為 GUI 程式設計增加了新的事件處理模型。不過它仍然有很大的局限性。

1998 年 JavaOne 會議的頭号新聞是即将釋出 Java 1.2 版。這個版本将早期玩具式的 GUI和圖形工具包代之以複雜而且可伸縮的工具包。在 1998 年 12 月 Java 1.2 釋出僅 3 天之後,Sun 公司市場部将它改名為更加吸引人的“Java 2 标準版軟體開發包 1.2 版”。

除了“标準版”(Standard Edition)之外,Sun 公司還推出了另外兩個版本:一個是用于手機等嵌入式裝置的“微型版”(Micro Edition);另一個是用于伺服器端處理的“企業版”(Enterprise Edition)。本書主要介紹标準版。

标準版的 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 公司終于陷入困境,于2009 年被 Oracle 公司收購。Java 的開發停滞了很長一段時間。直到 2011 年 Oracle 公司釋出了 Java 的一個新版本—Java 7,其中隻做了一些簡單的改進。

2014 年,Java 8 終于釋出,在近 20 年中這個版本的改變最大。Java 8 包含了一種“函數式”程式設計方式,可以很容易地表述能并發執行的計算。所有程式設計語言都必須與時俱進,Java在這方面顯示出了非凡的能力。

Java 9 的主要特性要一直追溯到 2008 年。那時,Java 平台的首席工程師 Mark Reinhold開始着力解析這個龐大的 Java 平台。為此引入了子產品(module),子產品是提供一個特定功能的自包含代碼單元。設計和實作一個适用于 Java 平台的子產品系統前後用了 11 年,而它是否也适用于 Java 應用和類庫還有待觀察。Java 9 于 2017 年釋出,它還提供了另外一些吸引人的特性,我們将在本書中介紹這些特性。

從 2018 年開始,每 6 個月就會釋出一個 Java 版本,以支援更快地引入新特性。每過一段時間,會把某個版本(如 Java 11 和 Java 17)指定為長期支援版本。中間版本提供了一種試驗新特性的機制。

表 1-1 展示了 Java 語言及類庫的演進。可以看到,API 的規模有了驚人的增長。

java 核心技術 卷Ⅰ- 1.4 Java 發展簡史
java 核心技術 卷Ⅰ- 1.4 Java 發展簡史