向Java開戰(zhàn)?別搞錯(cuò)了對(duì)象
原創(chuàng)【51CTO.com 6月2日外電頭條】最近,我發(fā)現(xiàn)一個(gè)有趣的趨勢(shì),那就是在我身邊的博客、DZone和其他等等開發(fā)社區(qū)之中Java變得越來(lái)越不受歡迎。只要你說(shuō)到Java比起現(xiàn)在這些web2.0的寵兒語(yǔ)言們?cè)谀承┑胤竭€占些優(yōu)勢(shì)時(shí),馬上就會(huì)遭到這些語(yǔ)言的粉絲們的群起攻擊,甚至?xí)盏揭恍┩{言論。
在我看來(lái),Java的廣泛成功有著許多原因:
- 它被企業(yè)界所廣泛接受
- 它是速度最快的語(yǔ)言之一
- 它是最安全的語(yǔ)言之一
- 內(nèi)置在語(yǔ)言中的同步原語(yǔ)
- 它是平臺(tái)獨(dú)立的
- Hotspot是開源的
- 成千上萬(wàn)家供應(yīng)商提供了無(wú)數(shù)Java產(chǎn)品
- 成千上萬(wàn)個(gè)開源Java代碼庫(kù)
- 來(lái)自JCP的良好的社區(qū)管理(在Oracle之前)
對(duì)于任何語(yǔ)言來(lái)說(shuō),這都是一個(gè)相當(dāng)了不起的成績(jī),也展示了Java作為當(dāng)下最流行的語(yǔ)言,在很長(zhǎng)一段時(shí)間里無(wú)可匹敵的連勝紀(jì)錄。
那么,為什么從2010年底到2011年,Java突然間就變成了招人討厭的魔鬼?
- 現(xiàn)在反Java是一種時(shí)尚
- 類似C語(yǔ)言的語(yǔ)法已經(jīng)不再流行了
- 人們把對(duì)Oracle的反感帶到了對(duì)開發(fā)語(yǔ)言的興趣當(dāng)中
- 人們接觸到一些用Java編寫的非常糟糕的代碼
- ……此處插入另外一百個(gè)理由
Java語(yǔ)言本身和它的API確實(shí)有不少實(shí)際問(wèn)題,可以說(shuō)舉不勝舉,想寫也寫不完的(比如混合本地和對(duì)象類型、一大堆被遺棄的API、還有對(duì)受檢查異常的不一致的使用等等)。但這里我是想伸出和平的橄欖枝……讓我們討論真正的問(wèn)題,而不是把嬰兒和洗澡水一起倒掉。
那么這個(gè)行業(yè)究竟出了什么問(wèn)題?
Java雖然有它的各種缺點(diǎn),但確實(shí)已經(jīng)完全征服了Web應(yīng)用編程。而在場(chǎng)邊,那些極富挑戰(zhàn)性的新的編程語(yǔ)言正以目不暇接的速度一個(gè)接一個(gè)的出現(xiàn),時(shí)刻挑戰(zhàn)著人腦極限,它們同樣也想要征服Web應(yīng)用編程。這些新興的語(yǔ)言們和Java一起競(jìng)爭(zhēng),它們就像賽車手一樣蜂擁進(jìn)站,或者就像街邊的促銷員正在為爭(zhēng)奪街頭領(lǐng)土而上演霹靂舞爭(zhēng)霸賽。然而,就在大家爭(zhēng)吵是PHP還是Rails 3.1哪個(gè)運(yùn)行速度更快,哪個(gè)能夠處理更多的同步請(qǐng)求,或者在我們幼稚的對(duì)語(yǔ)法和運(yùn)行時(shí)的參數(shù)爭(zhēng)吵不休時(shí),總有一只沉默的大象在房間里暗暗的笑了。
那么告訴我,下面這些有什么共同點(diǎn)?
- 用信用卡買東西
- 去醫(yī)院使用醫(yī)療卡
- 調(diào)整養(yǎng)老金
- 在牙醫(yī)那里使用保險(xiǎn)卡
- 尋找最好的汽車保險(xiǎn)
- 銀行之間的資金轉(zhuǎn)移
- 醫(yī)療系統(tǒng)在藥店配藥
上面所有這些行業(yè)在美國(guó)的國(guó)家經(jīng)濟(jì)中都是上百億美元的重頭角色,而這些行業(yè)每天都在編寫新的COBOL和大型機(jī)匯編程序。我沒(méi)有添油加醋,我現(xiàn)在的工作就在配藥行業(yè),其他行業(yè)也曾經(jīng)涉足過(guò),或者采訪過(guò)相關(guān)的人。
朋友們啊,老天作證,早在1959年就發(fā)明的COBOL在今天仍然幾千行幾千行的寫著!我說(shuō)的不是這兒幾行那兒幾行的那種維護(hù)工作,而是真正的全新的成千上萬(wàn)行,用來(lái)實(shí)現(xiàn)新的功能和新的要求,每一天都是如此。這些行業(yè)對(duì)新技術(shù)不聞不問(wèn),云計(jì)算里飄出來(lái)的風(fēng)根本吹不到這些行業(yè),但這些行業(yè)卻是最必不可少的,它們構(gòu)成了我們經(jīng)濟(jì)的基石。不僅如此,在這里,它們還從不創(chuàng)新,而且為了維護(hù)自己的傳統(tǒng)技術(shù)一直進(jìn)行著昂貴的大規(guī)模開銷。
有多貴?我們簡(jiǎn)單談一下大型機(jī)的許可費(fèi)吧。比方說(shuō)你的數(shù)據(jù)庫(kù)買的是MongoDB企業(yè)版,只要把它安裝好,然后你掛好CPU,讓數(shù)據(jù)庫(kù)開始一個(gè)接一個(gè)的進(jìn)行事務(wù)處理……下周你出去度假并留下MongoDB繼續(xù)運(yùn)行。等到你回來(lái)以后,MongoDB并沒(méi)有讓你多花一分錢。
但大型機(jī)的軟件許可就完全不同了。你要先花幾百萬(wàn)買你的主機(jī)和它的數(shù)據(jù)庫(kù)產(chǎn)品,再花了整整一星期才終于把CPU們掛上數(shù)據(jù)庫(kù)的請(qǐng)求,然后你松了口氣檢查一下郵件,這時(shí)卻發(fā)現(xiàn)早就收到了一份數(shù)據(jù)庫(kù)供應(yīng)商發(fā)來(lái)的100萬(wàn)美元的賬單。等一下,我買了硬件,為什么還要付另一份賬單?對(duì)了,大型機(jī)上的軟件經(jīng)常是按使用計(jì)費(fèi)的,或者按照你用了多少CPU周期。你在運(yùn)行數(shù)據(jù)庫(kù)時(shí)用了2,000,000個(gè)CPU周期,那你就要付給供應(yīng)商200萬(wàn)美元。奇怪嗎?就是這樣。
這些行業(yè)就在你的生活中,你每天都在使用,卻看不見摸不著,這里充斥著自大、老舊的系統(tǒng)和過(guò)高的成本。Java一開始想要征服許多領(lǐng)域,雖然它征服了Web應(yīng)用,但它在集中式計(jì)算上的努力最終還是告吹。這些大型機(jī)的行業(yè)完全到了應(yīng)該降低成本和提高效率的時(shí)候了,但說(shuō)實(shí)話,我們所取得的只能讓自己尷尬。這些行業(yè)堅(jiān)持使用那些老舊的系統(tǒng),因?yàn)樗麄儾徽J(rèn)為Ruby、Python、Scala、Lua、PHP甚至Java能夠處理這些行業(yè)的“負(fù)載”、可擴(kuò)展性、或是滿足他們那些老系統(tǒng)提供的上線時(shí)間的要求。這些理由完全站不住腳,而且在過(guò)去的15年間,這些行業(yè)“成功的”實(shí)現(xiàn)了零創(chuàng)新,而與此同時(shí),網(wǎng)絡(luò)技術(shù)一直在翻天覆地的跨越式進(jìn)步。
因此,下周就會(huì)有人搞出另一個(gè)DSL讓Twitter更容易使用,但你的銀行還是會(huì)編出幾萬(wàn)條全新的COBOL代碼,讓你在資金轉(zhuǎn)賬時(shí)再快上那么一點(diǎn)。我們?yōu)榱薐ava是否過(guò)時(shí)爭(zhēng)的面紅耳赤,但整個(gè)國(guó)家經(jīng)濟(jì)都需要看到分布式計(jì)算的好處,如果友軍的炮火繼續(xù)誤傷下去,那我們就都輸了。停止這些荒謬的爭(zhēng)論,把火炬和平的傳遞下去,試著征服幾個(gè)龐然大物吧!
原文地址:http://thecodemechanic.wordpress.com/2011/05/30/hate-java/


























