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發展的過程中,由於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虛擬機器(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 ME
Java ME是Java平台版本中最小的一個,目的是作為小型數位設備上開發及部署應用程式的平台,像是消費性電子產品或嵌入式系統等,最為人所熟悉的設備如手機、PDA、股票機等,你可以使用Java ME來開發出這些設備上的應用程式,如Java遊戲、股票相關程式、記事程式、月曆程式等。
有關Java中的各個技術,在 Java Technology Concept Map 提供有一份Java技術觀念地圖,可以作為不錯的參考起點。
- 註1:James Gosling被尊稱為Java之父。
- 註2:這一天為公認為Java的誕生日。