再論Java已死 基于JVM的語(yǔ)言已成Java最大威脅
在2009年7月的編程語(yǔ)言排行榜中,51CTO曾以《Java,正在老去的王者》為題分析了Java語(yǔ)言近年來(lái)的發(fā)展和變化,文中雖未提及Java已死的言論,但Java近年來(lái)確實(shí)遇到了一些發(fā)展瓶頸。Java已死的說(shuō)法由來(lái)已久且支持這種觀點(diǎn)的開(kāi)發(fā)者眾多,但也有相當(dāng)一部分人對(duì)此抱有異議,今天我們轉(zhuǎn)載一篇國(guó)外開(kāi)發(fā)者的博文,再論Java已死。
很多Java已死的言論者是因?yàn)椴幌矚gJava的某些特性,如當(dāng)初Java所沒(méi)有的閉包(51CTO編者注:在2009年的Devoxx大會(huì)上,Sun已經(jīng)宣布Java 7決定包含閉包),而且考慮向后兼容性,所以他們對(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)必要。
諷刺的是,作為一門(mén)已死的語(yǔ)言來(lái)說(shuō),Java做得真是不錯(cuò):它仍是編程語(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)編寫(xiě)的;第二,Java有一個(gè)巨大的穩(wěn)定的代碼庫(kù);第三,有大量的廠商投資、工具、培訓(xùn)和其他產(chǎn)品,使得無(wú)論是供應(yīng)商還是他們的客戶都依賴(lài)著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)死。
#T#退一萬(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)題。所以一門(mén)不甚景氣的編程語(yǔ)言完全死去也要經(jīng)歷很長(zhǎng)的時(shí)間,況且Java還遠(yuǎn)沒(méi)到不景氣那一步。
當(dāng)然,Java面臨的最大的威脅是快速發(fā)展的JVM-hosted語(yǔ)言如Groovy, Scala, JRuby和Clojure,詳細(xì)請(qǐng)參考51CTO之前的分析《Java的未來(lái):百家爭(zhēng)鳴的JVM》。由于這些語(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)有一門(mén)語(yǔ)言會(huì)比Java更成功。Java遠(yuǎn)沒(méi)有死亡,根本不應(yīng)該列入將死亡的語(yǔ)言行列。
原文地址:http://www.dzone.com/links/i_use_dead_programming_languages_java.html