上周,伯頓集團發生了一件驚天動地的事情,Monson-Haefel發表了一篇名為“JEE5:Java EE預示結局的先兆”的報告。Java平臺企業版就像是一種史前動物,因為它整體過于龐大無法僅僅依靠可食植物來維持生存而導致滅絕,伯頓分析師說隨著JEE5中spring的發布,Java平臺企業版已經變得過于復雜導致企業級開發人員很難使用它,他們越來越期待著替代版的出現,譬如Ruby-on-Rails。
Monson-Haefel的結論如同死亡證明書一樣殘酷:“JEE5在復雜性上的失敗是預示著Java企業版平臺終從企業開發平臺領域的統治地位上落敗。所有企業在考慮新的企業開發時應該多參考一些其他的平臺,而且企業也應該提早做出準備以應對作為企業解決方案的Java EE的最終消亡。”
Java企業版平臺的發展將不可避免的效仿以往的一些標準,比如CORBA(通用請求代理體系),它們曾經也非常有前途,但最終還是走向了沒落,他說。
“五年內,Java平臺企業版將成為 21世紀的CORBA,” Monson-Haefel說道。“人們將看著它說‘它曾經也盛極一時’,但是因為太復雜,現在已經沒人愿意再使用它了。”
他努力強調說他僅僅是揭示了Java EE平臺的衰落之路,絕不是Java語言的。
“Java程序設計語言是不會有任何危險的”這位伯頓分析師說。“我認為Java程序設計語言在近幾年內將繼續發展成為企業級開發的支柱。”
Monson-Haefel不是唯一一個預測Java EE平臺失敗并把SOA當作造成這一結果的原因之一的分析師。
“Java EE現在已經時日不多了,” ZapThink 公司的高級分析師Jason Bloomberg說,他同樣也看到了導致這一后果的罪魁禍首就是Java EE每個新版本所增加的復雜度。“很明顯,只要發布了新版本或者增加了模塊,唯一增加的只有復雜性。最終,它會被自己壓垮。從目前看來,將來是不會開發出比已有的Java EE更精簡的版本。”
即使先把復雜性放到一邊不說,當提到要進入面向服務的企業這個新時代時,作為SOA和Web服務方面的專家Bloomberg就已經看到了Java平臺自身的致命缺陷。
“從根本上而言,Java EE的世界并不是為SOA而創建的,” ZapThink公司的分析師說。“現在,你可以依靠基于J2EE的運行時基礎架構,在Java和許多用于SOA實現的產品上創建非常棒的SOA實現。事實上,Java有很多面——一種面向對象程序設計語言、一個虛擬機的基礎結構,并且Java的Java EE是特定的一個實現n層架構的框架。不幸的是,Java的任何一面,或者是任何一種虛擬機都不適合做SOA的開發平臺。”
在Java EE中實現的面向對象(OO)并不完全符合SOA的核心——面向服務,Bloomberg爭辯道。
“從面向對象的角度來看,服務和服務的實例是相同的概念,”他說。“對象實例是獨立存在的這一整套概念在SOA中價值甚微。”
Java EE中的虛擬機也不是SOA的最佳解決方案,Bloomberg說。
“虛擬機的目標是為了增強代碼可移植性,但是在SOA中,互操作卻是更加重要的,”他說。“在SOA中,如果你并不需要移動代碼,那為什么還要克服這些困難去實現代碼移植呢?從根本上來說,分布式計算的虛擬機方式是通過對象串行化來實現遠程方法調用,但是SOA卻是在固定的界面下實現服務之間的信息交換。”
從Monson-Haefel的觀點來看,面向服務使得對統一平臺(如Java EE)的需要變得無關緊要。
“SOA確實降低了一個公共程序設計模型的重要程度,”伯頓的分析師說。“因為真正重要的不再是服務于通信的模型,而是通信本身。它是你正在交換的數據。它是與你完成交換數據關系緊密的方法,而不是數據背后的程序設計模型。”
Java EE最主要的優勢在于提供了一個公共的程序設計模型,但是,當進行SOA領域的開發時,這并不是最重要的。Monson-Haefel說。
“SOA和Web服務降低了后臺如何運行的重要程度,”伯頓的分析師說。“這兩者強調的是如何相互合作,比如說,Web服務的XML和HTTP如何相互合作。后臺如何運行已經不重要了。”
最后,ZapThink公司的Bloomberg說:企業級的JavaBeans/Servlet/Java Server Pages框架都與SOA不一致。
“你可以看到,Java EE的重點在于為可升級的n-層架構提供框架,這正是那些大的事務處理網站所需要的,” Bloomberg說。“然而,如果你是要為SOA創建一個企業級框架的話,那么你所要完成的構建與在Java EE平臺下的構建就大相庭徑了。你需要創建的框架是以激活和維持服務提取層為中心的,這對SOA而言是至關重要的。因此,Java EE非常適合于基于平臺的日常服務,但不是SOA。”