翻譯: 雙魚(yú)瓶 來(lái)源: JBoss
摘要: 本文從多角度、較全面地總結(jié)了Seam的優(yōu)勢(shì)。
一、增加AJAX特征的最快捷方式
在功能上,Ajax改變了Web的交互模型。傳統(tǒng)Web客戶端所使用的同步、粗粒度的請(qǐng)求,引發(fā)了很多服務(wù)器端應(yīng)用吃掉少量的緩存,并且沒(méi)有帶來(lái)緩存級(jí)別的并發(fā)操作。
許多情況下,”無(wú)狀態(tài)”的架構(gòu)只是基本的解決方案,卻遠(yuǎn)遠(yuǎn)不夠!Ajax客戶端通過(guò)很多異步、并行、細(xì)粒度的請(qǐng)求和服務(wù)器連接,使開(kāi)發(fā)人員可以輕易地連接和獲取遠(yuǎn)端”數(shù)據(jù)庫(kù)”信息。
可是如果狀態(tài)在交互時(shí)被保存到內(nèi)存,并行相關(guān)的bugs將會(huì)非常危險(xiǎn),因?yàn)镴ava EE平臺(tái)并不處理會(huì)話級(jí)別的并發(fā)。
最初設(shè)計(jì)的時(shí)候,Seam被構(gòu)想成在Ajax基礎(chǔ)上,整合并行模型和狀態(tài)管理模型。
Seam1.1整合了許多基于JSF的開(kāi)源Ajax解決方案,像ICEfaces和Ajax4JSF,同時(shí)加入了Seam的狀態(tài)和并行管理引擎。開(kāi)
發(fā)人員可以輕松地在程序中應(yīng)用Ajax,甚至不需要學(xué)習(xí)JavaScript;并且將遠(yuǎn)離單獨(dú)使用Ajax時(shí)潛在的bugs和性能問(wèn)題。
二、開(kāi)始使用EJB 3.0的最簡(jiǎn)單方式
EJB 3.0是成熟的事務(wù)組件模型,也是最新JPA(Java持久層API)關(guān)注的技術(shù),但支持EJB 3.0的Java Web應(yīng)用框架卻很少。這樣,你需要去寫(xiě)自己的整合代碼。但在大多數(shù)情況下,開(kāi)發(fā)人員整合的方式并不能充分利用EJB 3.0的優(yōu)勢(shì)。
EJB 3.0是Seam使用的核心技術(shù),你可以無(wú)處不在地使用整合的EJB 3.0組件模型。因?yàn)樵赟eam應(yīng)用中,每個(gè)類(lèi)都是一個(gè)EJB組件。你甚至不用寫(xiě)任何整合代碼,即可”美化”你的框架。
當(dāng)然,你也可以選擇不使用EJB 3.0,JBoss Seam使你”魚(yú)與熊掌可兼得”。
三、充分挖掘JSF特性的最佳方式
JSF已經(jīng)有許多組件庫(kù)和插件以供使用,也當(dāng)之無(wú)愧地成為Java界最有吸引力的Web開(kāi)發(fā)框架。但是JSF過(guò)度地依賴(lài)于XML配置,并且創(chuàng)建豐富網(wǎng)頁(yè)界面的特性并不多。
Seam將使用注解的方式代替繁瑣的XML配置,減少代碼量的同時(shí)也提高了開(kāi)發(fā)效率。
Seam在很多方面擴(kuò)展了JSF的功能:包括多窗口操作、工作空間管理、基于模型的驗(yàn)證、基于jBPM的頁(yè)面流、國(guó)際化和頁(yè)面分段緩存等等。
Seam甚至還加入了控制標(biāo)簽化頁(yè)面的機(jī)制。
JSF沒(méi)有涉及訪問(wèn)事務(wù)資源,Seam考慮到了這一點(diǎn),將JTA、JPA和EJB 3.0與JSF無(wú)縫地整合起來(lái)。
四、實(shí)現(xiàn)業(yè)務(wù)流程管理(BPM)的最簡(jiǎn)單方式
jBPM是用于解決存在復(fù)雜人員協(xié)作或者復(fù)雜用戶交互的Web應(yīng)用程序的解決方案。
BPM技術(shù)不僅方便開(kāi)發(fā)人員和分析人員建模、應(yīng)用以及優(yōu)化業(yè)務(wù)過(guò)程,而且可以在整個(gè)操作和管理過(guò)程中評(píng)估業(yè)務(wù)流程的效率和發(fā)掘業(yè)務(wù)流程中會(huì)出現(xiàn)的問(wèn)題。
Seam深度整合了jBPM,使用jBPM進(jìn)行任務(wù)管理和頁(yè)面流管理將變得異常簡(jiǎn)單。
Seam和jBPM的結(jié)合將使一些項(xiàng)目的開(kāi)發(fā)時(shí)間減少一個(gè)月左右。
五、使得CRUD同樣簡(jiǎn)單
Seam也同樣處理復(fù)雜企業(yè)應(yīng)用中的棘手問(wèn)題:增刪改查。但這并不意味著解決的方式會(huì)很難上手。
在創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用中,Seam將整合現(xiàn)有易用的數(shù)據(jù)層框架,包括JPA、Hibernate等,使開(kāi)發(fā)人員可以通過(guò)一些數(shù)據(jù)庫(kù)反向工程工具和命令行工具高效地開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用。
六、持久層工作將是”小菜一碟”
Seam來(lái)源于Hibernate社區(qū),由Hibernate創(chuàng)始者Gavin King設(shè)計(jì)和開(kāi)發(fā)。
Seam會(huì)話模型解決了傳統(tǒng)無(wú)狀態(tài)的Web應(yīng)用架構(gòu)導(dǎo)致的持久層相關(guān)問(wèn)題。無(wú)論你是使用Hibernate還是JPA,Seam使用擴(kuò)展的持久化上下文都將使開(kāi)發(fā)變成簡(jiǎn)單,同時(shí)也可以使開(kāi)發(fā)人員避免在集成環(huán)境下使用持久化上下文時(shí)不必要的狀態(tài)重復(fù)。
七、注釋功能
Seam是第一個(gè)從始至終、從持久層到表示層,都使用Java 5注釋功能的程序模型。
你將不會(huì)再因?yàn)榉爆嵉腦ML配置而感到迷失方向。同時(shí)在Seam中,開(kāi)發(fā)人員也可以使用XML,Seam提供成熟的基于XML的組件配置機(jī)制,使開(kāi)發(fā)人員不會(huì)再在XML配置里迷失。
八、為自動(dòng)化集成測(cè)試而喝彩
任何項(xiàng)目都需要自動(dòng)單元測(cè)試,但是僅僅依靠單元測(cè)試是十分危險(xiǎn)的。許多的bugs出現(xiàn)在組件之間或者組件和容器的交互過(guò)程中。單元測(cè)試無(wú)法捕捉容器的行為,也無(wú)法捕捉組件間的交互。
Seam引入了一種新方式:”自動(dòng)化集成測(cè)試”。你可以模擬每個(gè)請(qǐng)求或者會(huì)話的全部業(yè)務(wù)流,來(lái)測(cè)試應(yīng)用中從持久層到表示層的所有Java代碼。
九、開(kāi)放性標(biāo)準(zhǔn)與開(kāi)源的結(jié)合
Seam建立在實(shí)現(xiàn)開(kāi)放標(biāo)準(zhǔn)的、像JSF和 EJB 3.0這樣的開(kāi)源項(xiàng)目基礎(chǔ)上,并且整合了其他優(yōu)秀的開(kāi)源項(xiàng)目,如Hibernate、jBPM、Facelets、Drools等等。
Seam的締造者們都是EJB、JPA、Bean驗(yàn)證和JSF等領(lǐng)域的專(zhuān)家組成員,并且領(lǐng)導(dǎo)過(guò)制定Web Beans規(guī)范(JSR-299)的專(zhuān)家組–用于將Seam里的一些想法帶入Java EE標(biāo)準(zhǔn)中。
Seam項(xiàng)目是完全建立在”致力于Java平臺(tái)的創(chuàng)新和提高”的開(kāi)源項(xiàng)目理念上的開(kāi)源框架。
十、快速上手
只要你試用它,就會(huì)愛(ài)上它!
審校:駱駝
原創(chuàng)文章如轉(zhuǎn)載,請(qǐng)注明:轉(zhuǎn)載自JBoss Seam中文站
[ http://www.jbossseam.com/ ]
本文鏈接地址:http://www.jbossseam.com/2007/11/10/ten-good-reasons-to-use-seam/

歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站
萌萌的IT人