空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

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

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

            在這篇文章中,我們將把這兩種框架JSF和Tapestry進行詳細的對比。我們的比較將涉及到兩種框架的設計、運行環境以及如何開發。比較的目的在于讓讀者了解這兩種框架各自的優缺點,以便于在自己的項目中,根據實際情況,選擇合適的框架。該文章的內容基于JSF1.1和Tapestry3.0.3 (在個別地方由于需要會談到Tapestry4.0)。


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

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

            在下面的章節里面,我們將會看見這兩個框架在各自的實現方式上是有很大區別的。對于大多數程序員來說,基于兩種框架做開發,將是非常不同的兩種體驗。

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

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


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

          posted on 2006-12-08 19:31 蘆葦 閱讀(234) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 镇坪县| 乐清市| 安新县| 安徽省| 泸水县| 沅陵县| 峨眉山市| 蓬莱市| 县级市| 南川市| 南投县| 通州区| 青田县| 密山市| 农安县| 大洼县| 北京市| 镇雄县| 武宁县| 石景山区| 开阳县| 阜宁县| 绥阳县| 大丰市| 清涧县| 丰县| 仁化县| 石楼县| 花垣县| 霍林郭勒市| 宽城| 宿迁市| 永平县| 托里县| 宜春市| 安远县| 汝州市| 石屏县| 扎鲁特旗| 依安县| 山东省|