【IT168 专稿】自从2000年Struts诞生以来,基于动作(Action-Based)的MVC架构在Web开发方面可谓风光无限。目前主流的WEB框架如Struts、Webwork(Java)、Ruby on Rails(Ruby)、Zend Framework(PHP)等都采用这种设计模式。URL映射到控制器(Controller)和控制器中的动作(Action),由Action来处理请求并输出响应结果。然而风水轮流转,基于组件(Component-Based)和事件驱动(Event-Driven)的开发模型,抢占了动作开发模型的不少风光,出演了一场“狼来了”的好戏。有的成为了PK Struts的优秀选手。而由Sun公司推出的JSF(Java Server Faces)和Apache组织主导的Tapestry是这场选秀的成功晋级者。
JSF将是J2EE5.0中所包含的Web开发框架,这应该是第一个成为JCP(Java Community Process)标准的Web框架,并且随J2EE SDK一起发布的Web框架,可以看出Sun对它的期望很高。JSF最大的竞争对手是Tapestry,是Apache的产品。但是Apache又推出Myfaces,这是对JSF标准的另一个实现。也许大家也和笔者一样,在JSF和Tapestry之间犹豫很久,将来从Apache的态度上应该可以看出二者的走向。
在本文中,笔者将对JSF和Tapestry这两种框架进行详细的比较。比较将涉及到这两种框架的设计、运行环境以及如何开发等方面的内容。希望通过这样的比较,让读者了解这两种框架各自的优缺点,以便于在自己的项目中,根据实际情况,选择合适的框架。本文的内容基于JSF1.1和Tapestry4.0(有的部分基于Tapestry5.o)。
一、 JSF和Tapestry的简介
1. JSF
JSF是Sun公司在JCP JSR 127标准倡导下的技术实现。另外一个JSF的实现,就是Apache的一个项目MyFaces。JSF的目的是为Web应用的用户界面创立标准的框架。采用JSF开发的Web应用,可以运行在Java服务器上,把用户界面传递到客户端。JSF通过控制Servlet和具有事件处理和组件加工的丰富的组件模型管理Web应用生命周期。
2. Tapestry
Tapestry是在Apache软件许可下发布的一个开放源码且基于Java的框架。Tapestry最初于2000年在Sourceforge注册,来自于Apple WebObjects,随后,于2003年成为Apache的一个项目。与JSF不同的是,Tapestry并不是某一个JSR规范的实现,它仅仅是一个开源项目。它是专门为了简化Web开发设计的。它有以下关键特性:
易安装性:不需要是Web应用程序高手,就可以让Tapestry启动并运行。
易使用性:只需要基本的Java和HTML,而不是Servlet技能,就可以编写Tapestry应用程序。
健壮性强。当站点增长超过10、50或100个页面时,也不必抛弃Tapestry。对于多数Web应用程序来说,Tapestry都足够健壮。