Java 版本遷移


Java最早是Sun公司「綠色專案」(Green Project)中撰寫Star7應用程式的一個程式語言,當時的名稱不是Java,而是取名為Oak。

綠色專案始於1990年12月,由Patrick Naughton、Mike Sheridan與James Gosling1主持,目的是希望構築出下一波電腦應用的趨勢並加以掌握,他們認為下一波電腦應用的趨勢將會集中在消費性數位產品(像是今日的PDA、手機等消費性電子商品)的使用上,在1992年9月3日Green Team專案小組展示了Star7手持設備,這個設備具備了無線網路連接、5吋LCD彩色螢幕、PCMCIA介面等功能,而Oak在綠色專案中的目的,是用來撰寫Star7上應用程式的程式語言。

Oak名稱的由來,是因為James Gosling的辦公室窗外有一顆橡樹(Oak),就順手取了這個名稱。但後來發現Oak名稱已經被註冊了,工程師們邊喝咖啡邊討論著新的名稱,最後靈機一動而改名為Java這個名稱。

Java本身會見到許多為了節省資源而作的設計,像是動態載入類別檔案、字串池(String pool)等特性,這是因為Java一開始就是為了消費性數位產品而設計,而這類小型裝置通常有著有限的記憶體與運算資源。


全球資訊網(World Wide Web)興起,Java Applet成為網頁互動技術代表。


1993年第一個全球資訊網瀏覽器Mosaic誕生,James Gosling認為網際網路與Java的一些特性不謀而合,利用Java Applet在瀏覽器上展現互動性的媒體,在當時而言,對人們的視覺感官是一種革命性的顛覆,Green Team仿照了Mosaic開發出一個以Java技術為基礎的瀏覽器WebRunner(原命名為BladeRunner),後來改名為HotJava,雖然HotJava只是一個展示性的產品,但它使用Java Applet展現的多媒體效果馬上吸引了許多人的注意。

1995年5月23日2,正式將Oak改名為Java,Java Development Kits(當時的JDK全名)1.0a2版本正式對外發表,而在1996年Netscape Navigator 2.0也正式支援Java,Microsoft Explorer亦開始支援Java,從此Java在網際網路的世界中逐漸風行起來,雖然Star7產品並不被當時的消費性市場接受,綠色專案面臨被裁撤的命運,然而全球資訊網(World Wide Web)的興起卻給了Java新的生命與舞台。

隨著Java越來越受到矚目,Sun在1998/12/4年發佈Java 2 Platform,簡稱J2SE 1.2,Java開發者版本一開始是以Java Development Kit名稱發表,簡稱JDK,而J2SE則是平台名稱,包含了JDK與Java程式語言。


Java平台標準版約每兩年為週期推出重大版本更新,1998/12/4發表J2SE 1.2,2000/5/8發表J2SE 1.3,2002/2/13發表J2SE 1.4,「Java 2」這個名稱也從J2SE 1.2一直延用至之後各個版本。


2004/9/29發表的Java平台標準版的版號不是1.5,而直接跳到5.0,稱為J2SE 5.0,這是為了彰顯這個版本與之前版本有極大不同,像是語法上的簡化、增加泛型(Generics)、列舉(Enum)、標註(Annotation)等重大功能。


2006/12/11發表的Java平台標準版,除了版號之外,名稱也有了變化,稱為Java Platform, Standard Edition 6,簡稱Java SE 6,JDK6全名則稱為Java SE Development Kit 6,也就是不再像以前Java 2帶有"2"這個號碼,版本號6或1.6.0都使用,6是產品版本(Product version),而1.6.0是開發者版本(Developer version)。

大部份的Java標準版平台都會取個代碼名稱(Code name),例如J2SE 5.0的代碼名稱為Tiger(老虎),為了引人注目,在發表會上還真的抱了一隻小白老虎出來作為噱頭,而許多書的封面也應景地放上老虎的圖片。有關JDK代碼名稱與釋出日期,可以參考 J2SE Code Names,當中列出至 J2SE 5.0,至於Java SE 6代碼名稱為Mustang(野馬),發佈日期為2006/12/11,Java SE 7代碼名稱為Dolphin(海豚),發佈日期為2011/7/28。

