BlogJava 联系 聚合 管理  

Blog Stats

文章分类

随笔档案

文章档案

Design Pattern

J2EE

J2EE FrameWork


红玫瑰

JSF VS Tapestry 全面比较(一)

作者:   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 2005-11-09 16:54 vaga 阅读(140) 评论(0)  编辑  收藏 所属分类: J2EE学习笔记

只有注册用户登录后才能发表评论。


网站导航: