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$能夠活得長長久久,永保安康了。

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

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!