之前談過,Java約以兩年為週期推出重大版本更新,正如表1.1所示,J2SE 1.2、J2SE 1.3、J2SE 1.4.0、J2SE 5.0、Java SE 6推出的時間,差不多都是兩年,然後從Java SE 6之後,Java開發人員足足等了四年多,才等到新版本的推出,不禁讓人想問:Java怎麼了?


原因有許多,Java SE 7對新版本的規劃搖擺不定,涵蓋許多不易實現的新特性,加上Sun一直苦於營收低迷不振,影響了新版本的推動,新版本推出日期承諾不斷跳票,從2009年推遲至2010年初,又突然宣佈將加入原本不願劃入Java SE 7的Closure語法,又將推出日期推遲至2010年底,然後2010年中傳出IBM與Sun密談併購失敗,沒隔幾日,又爆出Oracle宣佈併購Sun,Java也正式成為Oracle所屬。


併購就會帶來一連串的組織重整,導致Java SE 7推出日期再度跳票,為了對停滯不前的Java注入活水,決定先將現有已實現或較易實現的特性放入Java SE 7中,將未定案或較難實現的特性放入Java SE 8中(像是Jigsaw、Closure),2010年底 JCP(Java Community Process) 終於通過了Java SE 7與Java SE 8的規劃地圖(Roadmap),並預計於2011/7左右推出Java SE 7,這次總算沒有跳票,Java SE 7正式於2011/7/7釋出

Java SE 8實際上亦是一波三折,原訂應於2013年釋出,卻因為接二連三爆出的Java安全漏洞,迫使Java開發團隊決定先行檢視修補Java安全問題,發表Java SE 8的時間最後確定為2014/3/18,Oracle看來無意給它一個代碼名稱。

在Java發展的過程中,由於Java的應用領域越來越廣,並逐漸擴及至各級應用軟體的開發,Sun公司在1999年6月美國舊金山的Java One大會上,公佈了新的Java體系架構,該架構根據不同級別的應用開發區分了不同的應用版本: J2SE(Java 2 Platform, Standard Edition)、J2EE(Java 2 Platform, Enterprise Edition)與J2ME(Java 2 Platform, Micro Edition)

J2SE、J2EE與J2ME是當時的名稱,由於Java SE 6後Java不再帶有"2"這個號碼,J2SE、J2EE與J2ME分別被正名為Java SE、Java EE與Java ME

  • Java SE

Java各應用平台的基礎,想要學習其它的平台應用,必先瞭解Java SE以奠定基礎,可以分作四個主要的部份:JVM、JRE、JDK與Java語言

為了要能運行Java撰寫好的程式,必須有Java虛擬機器(Java Virtual Machine, JVM)。 JVM包括在Java執行環境(Java SE Runtime Environment, JRE)中,所以為了要運行Java程式,必須安裝JRE。如果要開發Java程式,必須取得JDK(Java SE Development Kits),JDK包括JRE以及開發過程中需要的一些工具程式,像是javac、java、appletviewer等工具程式。

Java語言只是Java SE的一部份,除了語言之外,Java最重要的就是它提供了龐大且強大的標準API,提供字串處理、資料輸入輸出、網路套件、使用者視窗介面等功能,你可以使用這些API作為基礎來進行程式開發,無須重複開發功能相同的元件,事實上,在熟悉Java語言之後,更多的時候,都是在學習如何使用Java SE提供的API來組成應用程式。

  • Java EE
Java EE以Java SE為基礎,定義了一系列的服務、API、協定等,適用於開發分散式、多層式(Multi-tiered)、以元件為基礎、以Web為基礎的應用程式,整個Java EE的體系是相當龐大的,比較為人熟悉的技術像是JSP、Servlet、JavaMail、Enterprise JavaBeans(EJB)、Java Remote Method Invocation(RMI)等,可以肯定的是,你必須在Java SE上奠定良好的基礎,再來學習Java EE的開發。

  • Java ME

Java ME是Java平台版本中最小的一個,目的是作為小型數位設備上開發及部署應用程式的平台,像是消費性電子產品或嵌入式系統等,最為人所熟悉的設備如手機、PDA、股票機等,你可以使用Java ME來開發出這些設備上的應用程式,如Java遊戲、股票相關程式、記事程式、月曆程式等。


有關Java中的各個技術,在 Java Technology Concept Map 提供有一份Java技術觀念地圖,可以作為不錯的參考起點。


  • 註1:James Gosling被尊稱為Java之父。
  • 註2:這一天為公認為Java的誕生日。