Java今年已經11歲了。在這11年裏,被應用到了企業、桌面、Web、移動等各個領域。其中覆蓋面最廣的J2EE及相關產品被廣泛應用到企業中。但從1999年誕生的第壹個J2EE版本壹直到 J2EE1.4總被人們不斷地抱怨,這並不是因為它不夠強大,恰恰相反,正是因為它太強大了,強大得讓人難以使用。
Sun這些年也壹直在試圖改變這壹切,但壹直未能如願。在2002年J2EE1.4推出後,它的復雜程度達到了頂點。尤其是EJB2.0,開發和調試的難度非常大。也許是Sun要下決心改變這壹切,或者是受到市場和開發人員的壓力,終於在今年5月份正式發布了J2EE5(現已經改名為Java EE 5)規範,並宣稱Java EE 5將是Java EE史上最簡單的版本,它將大大降低開發難度。但業界對此卻表示懷疑。Java EE 5真的變簡單了嗎?這好像有點突然!Java EE在未來是否能走上壹條簡單的光明之路呢?
Java EE 5橫空出世
Java EE 5終於在千呼萬喚中誕生了。在今年的JavaOne會議上,Sun特意派去了壹個宣講團,對Java EE 5進行了大吹特吹,並稱Java EE 5最大的改變就是簡化開發。同時,還特別提到了EJB3.0可以通過Java最新提供的註釋(annotations)以及其它壹些特性來提高開發和測試的效率。Sun的鼓吹聲還沒有完全散盡,業界的噓噓聲就此起彼伏。壹位高級分析師,Richard Monson-Haefel,稱Java EE 5雖然做了很多改進,但仍然無法克服它的龐大和復雜。這位高級分析師目前是EJB3.0規範的設計者之壹,從Java EE 5的設計者口中說出這樣的話,我想它的分量壹定不輕。
也許Sun並不願意聽到這樣的評論。但Monson-Haefel還是喋喋不休地數落著Java EE 5的種種不是。
Monson-Haefel說:“Java EE中的功能高度集成,我們將無法單獨使用其中的壹部分。而且許多Servlet、Java數據庫和JavaServer Pages開發人員壹般只使用Java EE的某些相關的特性。但Java EE規範要求必須使用所有的特性[APIs]。為了使程序可以正常運行,這些開發人員不得不建立壹個復雜的工程來滿足這些要求。這是因為Java EE仍然保持了上世紀90年代後期的編程方法,也就是說Java EE是以API為中心的”。Monson-Haefel甚至危言聳聽地稱“Java EE的應用已經走到了盡頭!”。
也並不是所有的人都象Monson-Haefel這麽悲觀。壹位JBoss公司的發言人說:“我們並不完全反對Burton集團高級分析師 Richard Monson-Haefel的關於平臺復雜性的觀點,但是沒有人同意他關於Java EE的應用已經走到盡頭的這個結論。”
IBM壹向是Java的忠實支持者,也站出來為Java EE說話。Jim Knudson,作為IBM 的Java EE架構師,曾公開表示“雖然Java EE平臺在使用上是有壹些復雜,但這並不能成為我們放棄這個平臺的理由”。
Java EE 5剛壹問世,就引來了這麽多的議論,當然,這些議論有好的,也有對Java EE 5不利的。那麽Java EE的主要用戶群:企業,該如何做出選擇呢?
企業會為Java EE 5埋單嗎?
Java EE 5面世後,企業該如何選擇呢?以前使用J2EE1.4及以前版本的企業會升級到Java EE 5嗎?
也許Monson-Haefel的壹席話會嚇倒很多企業。但Jim Knudson對此仍然很樂觀。雖然他表示同意Java EE平臺很復雜這壹觀點,但是他說某些復雜性是來自於用戶的需求,並且我們要使用戶達到他們期望的效果。他說IBM的那些預期實現SOA的用戶都打算在 Java EE 5平臺上面構建SOA。
JBoss產品管理部主管Ram Venkataraman也支持這樣的觀點:Java EE平臺增加了復雜性是有必要的,因為需要使用它來處理各種服務,不僅僅是簡單的調用關系數據庫的Ajax風格Web服務,而且還有大容量事務處理的財務服務。
也許很多企業的負責人聽了這些對Java EE 5贊揚的話,他們會迫不急待地嘗試壹下Java EE 5。這對於那些已經或即將搭建SOA構架的企業尤其重要。由於基於Java的SOA壹般都是建立在J2EE服務器上,這就迫使企業必須做出是否升級到新版 Java EE的選擇。
如果企業選擇了Java EE 5,那可能會增加後續的成本。這是因為Java EE 5是基於Sun最新的JDK的,因此,Java EE 5增加了很多新的API。雖然這些API好象使Java EE 5變得更簡單了,但開發人員必須要學習壹整套新的編程模型持久化的API。而這些企業必須為此增加培訓的費用。
其實Sun的初衷也是好的,只是簡化Java EE的做法不妥。也許Sun還不明白,壹味地增加功能並不能有效地簡化Java EE的使用難度,有時還可能適得其反。如果Sun能夠加壹個用於開發的所見即所得(WYSIWYG)的拖放系統,那才叫真正地簡化開發。而象這樣增加很多的API,甚至將編程的思維方式都改變了,這樣做並不能使Java EE平臺變得更簡單,而只是換湯不換藥而已。
自從Sun將Java EE平臺的設計移交給JCP後,對於Java EE逐漸增加的復雜性,JCP也難辭其咎。作為JCP的成員,Monson-Haefel和JCP的所有成員應該為Java EE 5變成今天這個樣子而負責。實際上JCP的成員很早就和Sun的Java EE 5開發團隊討論過這個問題,但Sun表現得並不積極。這樣看來,JCP和Sun都應該為此負壹定的責任。
JCP的主管,Onno Kluyt卻有不同的看法:“Monson-Haefel所看到的復雜性問題並不是JCP所負責的範圍。JCP是壹個制定標準的組織,並不是壹個負責優化的組織,並不應該為Java EE 5的復雜性負責”。同時Kluyt還提到讓Java EE 5變得更簡單最好方法就是有壹個好的IDE,簡單是每個JSR所關註的,也是它們的中心任務。然而Java EE的開發者並不知道怎麽去做。畢竟,Java EE是否簡單,它的開發人員並沒有發言權,而最有發言權的是那些使用Java EE的人。”
Java EE:路在何方
也許上面的喋喋不休使我們的頭都大了,但我們可以不必管它。最後還得讓Sun來蓋棺定論。終於,Sun公司負責企業Java平臺的副總裁Karen Padir為Java EE 5作了比較中庸的闡述:“平臺當然要復雜了,因為它是應用服務器的規範。而且,應用服務器是很復雜的,因為復雜性的存在主要是為了開發人員能夠在應用服務器上工作,但是應用程序的開發人員並不壹定會涉及到復雜性,因為他們僅僅使用那些完成工作所必需的工具就可以了。開發人員可以忽略他們所不需要的復雜性”。
就象微軟的Office壹樣,雖然復雜,但並不是所有的人都會涉及到所有復雜的功能。因此,Java EE並沒有我們想象的那樣復雜。反而通過JDK5的支持,在某些應用的性能上,如Web Services,會有很大的提高。因此,如果企業要建立新的應用(尤其是SOA),還是可以考慮Java EE 5的。對於那些已經使用多年的系統來說,升級時得要慎重壹些。不過,從總體來說,Java EE 5還是非常不錯的。