EJB和Spring全面比較
Rod Johnson將Indeed.com(一個求職網(wǎng)站)職位列表中對EJB和Spring兩種技能的需求數(shù)量進行了對比,并通過分析這一統(tǒng)計數(shù)據(jù)得出了一些關(guān)于EJB的發(fā)展過程及其未來的結(jié)論。他圍繞著會話Bean和消息Bean對EJB展開了討論,并承認JPA做為獨立的規(guī)范是有價值的,JPA“是基于現(xiàn)代技術(shù)并已開始體現(xiàn)其價值”。首先,Johnson闡述了職位要求所體現(xiàn)的趨勢的重要性:
職位列表是技術(shù)真正被采納的良好指示器。它們表明公司是否把錢花在了“刀刃”上;它們?yōu)殚_發(fā)人員指明獲取、增強相關(guān)技能的重要性(這是技術(shù)延續(xù)的一個重要因素);它們還為公司穩(wěn)妥地采用特定技術(shù)提供了良好的指導(dǎo)。
隨后,Johnson介紹了下面這個EJB和Spring圖表。該圖表顯示,截止到2007年11月,Java職位列表對Spring技能的需求已經(jīng)超越了EJB。他認為倘若現(xiàn)在基于EJB的應(yīng)用數(shù)量仍相當(dāng)可觀的話,那是很令人驚詫的。
Johnson評論這些趨勢的時候有些洋洋自得,因為他2003年以來就預(yù)言EJB會因他在J2EE without EJB一書中描述的那些缺點而失去其實用性。甚至在他看來,EJB3.0新的改進也不足以遏制這種趨勢:
EJB 3.0改進了一些事情,但還是太少、太遲:依賴注入(DI)的能力不足以滿足實際需要;攔截API認識到了需要有一個對橫切關(guān)注點的解決方案,但我們看到的還是一個最差、最笨重、最容易出錯的解決方案(我一直想在博客上發(fā)布的一些東西);由于要兼容那些現(xiàn)在已不相關(guān)的舊有技術(shù),把它拖累了;沉重的EJB契約(它比“簡化的編程模型”多出數(shù)百頁)需要一個相當(dāng)復(fù)雜的運行時環(huán)境,而且開銷很大;盡管有語法糖(syntax sugar),但它還是不能掩蓋EJB的大量缺陷,例如啟動行為、單例、以及廢棄的線程模型。***,每次改變基礎(chǔ)環(huán)境的時候,它都要有效地綁定到一個應(yīng)用服務(wù)器環(huán)境中去。
接下來,他解釋了對整個行業(yè)及開發(fā)人員個體來說,EJB的衰落意味著什么:
這不是反對標(biāo)準——而僅僅是有選擇性地反對那些無實際意義的標(biāo)準。正如我長期以來一直指出的那樣,Java EE不只是EJB,任何關(guān)心這個平臺的人都應(yīng)該真誠地對待其各部分的質(zhì)量和關(guān)聯(lián)性。
隨著越來越先進的技術(shù),業(yè)務(wù)對象變成了POJOs,對特殊組件模型的依賴在減少,標(biāo)記也變得不那么重要了。
拋棄EJB后會有更好的架構(gòu)靈活性來應(yīng)對需求的變化。隨著SOA和其它力量的興起,公司也越來越多地選擇輕量級的部署平臺。
Johnson總結(jié)到:“由于其絕對數(shù)量仍然相當(dāng)多,EJB不會很快消失。但是趨勢曲線清楚地表明它正在逐漸成為過去”。EJB懷疑論者Rick Hightower也相信EJB仍然會存在一段時間。同時,他還表現(xiàn)出對這種對比方式的關(guān)注:
然而,EJB被廢棄還是比較遙遠的事情,難道不是嗎?把Spring這樣的通用架構(gòu)(比如Spring MVC、Spring WebFlow、Spring XXX)和EJB這樣有側(cè)重點的框架放在一起做比較真的公平嗎?正如從Seam,EJB和Spring的比較圖中看到的一樣,對現(xiàn)有的開發(fā)人員來說,這種相對比較的方式是很不公平的。
對于象Seam這樣的技術(shù)顯然有一些疏漏,但Seam結(jié)合了EJB 3.0,它也彌補了很多EJB模型原有的缺點,也提供了許多與Spring一樣的優(yōu)點(使用POJOs和IOC等)。依我愚見,它要比Spring更好一些(比如說,它幾乎完全基于注釋,而不是XML)。我不是想打擊Spring,我只是想說結(jié)合了Seam和其它技術(shù)(像JSF)的EJB3提供了一個非??尚械腟pring的替代方法。
假如基于EJB的那些應(yīng)用中有相當(dāng)一部分內(nèi)容是依賴于應(yīng)用服務(wù)器的,而應(yīng)用服務(wù)器恰恰是采用EJB規(guī)范專有的實現(xiàn),那么在一些為它們的核心 Java企業(yè)組件模型權(quán)衡開源框架的公司中,這些趨勢會增加他們的信心。這些對比在表明Spring框架正在走向勝利的同時,不也恰恰表明EJB模型即將開始失去其實用性了嗎?查看英文原文:Spring Overtakes EJB as a Skills Requirement?
【編輯推薦】