Java會步上 COBOL 的後塵嗎?

Posted by Mr. Friday

最近這個禮拜,許多網站都在寫所謂的「年終回顧」,而向來報導資訊科技產業為主的InfoWorld卻列出了「2007最被低估〈未被大力報導〉的科技新聞」,而排名第一的就是這篇文章:「JAVA正步上COBOL的後塵!」

光看這標題實在太嚇人。從大學時候開始算起,Java我碰了少說也有快七年以上,雖然比起眾高手不敢說多麼精通,但是說Java說要像COBOL一樣被市場淘汰,會不會太早了點?如果真的有朝一日醒來,Java全面性的被新語言替換,那所有寫Java長大的程式設計師豈不是立刻失業?

好,先別急,先把原文內容看完再說。InfoWorld在這篇文章所持的幾個重要論點如下:

  1. 在網頁設計師界,擁抱Ruby on Rails、PHP、AJAX的人越來越多,而M$ .Net也正逐步把Java趕出企業應用市場。
  2. Java最被人傳頌的好處是可以跨平台,然而根據Twiki.net CEO的說法,Java的版本越來越多,還時常要去下載各種不同的Library檔案,因此他們開發網站後來都改用ROR,解決版本複雜性的問題。
  3. Java吃記憶體太兇、在UI上表現不佳,不利於手機版本J2ME的發展。
  4. 根據InfoWorld一份訪問超過1,850家企業的問卷結果顯示,各企業比較偏好用.Net,勝過用Java

好,我知道這樣的文章一定爭議滿天飛。我對當中的許多論點也不甚認同,但話說回來,它也的確點出一些問題。首先談談我不認同的點:

  • 少來了,AJAX什麼時候變成獨立的程式語言,還可以取代Java來著?
  • Ruby on Rails細節我不熟,但只因為這個語言近兩年開始起飛,開發網站套用模版用現成Framework開發速度很快,就可以取代Java了嗎?ROR之所以速度會快,是因為Rails已經寫好很多的模版可以套用是因為它的Framework可以讓你節省很多從頭開始的功夫,而寫Java的大部分人卻還習慣著從頭到尾一頁一頁慢慢刻。如果現在Wicket這些Java Web Framework發展得好,也綁進Eclipse裡面,那未來JSP是不是也可以喊出取代ROR的口號了呢?

不過,我也必須承認,寫Java到現在,有很多地方是我認為值得討論的。

  • 版本控制:Java一直在推出新的版本,而且最近出的速度超快,一轉眼已經要出Java SE 7了,Java EE 6也預定2008年問世,速度快到其他家廠商都追不太上〈企業級伺服器WebLogic都到了2007年中出新版才能支援Java EE 5,而WebSphere、JBoss、Oracle等大廠都還在苦苦追趕中。〉
  • 除了SDK外,Java還有許多由Open Source界開發的Library。雖然這些軟體免費又好用,但是伴隨而來的版本與相容性問題也相對複雜。程式老跳訊息告訴你這個jar檔版本太舊不是他要的,怎麼辦?
  • 記憶體吃得兇:這顯然是跨平台的代價。我個人只遇過幾個純粹用Java寫的GUI程式,分別是JBuilder、Eclipse,以及NetBeans。而這幾個都是吃記憶體的超級怪物。就算我現在電腦有2G的ram,我也不敢同時開前面任兩個程式起來。
  • 程式架構越來越複雜:曾經我以為只要會寫繼承、MVC,看過Design Pattern就算是會寫Java了,但是我大錯特錯,Java還有很多Framework,而且到最後某些Framework已經複雜到有點變本加厲了。這當中首推EJB。EJB現在已經被認為是失敗的概念,因為它實在是超級複雜…我曾經在課堂上寫過Agent,要讓同一隻程式能「跨越不同的JVM執行」,天啊,從頭寫一隻出來大概要走我半條命。果不其然,現在POJO〈Plain Old Java Object〉的口號越來越響亮,呼籲大家把Java程式設計得越簡單越好,尤其是不要照EJB 2.x的模樣來寫。

但話說回來,縱使Java的確有許多缺點,這仍然離標題所預測:「JAVA正步上COBOL的後塵!」差之甚遠。與其他新進語言相比,Java因為平台眾多,又有大批open source人士寫了很多的Library,以致讓新手光看到版本就眼花撩亂,但這些並不是會影響Java是否能持續存活下去的關鍵因素;關鍵應該要從整個軟體產業的角度下手。在原文後面的回應中,有一位署名systemanalyst的人寫得相當精闢:〈以下節錄〉

