我应该选择哪个框架 - Seam,Wicket,JSF或GWT?[已关闭]

2022-09-02 04:59:20

我正在争论是否使用Seam,Wicket,JSF或GWT作为Java项目中表示层的基础。

我根据就业市场的考虑、技术的新颖性以及其他S.O.用户的建议,将Java Web框架的选择范围缩小到这个子集。

在做出选择时,我应该考虑哪些因素?


答案 1

我从1.4版本开始就使用GWT,自从2.0规范问世以来,我一直使用JSF。

GWT是一个客户端框架,它从Java生成JavaScript。您的体系结构将是一个纯客户端-服务器,这意味着:

  • 最好使用粗粒度服务
  • 所有传输到客户端的对象都应该是完全可序列化的(这意味着没有延迟加载或 OpenSessionInView 模式)
  • 从GWT 2.0开始,您可以使用xhtml设计GUI,这在样式和构建HTML方面要容易得多。
  • GWT倾向于支持好的架构,如果你把它搞砸了,重构就会很糟糕
  • 完善历史记录(浏览器后退按钮,可添加书签的URL)支持很难,您可能需要自己滚动,尽管很容易在前面破解某些东西

JSF 是一个基于组件的框架,具有视图优先设计(如果您愿意,可以采用代码隐藏):

  • 做某种类型的Web应用程序更容易(有状态,如购物车)
  • JSF+Seam 支持对话(想想类似向导的页面,它们在多个页面上保持状态)
  • 您可以实现 OpenSessionInView,具体取决于您的堆栈。如果您将 EJB 用于服务/业务层,则可能不建议这样做
  • JSF2对AJAX提供了出色的支持,并且使用像RichFaces这样的组件套件,您可以构建漂亮的Web应用程序
    • 但是如果你想要精致的javascript行为,你必须写一些javascript。
  • JSF 在客户端或服务器端跟踪当前 UI 状态。这是网络流量或服务器内存之间的权衡。

恢复:

  • GWT更适合需要最佳客户端性能的Web应用程序(想想gmail)。编写自定义组件很容易(您编写Java),并且由于您的服务器端只是一个服务层,因此您可以在服务器端完全无状态。
  • JSF更适合大多数CRUD应用程序,这些应用程序更适合面向组件的东西:考虑酒店/航班预订系统,带有购物车的在线商店等

答案 2

我使用过的唯一一个是JSF,所以我无法给你关于其他的反馈,但这是我对JSF的看法。根据我的经验,当我们从 JSP 中的 JSF 转换为 facelet 中的 JSF 的那一刻,生活就变得容易多了,所以我将专注于 facelets。此外,看起来Seam和JSF并不相互排斥。

优点:

  • 创建 facelets xhtml 组件很简单,这促进了重用。
  • 使用内置标签(如 ui:insert、ui:include 和 ui:decorate)的体面模板化能力
  • 通过面配置轻松访问春豆
  • 基于XHTML,因此不熟悉Java的Web开发人员仍然可以有效
  • 战斧/特立尼达中可用的好小部件库

缺点:

  • 仅发布请求。这可能会使书签变得困难。
  • 不像GWT那样内置ajax-y,但如果与Seam一起使用,则可以修复此问题

我绝不是JSF/Facelets方面的专家,所以我确信还有其他我错过了。希望其他人也能详细说明。

JSF 2.0 的更新:


推荐