程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> EJB和Spring全面比較

EJB和Spring全面比較

編輯:J2EE

Rod Johnson將Indeed.com(一個求職網站)職位列表中對EJB和Spring兩種技能的需求數量進行了對比,並通過分析這一統計數據得出了一些關於EJB的發展過程及其未來的結論。他圍繞著會話Bean和消息Bean對EJB展開了討論,並承認JPA做為獨立的規范是有價值的,JPA“是基於現代技術並已開始體現其價值”。首先,Johnson闡述了職位要求所體現的趨勢的重要性:

職位列表是技術真正被采納的良好指示器。它們表明公司是否把錢花在了“刀刃”上;它們為開發人員指明獲取、增強相關技能的重要性(這是技術延續的一個重要因素);它們還為公司穩妥地采用特定技術提供了良好的指導。

隨後,Johnson介紹了下面這個EJB和Spring圖表。該圖表顯示,截止到2007年11月,Java職位列表對Spring技能的需求已經超越了EJB。他認為倘若現在基於EJB的應用數量仍相當可觀的話,那是很令人驚詫的。

Java職位列表

Johnson評論這些趨勢的時候有些洋洋自得,因為他2003年以來就預言EJB會因他在J2EE without EJB一書中描述的那些缺點而失去其實用性。甚至在他看來,EJB3.0新的改進也不足以遏制這種趨勢:

EJB 3.0改進了一些事情,但還是太少、太遲:依賴注入(DI)的能力不足以滿足實際需要;攔截API認識到了需要有一個對橫切關注點的解決方案,但我們看到的還是一個最差、最笨重、最容易出錯的解決方案(我一直想在博客上發布的一些東西);由於要兼容那些現在已不相關的舊有技術,把它拖累了;沉重的EJB契約(它比“簡化的編程模型”多出數百頁)需要一個相當復雜的運行時環境,而且開銷很大;盡管有語法糖(syntax sugar),但它還是不能掩蓋EJB的大量缺陷,例如啟動行為、單例、以及廢棄的線程模型。最後,每次改變基礎環境的時候,它都要有效地綁定到一個應用服務器環境中去。

接下來,他解釋了對整個行業及開發人員個體來說,EJB的衰落意味著什麼:

這不是反對標准——而僅僅是有選擇性地反對那些無實際意義的標准。正如我長期以來一直指出的那樣,Java EE不只是EJB,任何關心這個平台的人都應該真誠地對待其各部分的質量和關聯性。

隨著越來越先進的技術,業務對象變成了POJOs,對特殊組件模型的依賴在減少,標記也變得不那麼重要了。

拋棄EJB後會有更好的架構靈活性來應對需求的變化。隨著SOA和其它力量的興起,公司也越來越多地選擇輕量級的部署平台。

Johnson總結到:“由於其絕對數量仍然相當多,EJB不會很快消失。但是趨勢曲線清楚地表明它正在逐漸成為過去”。EJB懷疑論者Rick Hightower也相信EJB仍然會存在一段時間。同時,他還表現出對這種對比方式的關注:

然而,EJB被廢棄還是比較遙遠的事情,難道不是嗎?把Spring這樣的通用架構(比如Spring MVC、Spring WebFlow、Spring XXX)和EJB這樣有側重點的框架放在一起做比較真的公平嗎?正如從Seam,EJB和Spring的比較圖中看到的一樣,對現有的開發人員來說,這種相對比較的方式是很不公平的。

EJB3、Seam和Spring的比較

對於象Seam這樣的技術顯然有一些疏漏,但Seam結合了EJB 3.0,它也彌補了很多EJB模型原有的缺點,也提供了許多與Spring一樣的優點(使用POJOs和IOC等)。依我愚見,它要比Spring更好一些(比如說,它幾乎完全基於注釋,而不是XML)。我不是想打擊Spring,我只是想說結合了Seam和其它技術(像JSF)的EJB3提供了一個非常可行的Spring的替代方法。

假如基於EJB的那些應用中有相當一部分內容是依賴於應用服務器的,而應用服務器恰恰是采用EJB規范專有的實現,那麼在一些為它們的核心 Java企業組件模型權衡開源框架的公司中,這些趨勢會增加他們的信心。這些對比在表明Spring框架正在走向勝利的同時,不也恰恰表明EJB模型即將開始失去其實用性了嗎?查看英文原文:Spring Overtakes EJB as a Skills Requirement?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved