java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket

上传人:第*** 文档编号:33580551 上传时间:2018-02-15 格式:DOC 页数:8 大小:62.50KB
返回 下载 相关 举报
java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket_第1页
第1页 / 共8页
java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket_第2页
第2页 / 共8页
java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket_第3页
第3页 / 共8页
java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket_第4页
第4页 / 共8页
java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket》由会员分享,可在线阅读,更多相关《java web层框架比较:jsf、spring mvc、stripes、struts 2、tapestry和wicket(8页珍藏版)》请在金锄头文库上搜索。

1、【译者按】这是 Matt Raible 在今年(2007 年)6 月 24-27 号召开的 JA-SIG 夏季会议上所作的主题演讲,Matt 从众多方面对Java Web 层框架做了一个全面、深入的比较。笔者认为这是一份及时的文档,它对开发者如何判定一个 Web 层框架的好坏、如何选择适合自己项目的框架有极大的指导作用。本文是对 Matt Raible 演讲稿的整理归纳。 【作者介绍】Matt Raible,开源框架 AppFuse 的发起者、主要开发者;Professional JSP 2.0、Spring Live等书的作者;众多会议的演讲者,MySQL User Conference,

2、ApacheCon, ApacheCon EU 等;现任 Raible Designs 的 CEO。首先,Matt 以自己的实践经验,指出了 Java Web 层框架JSF、Spring MVC、Stripes、Struts 2、Tapestry 和 Wicket 他们各自的优、缺点: JSF 优点: Java EE 标准,这意味着有很大的市场需求和更多的工作机会 上手快速并且相对容易 有大量可用的组件库 缺点: 大量的 JSP 标签 对 REST 和安全支持不好 没有一个统一的实现。既有 SUN 的实现,又有 Apache 的实现MyFaces 。Spring MVC 优点: 对覆盖绑定(o

3、verriding binding)、验证(validation)等提供生命周期管理 与许多表示层技术/框架无缝集成:JSP/JSTL 、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等 便于测试归功于 IoC 缺点: 大量的 XML 配置文件 太过灵活没有公共的父控制器 没有内置的 Ajax 支持Stripes 优点: 不需要书写 XML 配置文件 良好的学习文档 社区成员很热心 缺点: 社区比较小 不如其他的项目活跃 ActionBean 里面的 URL 是硬编码的Struts 2 优点: 架构简单易于扩展 标记库很容易利用 FreeMarker 或者 V

4、elocity 来定制 基于控制器或者基于页面的导航 缺点: 文档组织得很差 对新特征过分关注 通过 Google 搜索到的大多是 Struts 1.x 的文档Tapestry 优点: 一旦学会它,将极大地提高生产率 HTML 模板对页面设计师非常有利 每出一个新版本,都会有大量的创新 缺点: 文档过于概念性,不够实用 学习曲线陡峭 发行周期长每年都有较大的升级Wicket 优点: 对 Java 开发者有利(不是 Web 开发者) 页面和显示绑定紧密 社区活跃有来自创建者的支持 缺点: HTML 模板和 Java 代码紧挨着 需要对 OO 有较好的理解 Wicket 逻辑什么都用 Java 搞

5、定接着,Matt 通过采访这些框架的作者,与他们讨论各种开源的 Java Web 框架,并且突出各个框架的长处、听取框架作者对其他框架的看法,希望借此了解这些框架的未来发展方向。下列是一些被采访者: JSF, Jacob Hookom RIFE, Geert Bevin Seam, Gavin King Spring MVC, Rob Harrop Spring Web Flow, Rob Harrop and Keith Donald Stripes, Tim Fennell Struts 1, Don Brown Tapestry, Howard Lewis Ship Trails, Ch

6、ris Nelson Struts 2, Patrick Lightbody Wicket, Eelco HilleniusMatt 对采访做了如下总结: JSF: 如果你想让 web 应用具有类似桌面程序的功能性,那么 JSF 的标准规范和大量第三方组件库的支持值得你 信赖。 Spring MVC: 综合了许多不同的技术,这使得它可以被广泛地应用到不同类型的项目中去;它可以被当作 web 应用开发的一个基础平台。 Stripes: 可以被应用到存在大量复杂数据交互的程序中;有强大的类型转换、绑定和验证功能;可以使管理大的复杂表单以及直接映射它们到域对象变得简单 Tapestry: 在中到大型

7、项目中,表现突出(当然,你也可以只把它应用到单个页面上),在这些项目中,你可以通过简单地创建新的组件起到杠杆作用。 Struts 2: 通常更适合于那些希望可以真正开始做事并且愿意花费大量时间来学习他们使用的开源工具的小项目组。Struts 2 的目标不是那些更喜欢拖放式开发的“扶手椅程序员”。 Wicket: 非常适合于这样的内/外部网应用:UI 很复杂并且你希望可以充分利用你的开发者资源。上面的总结,基本是突出了各个框架的长处。然而,哪些又是他们不好的地方呢?Matt 提出了评价一个框架好坏与否的标准: Ajax 支持 是不是内置了?是否便于使用? 书签能力 用户能否将某个页面收藏起来并且

8、可以方便地返回到该页面? 验证 使用是否简单?是否支持客户端(JavaScript)验证? 可测试性 脱离容器测试控制器,是否足够简单? 提交和重定向 框架如何处理重复提交问题? 国际化 如何支持国际化?控制器利用国际化信息,是否容易? 页面修饰 框架支持哪种类型的页面修饰/组成机制? 社区和技术支持 提出问题,能否被快速地、恭敬地回答? 开发工具 是否有支持这个框架的好的工具,尤其是 IDE? 市场需求 学习了这个框架,它能否帮你找到份工作? 岗位数量 在 和 上,对这个框架技能的需求如何?笔者认为这个评价标准,值得大家借鉴。 然后,Matt 按照这些评价标准,对各个框架做了以下阐述:

9、Ajax 支持 JSF:没有内置的 Ajax 支持,需要使用 ICEfaces 和 Ajax4JSF Stripes:没有对应的类库,支持流输出 Struts 2:内置 Dojo,有用于 GWT 和 JSON 的插件 Spring MVC:没有对应的类库,需要使用 DWR 和 Spring MVC 扩展 Tapestry: Tapestry 4.1 中,有内置的 Dojo Wicket:有 Dojo 和 Script.aculo.us 支持 书签能力 JSF:可以任意提交URL 甚至不被考虑 Stripes:使用约定,但是你可以不加理会 Struts 2:有命名空间的概念,这使得收藏某个页面并

10、返回变得容易 Spring MVC:允许完全的 URL 控制 Tapestry:依然存在一些丑陋的 URL Wicket:允许装配(mount)页面/URL 验证 JSF:默认的国际化信息丑陋,但是配置简单 Stripes 和 Wicket:用 Java 类进行验证 不支持客户端验证 Struts 2:使用 OGNL 完成强大的表达式验证功能;只有在 Action 上指定了规则,才支持客户端验证。 Spring MVC:允许你使用公共验证器这是一种成熟的解决方案 Tapestry:有健壮的验证功能不需自定义就有漂亮的国际化信息 可测试性 Spring MVC 和 Struts 2:允许利用 m

11、ocks(例如 EasyMock、jMock 和 Spring Mocks)简单地进行测试 Tapestry:测试困难,因为页面类被抽象、具体类被简化 JSF:页面类可以方便地被测试,实际上很像 Struts 2 中的 actions Wicket:有 WicketTester一个强大的解决方案 Stripes:有 Servlet API Mocks 和 MockRoundtrip 提交和重定向 解决重复提交问题的最简单方法是:在提交后重定向 Spring MVC:允许你将参数加到重定向 URL 上 Stripes、Tapestry 和 Wicket:有“flash 式”的支持 Struts

12、2:需要一个自定义的解决方案 JSF:需要一个自定义的解决方案,国际化信息很难加入到页面 bean 中 国际化 JSTL 的标签使国际化变得简单;如何将国际化信息放到控制器类中,还没有一个统一的标准。 Stripes、Spring MVC 和 JSF:每个地区使用一个资源绑定文件 Struts 2、Tapestry 和 Wicket:提倡把每个页面 /action 用到的资源文件分开 JSF:需要在每个页面上定义资源绑定信息 Tapestry:标签比较可怕 页面修饰 Tiles 能够用于 Struts 2、Spring MVC 和 JSF 中;需要对每个页面进行配置。 SiteMesh 能够用

13、于所有的这些框架中(不推荐在 JSF、Tapestry 或者 Wicket 中使用);在设置完成后, 只需要很少的维护。开发工具 Spring MVC:Spring IDE,但是只做 XML 校验,不是一个 UI/web 工具 Struts 2:Eclipse Tapestry: Spindle,对编码者非常有利 JSF:众多 IDE 支持,并且做得越来越好 Stripes 和 Wicket:没有任何官方工具 NetBeans 目前支持 Struts *、JSF(+Facelets)、Tapestry 和 Wicket,尚不支持 Stripes 和 Spring MVC市场需求 Struts

14、1:需求依然很大并且被广泛使用 Spring MVC:越来越受关注,但大部分是因为 Spring 框架的一些其他特征 JSF:很快地变得流行起来 Struts 2:正在获得地盘,但是相关的工作机会很少 Tapestry:在过去的数年里,受欢迎程度不断增加 Wicket 和 Stripes:还是未知数通过以上的比较,我想大家对在自己的项目中应该选择哪种 Web 层框架,应该有了更清醒的认识。最后,Matt 列出了一些相关资源,也供读者参考。 Struts - http:/struts.apache.org StrutsTestCase: http:/ Spring MVC - http:/www

15、.springframework.org Spring IDE: http:/www.springide.org Gaijin Studio: http:/gaijin- Struts 2 - http:/opensymphony.org/webwork Eclipse Plugin: http:/ IDEA Plugin: http:/ Tapestry - http:/tapestry.apache.org http:/ JSF - http:/ and http:/myfaces.apache.org Java Studio Creator: http:/ MyEclipse: http:/ IDEA: http:/ SiteMesh: http:/ Testing Frameworks JUnit: http:/junit.org EasyMock: http:/easymock.org jMock: http:/jmock.org

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号