編者按:早在上世紀(jì)90年代,各種關(guān)于Java已死的斷言就已經(jīng)開(kāi)始出現(xiàn)。十多年之后的今年,這樣的言論依然不絕于耳。以關(guān)鍵詞"java is dead"在Google中搜索,得到大約199,000條結(jié)果,由此可見(jiàn)不少人寫過(guò)或評(píng)論過(guò)Java的死亡。針對(duì)這門已死十多年的語(yǔ)言,作者在文中概述 了當(dāng)今Java的地位及其發(fā)展趨勢(shì),有力地回?fù)袅诉@些傳言。全文如下:
很多Java已死的言論者是因?yàn)椴幌矚gJava的某些特性(如當(dāng)初Java所沒(méi)有的閉包),而且考慮向后兼容性,所以他們對(duì)新特性的效力和是否適合 表示了質(zhì)疑,有時(shí)候他們也認(rèn)為Java變得過(guò)于復(fù)雜。當(dāng)然這些言論者在打誑語(yǔ)的同時(shí),也會(huì)提議另一種語(yǔ)言也就是他們所喜歡的語(yǔ)言。我敢說(shuō),他們對(duì)Java 提出多少批評(píng),我就可以對(duì)他們提議的語(yǔ)言提出更多的批評(píng)。只是我們完全沒(méi)必要。
諷刺的是,作為一門已死的語(yǔ)言來(lái)說(shuō),Java做得真是不錯(cuò):它仍是Tiobe Programming Community Index編程語(yǔ)言排行榜上的第一位,而且已經(jīng)占據(jù)此位置十年之久(只是在2000年中期的時(shí)候位于C語(yǔ)言之后排第二)。從招聘網(wǎng)站來(lái)看,Java程序員 也依舊有著旺盛的需求。
所以,Java已死的言論真的很無(wú)稽,而且至少在接下來(lái)的這幾年里會(huì)依然無(wú)稽。原因有很多:首先,許多計(jì)算機(jī)科學(xué)的程序和其他領(lǐng)域的程序是以 Java為首要語(yǔ)言來(lái)編寫的;第二,Java有一個(gè)巨大的穩(wěn)定的代碼庫(kù);第三,有大量的廠商投資、工具、培訓(xùn)和其他產(chǎn)品,使得無(wú)論是供應(yīng)商還是他們的客戶 都依賴著Java。第四,Java擁有最大的開(kāi)發(fā)者人群和開(kāi)源生態(tài)系統(tǒng),當(dāng)涉及到選擇何種工具、供應(yīng)商和開(kāi)發(fā)者來(lái)作為未來(lái)的開(kāi)發(fā)方向時(shí),Java仍是首 選。顯然,Java一點(diǎn)都沒(méi)死。
退一萬(wàn)步來(lái)說(shuō),就算Java真的到了暮年或者即將老去,參照其他已接近死亡的語(yǔ)言,它的未來(lái)也并不暗淡。比如許多開(kāi)發(fā)者談?wù)揅++正在死去,而它最 近卻在復(fù)蘇,因?yàn)镚oogle Go語(yǔ)言的發(fā)布重新激起了C和C++的生命力。而且鑒于C++的歷史沉淀和基礎(chǔ),能完全取代它的語(yǔ)言目前恐怕只有Java。而即使Java想在自己的優(yōu)勢(shì) 領(lǐng)域(如GUI和數(shù)據(jù)庫(kù)開(kāi)發(fā))完全取代C++,也面臨著很大的障礙即:將C++應(yīng)用搬遷到Java的巨大成本。盡管JNI、CORBA、web服務(wù)和相似 的技術(shù)領(lǐng)域已經(jīng)將兩種語(yǔ)言混合,但它們有各自的復(fù)雜性和問(wèn)題。所以一門不甚景氣的編程語(yǔ)言完全死去也要經(jīng)歷很長(zhǎng)的時(shí)間,況且Java還遠(yuǎn)沒(méi)到不景氣那一 步。
當(dāng)然,Java面臨的最大的威脅是快速發(fā)展的JVM-hosted語(yǔ)言如Groovy, Scala, JRuby和 Clojure。由于這些語(yǔ)言運(yùn)行在JVM上,它們與Java語(yǔ)言的集成比Java自身更便捷、更簡(jiǎn)單。而Java正面臨著一個(gè)巨大的影響:Oracle 對(duì)Sun的收購(gòu)。但結(jié)果是好或壞,我們只能等待交易最終的完成(或者取消)。
因此,盡管Java有了臃腫之處和歲月的痕跡,但當(dāng)把所有的因素都考慮在內(nèi)(Java龐大的生態(tài)系統(tǒng)和產(chǎn)品、現(xiàn)有的代碼和投資),很難看出在不久的 將來(lái)有一門語(yǔ)言會(huì)比Java更成功。Java遠(yuǎn)沒(méi)有死亡,根本不應(yīng)該列入將死亡的語(yǔ)言行列。(譯/王玉磊)
原文鏈接:http://www.dzone.com/links/i_use_dead_programming_languages_java.html(需 要翻墻)
dm520