拉回企業的角度來看,許多公司內的mainframe程式是用IMS、CICS搭配上JMS(Java Message Service的縮寫) Connector來寫的,PHP跟ROR在這一點是要怎麼取代Java?

當你的網站流量很大時,用Windws TCP/IP會癱瘓,你確定敢用Windows當作重要的前端系統平台嗎?

我不是說Java沒有問題,但相較於其他平台,如果我自己開公司,我一定會選擇Java平台。為何?因為我可能會選擇POS平台用AIX〈IBM的Unix作業系統〉,線上購物平台用Linux,開發環境用Windows,而後端的資料倉儲系統架在z/OS上。為了省下管理不同異質平台的錢,我會用Java,因為它是唯一能在所有平台上通用的程式語言。

當我們在談論一個程式語言時,我們必須要從整個軟體工程的角度來看。Java不只是一個語言。當你看著Java時,你必須包含整個平台來看。看看這些為Java創造出來的架構與伺服器,它們的scalability是無限的!比起來.NET可就完全沒辦法比。如果你只是要講語言的syntax,是的C#跟Java沒什麼差別。但是如果你要評判Java能帶給你的價值,你必須從頭到尾、從上到下,完整的評估,而不只是”getThis()” 或 “setThat()”這些語法。

說到企業用途,或許Java還有另外一項好處,那就是Java Solution的平台提供者眾多,包括IBM、BEA、Sun、Oracle都有出Java專屬的應用伺服器,但.NET的平台似乎只有Microsoft一家比較知名。不管M$的名聲如何,選擇Java平台的公司至少在短期內比較不用擔心被同一家廠商壟斷的問題。即使Sun這一兩年來的股票跌到連水餃股都不如,各家企業至少還有IBM、BEA這幾家可以選擇,而選擇.NET的公司,可能就只好期望M$能夠活得長長久久,永保安康了。

