Java,,是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,,由升陽(Sun Microsystems)公司的詹姆斯·高斯林(James Gosling)等人于1990年代初開發(fā)。它最初被命名為Oak,,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語言,,來解決諸如電視機(jī)、電話,、鬧鐘,、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家電的市場(chǎng)需求沒有預(yù)期的高,,Sun放棄了該項(xiàng)計(jì)劃,。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,,于是改造了Oak,在1995年5月以“Java”的名稱正式發(fā)布了,。Java伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,,逐漸成為重要的網(wǎng)絡(luò)編程語言。 Oracle收購Sun背后 Solaris前途未卜 ,。 糾錯(cuò) 編輯摘要
Java 編程語言的風(fēng)格十分接近C、C++ 語言,。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,,它繼承了 C++ 語言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C ++語言中容易引起錯(cuò)誤的指針(以引用取代),、運(yùn)算符重載(operator overloading),、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,,使得程序員不用再為內(nèi)存管理而擔(dān)憂,。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming),、類型安全的枚舉,、不定長參數(shù)和自動(dòng)裝/拆箱等語言特性。 Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言,。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),,然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯,、到處執(zhí)行”的跨平臺(tái)特性,。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率,。但在 J2SE 1.4.2 發(fā)布后,,Java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù),。全球數(shù)以萬計(jì)的 Java 開發(fā)公司被要求所設(shè)計(jì)的 Java 軟件必須相互兼容。“Java 語言靠群體的力量而非公司的力量”是 Sun 公司的口號(hào)之一,,并獲得了廣大軟件開發(fā)商的認(rèn)同,。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 Sun 公司對(duì) Java 編程語言的解釋是:Java 編程語言是個(gè)簡單,、面向?qū)ο?、分布式、解釋性,、健壯,、安全與系統(tǒng)無關(guān)、可移植,、高性能,、多線程和動(dòng)態(tài)的語言。 Java 平臺(tái)是基于 Java 語言的平臺(tái),。這樣的平臺(tái)目前非常流行,,因此微軟公司推出了與之競爭的.NET平臺(tái)以及模仿 Java 的 C# 語言。 一天,,幾位Java成員組的會(huì)員正在討論給這個(gè)新的語言取什么名字,,當(dāng)時(shí)他們正在咖啡館喝著Java(爪哇)咖啡,有一個(gè)人靈機(jī)一動(dòng)說就叫Java怎樣,,這個(gè)提議得到了其他人的贊同,,于是,Java這個(gè)名字就這樣傳開了,。原來看SUN的JAVA標(biāo)識(shí)沒去多想,,現(xiàn)在看看,這不就是一杯正冒著熱氣的咖啡嗎,? 早期的Java “Stealth 計(jì)劃”后來改名為“Green計(jì)劃”,,詹姆斯·高斯林和麥克·舍林丹也加入了帕特里克的工作小組,。他們和其他幾個(gè)工程師一起在加利福尼亞州門羅帕克市沙丘路的一個(gè)小工作室里面研究開發(fā)新技術(shù),瞄準(zhǔn)下一代智能家電(如微波爐)的程序設(shè)計(jì),,升陽公司預(yù)料未來科技將在家用電器領(lǐng)域大顯身手,。團(tuán)隊(duì)最初考慮使用C 語言,,但是很多成員包括升陽的首席科學(xué)家比爾·喬伊,發(fā)現(xiàn)C 和可用的API在某些方面存在很大問題,。 工作小組使用的是內(nèi)嵌類型平臺(tái),,可以用的資源極其有限。很多成員發(fā)現(xiàn)C 太復(fù)雜以至很多開發(fā)者經(jīng)常錯(cuò)誤使用,。他們發(fā)現(xiàn)C 缺少垃圾回收系統(tǒng),,還有可移植的安全性、分布程序設(shè)計(jì),、和多線程功能,。最后,他們想要一種易于移植到各種設(shè)備上的平臺(tái),。 根據(jù)可用的資金,,比爾·喬伊決定開發(fā)一種集C語言和Mesa語言大成的新語言,在一份報(bào)告上,,喬伊把它叫做“未來”,,他提議升陽公司的工程師應(yīng)該在C 的基礎(chǔ)上,開發(fā)一種面向?qū)ο蟮沫h(huán)境,。最初,,高斯林試圖修改和擴(kuò)展C 的功能,他自己稱這種新語言為 C --,,但是后來他放棄了,。他將要?jiǎng)?chuàng)造出一種全新的語言,被他命名為“Oak”(橡樹),以他的辦公室外的樹而命名,。 就像很多開發(fā)新技術(shù)的秘密的工程一樣,工作小組沒日沒夜地工作到了1992年的夏天,,他們能夠演示新平臺(tái)的一部分了,,包括Green操作系統(tǒng),Oak的程序設(shè)計(jì)語言,,類庫,,和其硬件。最初的嘗試是面向一種類PDA設(shè)備,,被命名為Star7,,這種設(shè)備有鮮艷的圖形界面和被稱為“Duke”的智能代理來幫助用戶。1992年12月3日,,這臺(tái)設(shè)備進(jìn)行了展示,。 同年11月,Green計(jì)劃被轉(zhuǎn)化成了“FirstPerson有限公司”,,一個(gè)升陽公司的全資子公司,,團(tuán)隊(duì)也被重新安排到了帕洛阿爾托,。FirstPerson團(tuán)隊(duì)對(duì)建造一種高度互動(dòng)的設(shè)備感興趣,當(dāng)時(shí)代華納發(fā)布了一個(gè)關(guān)于電視機(jī)頂盒的征求提議書時(shí)(Request for proposal),,F(xiàn)irstPerson改變了他們的目標(biāo),,作為對(duì)征求意見書的響應(yīng), 提出了一個(gè)機(jī)頂盒平臺(tái)的提議,。但是有線電視業(yè)界覺得FirstPerson的平臺(tái)給予用戶過多地控制權(quán),,因此FirstPerson的投標(biāo)敗給了SGI。與3DO 公司的另外一筆關(guān)于機(jī)頂盒的交易也沒有成功,,由于他們的平臺(tái)不能在電視工業(yè)產(chǎn)生任何效益,,公司再并回升陽公司。 JAVA遭遇互聯(lián)網(wǎng) 1994年6,、7月間,,在經(jīng)歷了一場(chǎng)歷時(shí)三天的頭腦風(fēng)暴的討論后,約翰·蓋吉,、詹姆斯·高斯林,、比爾·喬伊、帕特里克·諾頓,、韋恩·羅斯因和埃里克·斯庫米,,團(tuán)隊(duì)決定再一次改變了努力的目標(biāo),這次他們決定將該技術(shù)應(yīng)用于萬維網(wǎng),。他們認(rèn)為隨著Mosaic瀏覽器的到來,,因特網(wǎng)正在向同樣的高度互動(dòng)的遠(yuǎn)景演變,而這一遠(yuǎn)景正是他們?cè)谟芯€電視網(wǎng)中看到的,。作為原型,,帕特里克·諾頓寫了一個(gè)小型萬維網(wǎng)瀏覽器,WebRunner,,后來改名為HotJava,。 同年,Oak改名為Java,。商標(biāo)搜索顯示,,Oak已被一家顯卡制造商注冊(cè),因此團(tuán)隊(duì)找到了一個(gè)新名字,。這個(gè)名字是在很多成員常去的本地咖啡館中杜撰出來的,。名字是不是首字母縮寫還不清楚,很大程度上來說不是,。雖然有人聲稱是開發(fā)人員名字的組合:James Gosling(詹姆斯·高斯林) Arthur Van Hoff(阿瑟·凡·霍夫) Andy Bechtolsheim(安迪·貝克托克姆),,或“Just Another Vague Acronym”(只是另外一個(gè)含糊的縮寫)。還有一種比較可信的說法是這個(gè)名字是出于對(duì)咖啡的喜愛,所以以Java咖啡來命名,。類文件的前四個(gè)字節(jié)如果用十六進(jìn)制閱讀的話,,分別為CA FE BA BE, 就會(huì)拼出兩個(gè)單詞“CAFE BABE”(咖啡寶貝)。 1994年10月,,HotJava和Java平臺(tái)為公司高層進(jìn)行演示,。1994年,Java 1.0a版本已經(jīng)可以提供下載,,但是Java和HotJava瀏覽器的第一次公開發(fā)布卻是在1995年3月23日SunWorld大會(huì)上進(jìn)行的,。升陽公司的科學(xué)指導(dǎo)約翰·蓋吉宣告Java技術(shù)。這個(gè)發(fā)布是與網(wǎng)景公司的執(zhí)行副總裁馬克·安德森的驚人發(fā)布一起進(jìn)行的,,宣布網(wǎng)景將在其瀏覽器中包含對(duì)Java的支持,。1996年1月,升陽公司成立了Java業(yè)務(wù)集團(tuán),,專門開發(fā)Java技術(shù),。 1、Java語言是簡單的,。Java語言的語法與C語言和C++語言很接近,,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,,Java丟棄了C++ 中很少使用的,、很難理解的、令人迷惑的那些特性,,如操作符重載,、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換,。特別地,,Java語言不使用指針,并提供了自動(dòng)的廢料收集,,使得程序員不必為內(nèi)存管理而擔(dān)憂,。
Java近況 在流行幾年之后,,Java在瀏覽器中的地位被逐步侵蝕。它在簡單交互性動(dòng)畫方面的用途已經(jīng)完全被Adobe公司的Flash排擠,,2005年Java傾向只被用于雅虎游戲那樣的更為復(fù)雜的應(yīng)用程序,。Java同時(shí)遭受到來自微軟的反對(duì),他們決定在新版本的Internet Explorer和Windows中不再附帶Java平臺(tái),。 與此相反,。在萬維網(wǎng)的服務(wù)器端和手持設(shè)備上,Java變得更加流行,。很多網(wǎng)站在前端使用JSP和其他的Java技術(shù),。 在桌面系統(tǒng)上,獨(dú)立的Java程序還是相對(duì)少見,,這是因?yàn)镴ava平臺(tái)的運(yùn)行開銷較大,,而許多人的電腦上沒有安裝Java,由于網(wǎng)絡(luò)帶寬在以前較小,,下載Java曾經(jīng)是個(gè)耗時(shí)的事情,。但是隨著計(jì)算機(jī)計(jì)算能力、網(wǎng)絡(luò)帶寬在10年中取得了很大的進(jìn)步,,同時(shí)虛擬機(jī)和編譯器的質(zhì)量得到了越高,,許多應(yīng)用程序得到了廣泛的使用,包括: 開源軟件: Java Platform, Enterprise Edition (Java EE:Java平臺(tái)企業(yè)版) 版本歷史(時(shí)間表) 1995年5月23日,,Java語言誕生1996年1月,,第一個(gè)JDK-JDK1.0誕生 1996年4月,10個(gè)最主要的操作系統(tǒng)供應(yīng)商申明將在其產(chǎn)品中嵌入JAVA技術(shù) 1996年9月,,約8.3萬個(gè)網(wǎng)頁應(yīng)用了JAVA技術(shù)來制作 1997年2月18日,,JDK1.1發(fā)布 1997年4月2日,JavaOne會(huì)議召開,,參與者逾一萬人,,創(chuàng)當(dāng)時(shí)全球同類會(huì)議規(guī)模之紀(jì)錄 1997年9月,,JavaDeveloperConnection社區(qū)成員超過十萬 1998年2月,JDK1.1被下載超過2,000,000次 1998年12月8日,,JAVA2企業(yè)平臺(tái)J2EE發(fā)布 1999年6月,,SUN公司發(fā)布Java的三個(gè)版本:標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE)和微型版(J2ME) 2000年5月8日,,JDK1.3發(fā)布 2000年5月29日,JDK1.4發(fā)布 2001年6月5日,,NOKIA宣布,,到2003年將出售1億部支持Java的手機(jī) 2001年9月24日,J2EE1.3發(fā)布 2002年2月26日,,J2SE1.4發(fā)布,,自此Java的計(jì)算能力有了大幅提升 2004年9月30日18:00PM,J2SE1.5發(fā)布,,成為Java語言發(fā)展史上的又一里程碑,。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0 2005年6月,,JavaOne大會(huì)召開,,SUN公司公開Java SE 6。此時(shí),,Java的各種版本已經(jīng)更名,,以取消其中的數(shù)字“2”:J2EE更名為Java EE,J2SE更名為Java SE,,J2ME更名為Java ME 2006年12月,,SUN公司發(fā)布JRE6.0 Java之所以被開發(fā),是要達(dá)到以下五個(gè): 應(yīng)當(dāng)使用面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué) |
|