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