作者: Shashank Tiwari 翻譯: Thomas 來源: O’Reilly
作者簡(jiǎn)介: Shashank Tiwari(又名Shanky),Saven Technologies的首席架構(gòu)師。有多年從事高性能應(yīng)用程序設(shè)計(jì)和開發(fā)的經(jīng)驗(yàn)。近年來,主要關(guān)注面向服務(wù)架構(gòu)。他定期地在許多科技期刊上發(fā)表文章,并且常以開發(fā)者導(dǎo)師和架構(gòu)師的身份出席研討會(huì)。他同時(shí)也是開源軟件的熱心支持者。現(xiàn)和他的妻子以及兩個(gè)兒子居住在美國(guó)紐約。
摘要: 本文分析了JBoss Seam有望取代Struts成為Java Web應(yīng)用框架”下一個(gè)王者”的原因,并且指出了Spring和Google Web工具包的不足。
時(shí)至今日,Apache Struts仍舊是最受歡迎的Java Web應(yīng)用框架。然而,對(duì)于新的應(yīng)用開發(fā),它顯得有些過時(shí),并且存在很多不足。
目前已經(jīng)出現(xiàn)了幾個(gè)有望取代Struts的框架,但是還沒有最終的勝利者。你認(rèn)為誰會(huì)當(dāng)之無愧地成為領(lǐng)導(dǎo)者呢?如果你是一個(gè)Java Web應(yīng)用程序的開發(fā)者,你會(huì)選擇哪種框架呢?
目前已經(jīng)有了很多受歡迎的Web UI技術(shù),包括富界面、AJAX、RIA和其他一些相似的技術(shù)。
然而,在服務(wù)器端仍然只有Java——Java中有許多基于JSP和Servlets的、流行的服務(wù)器端技術(shù)。許多時(shí)候,這些服務(wù)器端技術(shù)需要和客戶端的富界面技術(shù)一起使用。
舉例來說,許多開發(fā)人員將AJAX與新生代的Java Web框架JSF合并起來一起使用;還有些開發(fā)人員通過Java遠(yuǎn)程調(diào)用庫、開源或者商業(yè)代碼來調(diào)用JavaScript和ActionScript,用于遠(yuǎn)程訪問服務(wù)器端。
這是否意味著,我們需要應(yīng)用一個(gè)像Apache Shale那樣,可以很好地和JSF工作的框架呢?這是否意味著,我們只需要根據(jù)Web應(yīng)用中的Java部分,只使用遠(yuǎn)程訪問包和Servlets呢?或 者意味著,我們應(yīng)該使用一個(gè)包含兩者的框架,例如,JBoss Seam?
在回答這些問題之前,讓我們先關(guān)注一下另外一個(gè)問題:了解Sun究竟在說什么。
不幸的是,在這點(diǎn)上,Sun沒有明確的信息。它有三種戰(zhàn)略,并且在同一時(shí)間,它說出了全部這三種。它們是:
1. JSF——基于規(guī)范的服務(wù)器端組件,用于加強(qiáng)早期的Servlets和JSF模型。
2. Swing——用于Web的、以虛擬機(jī)為基礎(chǔ)的解決方案。在”富界面時(shí)代”,應(yīng)該有這樣一個(gè)領(lǐng)導(dǎo)者,畢竟它誕生于10年前。但是,不幸的是,它落伍了。Swing應(yīng)用框架被譽(yù)為能使Swing復(fù)活的”救世主”。但是,我不認(rèn)為這能”破冰”。
3. JavaFX——目前主要是在新聞上會(huì)提到它,而實(shí)際應(yīng)用還是很少。富Web應(yīng)用框架包含手機(jī)、網(wǎng)站和任何其他接口,這就是答案所在。而只有時(shí)間才能告訴 什么會(huì)變成它。我的觀點(diǎn)是,在做更多事情之前,Sun已經(jīng)使開發(fā)者們興奮起來。所以,在開發(fā)者們感到失望并且離開這個(gè)陣營(yíng)之前,它實(shí)際上可能是一個(gè)奇妙的 選擇。
現(xiàn)在,我們有了這些信息,但是我對(duì)Sun的方向卻產(chǎn)生了困惑,我們應(yīng)該選擇哪種作為Web應(yīng)用技術(shù)呢?
我的觀點(diǎn)是,Swing會(huì)敗下陣來(或許Swing技術(shù)是偉大的,但是要改變這一印象,還有大量的工作需要做);JavaFX在當(dāng)前階段只是一個(gè)承諾,在很長(zhǎng)時(shí)間內(nèi),它的真正特性不會(huì)變得明朗起來;
因此,唯一可行的選擇是JSF。當(dāng)然,JSF自身有一系列的問題。但是,像Seam這樣的框架和包含ICEfaces這樣的AJAX組件,將會(huì)是一個(gè)好的選擇。
此外,使用Seam這樣的框架,你不需要依賴于JSF,并且你甚至可以使用它來遠(yuǎn)程訪問Java服務(wù)器端的純JavaScript(例如,Dojo 工具包)或者Adobe Flex應(yīng)用。JSF 2.0和JavaServlets 3.0也即將推出,兩者的推出將會(huì)對(duì)之前的版本有大大的改進(jìn)。
在我們結(jié)束討論,并且有點(diǎn)傾向于使用Seam作為選擇的框架之前,還有兩個(gè)選擇值得考慮——Spring和Google Web工具包。
如果你已經(jīng)在服務(wù)器端使用了Spring,將會(huì)發(fā)現(xiàn)Spring是一個(gè)偉大的選擇,項(xiàng)目組里的每個(gè)人都知道Spring很棒!
然而,Spring在很多方面,偏離了Java EE標(biāo)準(zhǔn),但是我建議緊跟標(biāo)準(zhǔn)。
有趣的是,Seam可以和Spring工作在一起,并且Spring beans可以被用作Seam組件。
Google Web工具包是一個(gè)充滿想象力的工具,它通過把Java代碼轉(zhuǎn)換成JavaScript來撫慰Java開發(fā)者們。我認(rèn)為它像”技術(shù)搖滾明星”一樣吸引了許多開發(fā)人員的關(guān)注。目前,它也在被大量采用。
然而,它不是一個(gè)完整的Web框架。
有趣的是,它也可以和Seam工作在一起。所以,我不認(rèn)為今天還有什么能夠好過Seam?!
JBoss Seam或許不是100%的答案,也或許還沒有達(dá)到Apache Struts所達(dá)到的級(jí)別。但是,它已經(jīng)在領(lǐng)跑了,并且毫無疑問的是,它將繼續(xù)領(lǐng)跑,除非有新的選擇出現(xiàn)。
審校:Richard
原創(chuàng)文章如轉(zhuǎn)載,請(qǐng)注明:轉(zhuǎn)載自JBoss Seam中文站
[ http://www.jbossseam.com/ ]
本文鏈接地址:http://www.jbossseam.com/2007/11/14/seam-replace-struts/
|
|