BlogJava 聯(lián)系 聚合 管理  

          Blog Stats

          文章分類

          隨筆檔案

          文章檔案

          Design Pattern

          J2EE

          J2EE FrameWork


          紅玫瑰

          JSF VS Tapestry 全面比較(一)

          作者:   by Phil Zoio
          翻譯:   BlueCrystal
          來自:  
          http://www.theserverside.com/articles/article.tss?l=JSFTapestry

            目前應(yīng)用很廣泛而且也很成熟的Struts應(yīng)用開發(fā)框架,在未來幾年里將會(huì)逐漸淡出,其基于Action(action-based)的開發(fā)模型也將被活躍的java社區(qū)所推崇的新的開發(fā)模型所替代,對(duì)于java開源社區(qū)來說,追求完美是很多人的理想。在2000年初誕生的Struts以及其他類似的 MVC(Model View Controler)框架主要都是以操作為中心,且都是無狀態(tài)的開發(fā)模型,而現(xiàn)在,基于組件(component-based)和事件驅(qū)動(dòng)(event- driven)的開發(fā)模型逐漸流行起來,在很多時(shí)候都成了Struts的有利競(jìng)爭(zhēng)者,這其中來自jcp的jsr127-JavaServer Faces(JSF)以及來自apache的Tapestry是其中的佼佼者。

            在這篇文章中,我們將把這兩種框架JSF和Tapestry進(jìn)行詳細(xì)的對(duì)比。我們的比較將涉及到兩種框架的設(shè)計(jì)、運(yùn)行環(huán)境以及如何開發(fā)。比較的目的在于讓讀者了解這兩種框架各自的優(yōu)缺點(diǎn),以便于在自己的項(xiàng)目中,根據(jù)實(shí)際情況,選擇合適的框架。該文章的內(nèi)容基于JSF1.1和Tapestry3.0.3 (在個(gè)別地方由于需要會(huì)談到Tapestry4.0)。


            JSF和Tapestry簡(jiǎn)介
              
            JSF源于JCP(Java Community Process)的JSR127規(guī)范。Sun公司自己同時(shí)也對(duì)該規(guī)范提供了一個(gè)實(shí)現(xiàn),目前的版本是1.1,而且該項(xiàng)目的設(shè)計(jì)者之一正是Struts的作者 Craig McClanahan。另外一個(gè)JSF的實(shí)現(xiàn),就是Apache的一個(gè)項(xiàng)目MyFaces。目前,幾個(gè)主流的java開發(fā)工具廠商都在其java ide中提供了對(duì)jsf的支持,比如Sun、Oracle、IBM、Borland等,而且JSF的后續(xù)版本JSF1.2也將成為J2EE5.0的一個(gè)組成部分。
              
            Tapestry最初于2000年在SourceForge注冊(cè),來自于Apple WebObjects,隨后,于2003年成為Apache的一個(gè)項(xiàng)目。與JSF不同的是,Tapestry并不是某一個(gè)jsr規(guī)范的實(shí)現(xiàn),它僅僅是一個(gè)開源項(xiàng)目,當(dāng)前版本是3.0.3。4.0版本預(yù)計(jì)也將在后面的一段時(shí)間內(nèi)推出。
            JSF和Tapestry作為MVC框架,在一些基本特性上是非常類似的:

          •     它們都讓開發(fā)者不再直接與Servlet API打交道,而是讓開發(fā)者在一個(gè)更高的抽象層上思考問題;
          •     它們都將web頁面上的顯示元素綁定到一個(gè)java對(duì)象的某個(gè)屬性上,這些屬性可能是字符串、數(shù)字、日期或者其他類型,并且由該對(duì)象來維護(hù)其狀態(tài)。用戶在頁面上的交互行為(比如用鼠標(biāo)點(diǎn)擊一個(gè)按鈕或者鏈接)都直接映射為java類中的一個(gè)事件處理方法;
          •     兩種框架都支持組件式的開發(fā)方式,并且開發(fā)的組件可被其他開發(fā)者重用。兩種框架都自帶一個(gè)標(biāo)準(zhǔn)組件庫,提供web開發(fā)的常見通用功能。

            在下面的章節(jié)里面,我們將會(huì)看見這兩個(gè)框架在各自的實(shí)現(xiàn)方式上是有很大區(qū)別的。對(duì)于大多數(shù)程序員來說,基于兩種框架做開發(fā),將是非常不同的兩種體驗(yàn)。

            Sidebar: 例子程序
            在下面本文提供了一個(gè)例子程序,該程序的代碼大部分都將在這片文章中做出詳細(xì)的描述。這個(gè)程序主要就是一個(gè)管理個(gè)人假期的工具,它的主要功能包括:
            * 一個(gè)home界面, 列出所有登記的假期,包括假期開始時(shí)間、天數(shù)以及一下描述信息;
            * 一個(gè)detail界面,用于瀏覽某一登記假期的詳細(xì)信息;
            * 一個(gè)new界面,用于添加一個(gè)假期信息。

            下面這幅圖展示了該程序的主體流程和功能:


            你可以從下列地址下載該程序基于不同框架的源代碼:
            
          JSF version
            Tapestry version

          posted on 2005-11-09 16:54 vaga 閱讀(147) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE學(xué)習(xí)筆記
          主站蜘蛛池模板: 阿合奇县| 自治县| 淮安市| 裕民县| 宝兴县| 靖西县| 虎林市| 香格里拉县| 佛冈县| 肇东市| 沾化县| 德令哈市| 南安市| 鄄城县| 晴隆县| 华阴市| 黄大仙区| 海兴县| 肥乡县| 神池县| 友谊县| 兴城市| 古田县| 苏尼特左旗| 庆安县| 紫云| 潼关县| 美姑县| 常熟市| 商南县| 浏阳市| 广平县| 内乡县| 交城县| 郴州市| 溧阳市| 洞口县| 伽师县| 新建县| 长垣县| 贵州省|