`
yinyongliang
  • 浏览: 171302 次
社区版块
存档分类
最新评论

JSF 和 Struts 之间各自的优缺点

阅读更多
JavaServer Faces 曾经是 J2EE Web 开发中最被看好的技术之一。在 WebSphere Studio 中,JavaServer Faces 已经可以使用了。JavaServer Faces (JSF) 提供了可视化开发 J2EE Web 应用程序新的途径。

这是一个很基本的问题。您能比较一下 JSF 和 Struts 之间各自的优缺点吗。如何了解现在和将来的技术趋势,JSF 如何以及是否将会发展成为相对于 Struts 更出色的技术。另外,WSAD 如果可以使两者不同的话,将在两者的比较中将会充当什么样的角色。

这是近期很热门的一个问题。一般来说,JSF 仍然是相当新的技术,需要时间来完全地成熟。然而,我看到 JSF 已经可以完成 Struts 可以做的任何事,而且做的更多。Struts 并不是来自于强制性的需求。它是开发人员厌烦了一次次的编写相同的逻辑而创造的。JSF 的出现,既是必然的需要也是竞争的结果。

Struts 有以下优点:

Struts 是一个成熟的、被证实了的框架。它已经使用了几年,且被成功部署到许多项目中。WebSphere Application Server 管理控制台就是一个 Struts 应用程序。
Struts 使用 Front Controller 和 Command 模式,可以处理复杂的控制器逻辑。
除了核心的控制器功能以外,它还有很多其他的优点,比如使用 Tiles 布局、说明性(declarative)异常处理以及国际化。
以下是其缺点:

Struts 是非常以 JSP 为中心的,必须使用其他框架来适应其他视图技术。
尽管 Struts 有丰富的标记库,但是它只能帮助进行控制器方面的开发,当您处理关于页面的组件时,它没有任何意义。因此,从视图的角度来看,它没有提供好的工具。
Struts 需要关于 Java™ 的知识。其目的是帮助 Java 开发人员,而不是隐藏 Java。它在对 Web 开发人员隐藏 Java 语言的细节这一方面做的并不好。
ActionForms 被程式化的与 Struts 框架链接。因此,为了降低模型的耦合度,您需要编写传送代码或者在输入时使用工具将数据从 Action Forms 移动到 Model。
JSF 从包括 Struts 的少数框架发展而来。Struts 的创建者,Craig McClanahan,即是 JSF 规范的领导人之一。因此,能看到 Struts 和 JSF 之间的一些相似之处,这并不是偶然的。JSF 的主要目的之一就是使得 J2EE Web 应用程序在 RAD 工具下易于开发。同样地,它也引入了丰富的组件模型。JSF 有如下优点:

JSF 是一个来自 Sun® 的规范,将会被包括在 J2EE 规范的未来版本之中。各主要供应商都保证对 JSF 提供强力支持。
JSF 使用 Page Controller Pattern,因此会对页面密集型应用程序有帮助。相应组件会对来自页面上组件的事件作出响应。
JSF 有一个明确定义的请求生命周期,保证了在不同级别上的可插入性(plugability)。
可插入性的一个有力的例子是构建您自己的 render 工具包。将框架中的呈现(rendering)部分和控制器部分分离的能力实现了良好的可扩展性。组件供应商可以编写他们自己的工具包以处理不同的标记语言,如 XML 或 WML。另外,render 工具包也不依赖于 JSP。
因为 JSF 有一个丰富的组件模型,所以它支持 RAD 类型的开发。现在我可以使用拖放技术来构建我的 Web 页面。此外,JSF 提供在不打破层次布局的条件下,将可视组件同后台模型组件连接起来的途径。
JSF 有以下缺点:

JSF 仍是相当新的并处于发展过程中。要看到成功的部署和广泛的应用还需要一段时间。另外,组件供应商可能并不能做您想让他们完成的所有事情。
手工方式的 JSF 并不比 Struts 简单。它的目标更倾向于 RAD。那些喜欢手工开发的人(例如,那些不喜欢 IDE 的 vi 类型的人)可能会发现 Struts 更容易开发。
Struts 导航可能会更加灵活一些,但同时也导致控制器逻辑更加复杂。
JSF 和 Struts 将会继续共存一段时间。Struts 社区已经了解了 JSF 并在作出一些改变以对 JSF 提供强大的支持。参见 What about JSTL and JavaServer faces?

在工具的角度,如果您留意了 WebSphere Studio 对 JSF 和 Struts 的工具支持,将会发现 Struts 工具集中于控制器方面。Web Diagram 编辑器帮助构建您的 Struts 配置,而向导/编辑器构建 Struts 构件。JSF 工具适合于构建页面,而实质上向您隐藏了 JSF 框架。可以预计 WebSphere Studio 将暂时同时支持两种框架。当 JSF 趋于成熟以后,预计将可以在 JSF 中看到一些控制器方面的可用工具。

5
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics