如果說(shuō)用“永存、曲折、已死、重生”來(lái)形容Java,筆者以為一點(diǎn)也不為過(guò)。
1991年,James Gosling帶領(lǐng)著名為“Green Team”的團(tuán)隊(duì)著手研發(fā)一種新的語(yǔ)言以及專(zhuān)為下一代數(shù)字設(shè)備和計(jì)算機(jī)使用的網(wǎng)絡(luò)系統(tǒng)。歷時(shí)4年辛勤工作后,該項(xiàng)目最終修成正果并取名為Java。
Java有著類(lèi)似于C的語(yǔ)法并有“一次編譯,隨處運(yùn)行”的靈便性。透過(guò)虛擬機(jī)機(jī)制,可以使代碼在底層平臺(tái)進(jìn)行運(yùn)行時(shí)編譯?;厥譐ava過(guò)去的20年,首先是經(jīng)歷了微機(jī)時(shí)代的興與衰,然后進(jìn)入服務(wù)器領(lǐng)域及智能電話(huà)領(lǐng)域,繼而在DHS(美國(guó)土安全部)的“不安全”定義下艱難前行,最后投入甲骨文(Oracle)懷抱現(xiàn)正蓄勢(shì)迸發(fā)第二春。難道還有別的語(yǔ)言有如此跌宕起伏的情節(jié)嗎?
Java推出后,Sun發(fā)現(xiàn)市場(chǎng)上存在著一個(gè)問(wèn)題—計(jì)算機(jī)領(lǐng)域與非計(jì)算機(jī)領(lǐng)域彼此是隔斷的。Sun認(rèn)為這是一個(gè)機(jī)遇,如果能把兩者連接起來(lái)將會(huì)帶來(lái)一場(chǎng)計(jì)算機(jī)革命。“統(tǒng)一的主題是網(wǎng)絡(luò)?!盙osling說(shuō),“放眼當(dāng)時(shí)的市場(chǎng),兩個(gè)領(lǐng)域的廠家各自為政,沒(méi)有形成統(tǒng)一的網(wǎng)絡(luò)。因此很多時(shí)候不得不重復(fù)大量的實(shí)驗(yàn),但這些其實(shí)早在30年前的計(jì)算機(jī)科學(xué)中已得到解決?!眴?wèn)題的所在是電子消費(fèi)品制造者沒(méi)有考慮使用網(wǎng)絡(luò),例如跨平臺(tái)的公共APIs或者代碼復(fù)用,“你幾乎找不到任何的軟件復(fù)用。所有軟件都只能不斷地被重復(fù)創(chuàng)建。我們提出的模塊概念終將改變這一局面?!?/p>
成功非坦途
Java面世的頭五年,成為當(dāng)之無(wú)愧的編譯器高性能代言人。而過(guò)后五年,所有人都把重心轉(zhuǎn)向了企業(yè)應(yīng)用。Gosling說(shuō),“回首Java EE統(tǒng)治世界的場(chǎng)景至今仍歷歷在目。我們唯一的失誤是把全部精力都集中于此,所有資源都被優(yōu)先調(diào)配到EE,導(dǎo)致無(wú)法投入更多的精力去開(kāi)拓桌面的世界。”
Oracle Java平臺(tái)開(kāi)發(fā)副總裁Saab是這樣說(shuō)的,“在90年代,大多數(shù)開(kāi)發(fā)者都把精力投入到桌面應(yīng)用的編寫(xiě)之上。到了2000年,Pet.com的成功吸引了大批的跟風(fēng)者。業(yè)界又把焦點(diǎn)從桌面轉(zhuǎn)移到了HTML應(yīng)用。隨著智能電話(huà)和平板的到來(lái),基于觸摸屏的移動(dòng)應(yīng)用又站在了風(fēng)口。所以對(duì)于下一個(gè)流行趨勢(shì)是很難把握的,這涉及到天時(shí)、地利、人和?!?/p>
Java 2 Micro Edition(J2ME)在1998年引入并把Java劃分了三個(gè)平臺(tái):Java 2 Standard Edition(J2SE)、J2ME以及Java 2 Enterprise Edition(J2EE)。ME的意思是小型設(shè)備和嵌入系統(tǒng)。ME在翻蓋手機(jī)上得到推廣,成為當(dāng)時(shí)的標(biāo)配。Gosling說(shuō),“ME已經(jīng)做得足夠好了,在當(dāng)時(shí)是最強(qiáng)大的智能電話(huà)開(kāi)發(fā)平臺(tái)。不過(guò)現(xiàn)在漸漸被遺忘,因?yàn)锳ndroid太耀眼了?!?/p>
作為一個(gè)獨(dú)立平臺(tái),Java ME被邊緣化了。Oracle開(kāi)發(fā)部高級(jí)副總裁Cameron Purdy說(shuō)在下一個(gè)版本Java 9中會(huì)把所有平臺(tái)統(tǒng)一起來(lái),“對(duì)比SE、ME被獨(dú)立出來(lái)但發(fā)展緩慢。Java 9的模塊化特性會(huì)使得Java ME的可復(fù)用性得到增強(qiáng),這將是反擊Android和iOS的有力武器。”
陷入低谷
隨著Sun在最近10年的低迷,Java也不能幸免地經(jīng)歷著蹉跎歲月。IBM報(bào)價(jià)65億美元,Sun沒(méi)答應(yīng),74億美元,Oracle得到了Sun。
在Oracle管理下,頭幾年Java表現(xiàn)良好,以0重大失誤成為安全的代名詞。不過(guò)在2013年1月情況開(kāi)始變壞,美國(guó)土安全部(DHS)建議人們盡量不要使用Java。作為面向企業(yè)的軟件公司,打補(bǔ)丁修復(fù)Bug的速度是Oracle的短板,根本無(wú)法與面向大眾消費(fèi)者的微軟或Adobe相比。別人是以小時(shí)或天來(lái)計(jì),而Oracle是以月為基本單位。
Purdy認(rèn)為Oracle已經(jīng)盡了最大的努力去修補(bǔ)并清楚這個(gè)短板的重要性。問(wèn)題的關(guān)鍵是如何打造一支在失去Gosling等干將后仍能獨(dú)當(dāng)一面的團(tuán)隊(duì)。他說(shuō),“我們聽(tīng)到了不少質(zhì)疑之聲,但其實(shí)我們一直都在不斷加入投入的力度并努力尋求解決的方案?!?/p>
浴火重生
DHS的公開(kāi)聲明不啻是壓垮Java的最后一根稻草,很多人都預(yù)言Java將風(fēng)光不再。然而事情慢慢得到轉(zhuǎn)機(jī),不少Java粉絲開(kāi)始出來(lái)捍衛(wèi)Java的名聲。Dr. Dobbs Journal編輯Andrew Binstock曾發(fā)表一篇社論,其題目是:《即使面臨死亡,Java看上去還是相當(dāng)健康的》。
對(duì)于Oracle的接管,Gosling表達(dá)了自己的喜悅之情,“得知這個(gè)消息后,我感到非常驚喜。Oracle是個(gè)非常優(yōu)秀的監(jiān)護(hù)人并大大超出了我的期望。一開(kāi)始我還擔(dān)心它會(huì)不會(huì)成為第二個(gè)Solaris,現(xiàn)在看來(lái)我是多慮了?!?/p>
接管Java的頭五年,Oracle不得不重新打造一支Java團(tuán)隊(duì)?!拔覀兓舜罅繒r(shí)間來(lái)審視整個(gè)過(guò)程以確定如何進(jìn)行Bug修復(fù),從輸入到發(fā)布機(jī)制,我們回顧了大量的代碼。最后列出了一個(gè)長(zhǎng)長(zhǎng)的錯(cuò)誤修復(fù)表?!盤(pán)urdy回憶說(shuō)。
安全曾讓Java蒙羞,安全也讓Java重獲新生。在2014 Pwn20wn黑客大會(huì)上,Java成為唯一沒(méi)有被攻破的平臺(tái)。而在2015的會(huì)議中,Pwn20wn甚至沒(méi)有把Java列在攻擊名單上。
現(xiàn)在和未來(lái)
Java 9將是自被Oracle收購(gòu)后發(fā)布的首個(gè)重大版本。Java 9的最主要目標(biāo)是最大限度實(shí)現(xiàn)模塊化以幫助人們實(shí)現(xiàn)積木式的應(yīng)用編寫(xiě)。
“我們的目的是幫助人們從JAR的束縛中解脫出來(lái)?!盨aab說(shuō),“你將很輕松地處理在過(guò)去相當(dāng)復(fù)雜的事情,例如打包。你可以只用到需要的模塊,而把其它忽略。”P(pán)urdy補(bǔ)充道,“這開(kāi)創(chuàng)了Java平臺(tái)的先河。該特性將貫穿整個(gè)Java庫(kù),并以單依賴(lài)圖的方式重新整理依賴(lài)?!?/p>
談及Java的未來(lái),Eclipse基金會(huì)執(zhí)行董事Mike Milinkovich的看法是,“我認(rèn)為Java的未來(lái)在于物聯(lián)網(wǎng)。我十分樂(lè)意看到Oracle及其合作伙伴能把精力放在完全點(diǎn)對(duì)點(diǎn)的Java存儲(chǔ)方案上,透過(guò)網(wǎng)關(guān)實(shí)現(xiàn)設(shè)備到企業(yè)后臺(tái)的連接。如果成功將能使Java在往后20年發(fā)展得更好走得更遠(yuǎn)。雖然這還有一段路要走,但我相信Java能夠做到?!?/p>
Gosling的看法是,“VM是它本身的生態(tài),所有部分彼此相通。IT世界的未來(lái)是要實(shí)現(xiàn)互聯(lián)互通。把邊緣和核心有效地統(tǒng)一起來(lái),可以省卻內(nèi)外分開(kāi)管理的麻煩,從而得到更加強(qiáng)大的平臺(tái)?!?/p>
遍地開(kāi)花
雖然很多人都曾預(yù)言Java將一蹶不振,但是現(xiàn)今在不少的重要項(xiàng)目中,Java仍扮演著極其重要的角色。
Purdy指出,沒(méi)有Java,甚至不會(huì)有大數(shù)據(jù)的大發(fā)展,“Hadoop本身就是用Java編寫(xiě)的。當(dāng)你需要在運(yùn)行MapReduce的服務(wù)器集群上發(fā)布新功能時(shí),你需要進(jìn)行動(dòng)態(tài)的部署,而這正是Java所擅長(zhǎng)的?!?/p>
另一Java受惠者是Twitter。一開(kāi)始Twitter是用Ruby on Rails編寫(xiě)的,但是隨著用戶(hù)數(shù)的增長(zhǎng)RoR逐漸顯得力不從心。Fail Whale(失敗鯨)的宕機(jī)畫(huà)面預(yù)示著瓶頸問(wèn)題亟需解決。在2012年,Twitter從RoR轉(zhuǎn)向了Java和Scala,而失敗鯨從此滅絕了。
可見(jiàn)Java不但沒(méi)有成為昨日黃花,還重新煥發(fā)了新的生機(jī)。讓我們共同期待Java 9,看看Oracle將為廣大開(kāi)發(fā)者帶來(lái)什么樣的驚喜。