講到這裡,各位看倌,你們的看法又是如何呢?

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!
  • 我也覺得會Java的人一定也會Python,因為它真的是少數可以自稱簡單又強大的語言,再加上學程式語言都會有一定共通的知識,學起來更是得心應手,國內對於這樣一個優秀的語言居然不流行,我覺得真的非常的可惜,Google用Python,NASA用Python,Youtube用Python,我原本也沒用Python,像我要寫個抓取網頁處理資料的網頁,從頭用C++包裝curl慢慢寫起,後來我發現我這根本是在浪費我的時間,抓取網頁程式的瓶頸完全卡在頻寬,所以我決定尋找新的解決方案,Java一度也在我的考慮之中,但是後來我發現,Java開發速度不夠快,比起C++來快不了多少,Python應該會更快,果然,自從用了Python之後,本來可能要幾個月完成的東西,幾天就完成了,這包括買了一本書直接學Python馬上使用。

    我一直都覺得,多學幾款語言真的很不錯,遇到不同情況、不同需求,選擇最適合的語言,國內Python這樣地不流行,真的怎麼想都覺得可惜,所以在此也推廣一下Python,我一開始也半信半疑,後來真的愛上Python,希望大家也可以給Python一個機會

    我最近在寫一些Python的教學,希望能盡力推廣這個語言,像這套文章系統就是用我用基於Python的TurboGears完成的
    http://victorlin.serveftp.org/programming/article/?article_id=2
    希望可以給我一點意見

  • Michael Tsai

    > 看看這些為Java創造出來的架構與伺服器,它們的scalability是無限的!比起來.NET可就完全沒辦法比。

    看不出來這個結論有何立論根據。只能說,這是只懂 Java 卻不懂 .NET 平台的人自以為是的想法。

    從許多評論和前面的一些留言也看得出來,仍有不少只對特定語言或平台熟悉,卻以為那就是該語言/平台的特色、優點,再以此來引申、推論。起初失之毫釐,最終結論恐怕就差之千里了。

    兩種或更多種語言及平台的比較,並非三言兩語能夠道盡,而必須針對各種面向逐一比較、闡述,否則結論都容易流於偏頗、缺乏說服。簡單來說,一個語言或平台的好用與否,市場最終會做出適當且正確的裁決,也就是說,市場最終將會淘汰差勁的東西。

  • Michael Tsai

    > 看看這些為Java創造出來的架構與伺服器,它們的scalability是無限的!比起來.NET可就完全沒辦法比。

    看不出來這個結論有何立論根據。只能說,這是只懂 Java 卻不懂 .NET 平台的人自以為是的想法。

    從許多評論和前面的一些留言也看得出來,仍有不少只對特定語言或平台熟悉,卻以為那就是該語言/平台的特色、優點,再以此來引申、推論。起初失之毫釐,最終結論恐怕就差之千里了。

    兩種或更多種語言及平台的比較,並非三言兩語能夠道盡,而必須針對各種面向逐一比較、闡述,否則結論都容易流於偏頗、缺乏說服。簡單來說,一個語言或平台的好用與否,市場最終會做出適當且正確的裁決,也就是說,市場最終將會淘汰差勁的東西。

  • >市場最終會做出適當且正確的裁決,也就是說,市場最終將會淘汰差勁的東西。

    被市場淘汰的是差勁東西嗎? 不一定。
    被淘汰有很多可能的原因,例如行銷策略、商業模式,
    但產品本身未必不好。

  • >市場最終會做出適當且正確的裁決,也就是說,市場最終將會淘汰差勁的東西。

    被市場淘汰的是差勁東西嗎? 不一定。
    被淘汰有很多可能的原因,例如行銷策略、商業模式,
    但產品本身未必不好。

  • 每個語言有自己的特性,也有適合的區塊。
    我想,先學主流的程式語言,有多餘的時間接觸不同類型的語言,應該是不錯的選擇。

    寫程式這個行業,不就是要一直求進步,吸收新知嗎?

  • 每個語言有自己的特性,也有適合的區塊。
    我想,先學主流的程式語言,有多餘的時間接觸不同類型的語言,應該是不錯的選擇。

    寫程式這個行業,不就是要一直求進步,吸收新知嗎?

  • Slash

    看到樓上發言的,.NET 沒有 IDE 寫不下去,以及 .NET 的程設師只會拉拉工具,我笑了…
    如果你專精 Java 及 .NET ,你不會說這種話的…

    就我寫過幾十個大型的專案經驗,我用 .NET 從來沒有用過 VS,且,就算用 VS,.NET的人的程度也不是你想像中拉拉工具就夠了。

  • Slash

    看到樓上發言的,.NET 沒有 IDE 寫不下去,以及 .NET 的程設師只會拉拉工具,我笑了…
    如果你專精 Java 及 .NET ,你不會說這種話的…

    就我寫過幾十個大型的專案經驗,我用 .NET 從來沒有用過 VS,且,就算用 VS,.NET的人的程度也不是你想像中拉拉工具就夠了。

  • ADWings

    樓上的話別說的太有自信阿…從來沒用VS開發過.NET~後面又接”且就算有用”…講話矛盾起來了?
    你想證明甚麼?你沒有用VS開發就表示是高手嗎?未必
    VS魅力是甚麼?不就是使我們快速開發Windows系統上的各種軟體不是嗎?
    難道VS還有甚麼魅力存在嗎?假如他沒這種魅力我何必使用M$的東西?
    你假如不懂VS的魅力在哪何必用VS?
    我能說我沒有小看任何一種語言…想必能生存很久的程式語言都有一定的市場存在
    .NET和JAVA以及其他的各種程式語言,都有他的優勢存在,哪種程式語言是完美的?
    講來講去不就是那幾個問題嗎?~快速開發、相容性、跨平台、資源耗損大小…等等?
    選擇當IT人員就是不能捨棄或是小看任何一種程式語言,不但不能小看,還必須加以吸收。
    再者學程式也跟你之後的工作有關係,老闆要你用甚麼語言開發,你能夠說NO嗎?
    說不定在這裡支持JAVA或用JAVA吃飯的人,哪天換了老闆或換了工作,或許老闆叫你用.NET
    你又變成.NET的支持者…
    資訊的東西淘汰速度非常快速,適者生存、不適者淘汰,就這樣而已…
    程式語言的喜好討論…這種爭議性非常大的東西,還是適可而止的好。

  • ADWings

    樓上的話別說的太有自信阿…從來沒用VS開發過.NET~後面又接”且就算有用”…講話矛盾起來了?
    你想證明甚麼?你沒有用VS開發就表示是高手嗎?未必
    VS魅力是甚麼?不就是使我們快速開發Windows系統上的各種軟體不是嗎?
    難道VS還有甚麼魅力存在嗎?假如他沒這種魅力我何必使用M$的東西?
    你假如不懂VS的魅力在哪何必用VS?
    我能說我沒有小看任何一種語言…想必能生存很久的程式語言都有一定的市場存在
    .NET和JAVA以及其他的各種程式語言,都有他的優勢存在,哪種程式語言是完美的?
    講來講去不就是那幾個問題嗎?~快速開發、相容性、跨平台、資源耗損大小…等等?
    選擇當IT人員就是不能捨棄或是小看任何一種程式語言,不但不能小看,還必須加以吸收。
    再者學程式也跟你之後的工作有關係,老闆要你用甚麼語言開發,你能夠說NO嗎?
    說不定在這裡支持JAVA或用JAVA吃飯的人,哪天換了老闆或換了工作,或許老闆叫你用.NET
    你又變成.NET的支持者…
    資訊的東西淘汰速度非常快速,適者生存、不適者淘汰,就這樣而已…
    程式語言的喜好討論…這種爭議性非常大的東西,還是適可而止的好。

  • PHPer

    Java的未來之所以會被質疑,
    是因為寫Java的人, 每天吵來吵去, 深怕自己用的不是一流技術,
    同時另一群寫PHP的人卻在默默耕耘,
    他們很清楚自己用的是二流技術,
    卻用它建立起一流的服務(Facebook, Digg…),
    而且在開發速度以及scalability上狠狠的賞了Java一巴掌!

  • PHPer

    Java的未來之所以會被質疑,
    是因為寫Java的人, 每天吵來吵去, 深怕自己用的不是一流技術,
    同時另一群寫PHP的人卻在默默耕耘,
    他們很清楚自己用的是二流技術,
    卻用它建立起一流的服務(Facebook, Digg…),
    而且在開發速度以及scalability上狠狠的賞了Java一巴掌!

  • 加入SDN開發社群 把 Wii 帶回家!

    您想瞭解最新的Solaris及Java資訊?想獲取免費的技術資訊和開發工具?Sun Developer Network (SDN)開發社群能夠滿足您以上的所有需求。
    SDN活動網站:http://cell.realmedia.com.tw:9016/EDM/

  • 加入SDN開發社群 把 Wii 帶回家!

    您想瞭解最新的Solaris及Java資訊?想獲取免費的技術資訊和開發工具?Sun Developer Network (SDN)開發社群能夠滿足您以上的所有需求。
    SDN活動網站:http://cell.realmedia.com.tw:9016/EDM/

  • S

    怎麼都沒提到JVM提供一定的安全性,記憶體保護

  • S

    怎麼都沒提到JVM提供一定的安全性,記憶體保護

  • S

    JVM這樣的一個東西不會輕易消失的
    如果要寫出在三個平台以上使用的軟體,不用JVM?

  • S

    JVM這樣的一個東西不會輕易消失的
    如果要寫出在三個平台以上使用的軟體,不用JVM?

  • 比較奇怪的是;為什麼大家都只關注 oo ? 這世界不是只有 oo 而已,java python …那根本不是重點阿;重點是思考程式是怎麼一回事,除非 每天只想跟sql 為伍 拉拉畫面…

  • 比較奇怪的是;為什麼大家都只關注 oo ? 這世界不是只有 oo 而已,java python …那根本不是重點阿;重點是思考程式是怎麼一回事,除非 每天只想跟sql 為伍 拉拉畫面…

  • sss

    一直改不停.改不停.改不停.改不停.改不停….,失去了java 原來最讓人讚訟的遠見,例如oop 和跨平台

    現在我只看見一件事java . j2ee 一直改不停.改不停.改不停.改不停.改不停…., 還有點自己打自己的腳的感覺 ,
    各家支援的伺服器廠商也是一樣一直改不停.改不停.改不停.改不停.改不停

    為什麼不能好好的”停看聽”一下呢?

  • sss

    一直改不停.改不停.改不停.改不停.改不停….,失去了java 原來最讓人讚訟的遠見,例如oop 和跨平台

    現在我只看見一件事java . j2ee 一直改不停.改不停.改不停.改不停.改不停…., 還有點自己打自己的腳的感覺 ,
    各家支援的伺服器廠商也是一樣一直改不停.改不停.改不停.改不停.改不停

    為什麼不能好好的”停看聽”一下呢?

  • 我沒有學過程式語言
    前陣子第一次跟一個長輩聊到他的工作時
    我聽成 COBRA …..XD

  • 我沒有學過程式語言
    前陣子第一次跟一個長輩聊到他的工作時
    我聽成 COBRA …..XD