我正在考虑是否使用 Seam、Wicket、JSF 还是 GWT 作为 Java 项目中表示层的基础。

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

在做出决定时我应该考虑哪些因素?

有帮助吗?

解决方案

我使用过的唯一一个是 JSF,因此我无法向您提供有关其他产品的反馈,但这是我对 JSF 的看法。根据我的经验,当我们从 JSP 中的 JSF 转换为 Facelets 中的 JSF 时,生活就变得容易多了,所以我将重点关注 Facelets。而且,看起来 Seam 和 JSF 并不相互排斥。

优点:

  • 创建facelets xhtml 组件很简单,这促进了重用。
  • 使用内置标签(如 ui:insert、ui:include 和 ui:decorate)的良好模板能力
  • 通过faces-config简单访问Spring bean
  • 基于 XHTML,因此不熟悉 java 的 Web 开发人员仍然有效
  • 战斧/特立尼达中提供良好的小部件库

缺点:

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

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

JSF 2.0 更新:

其他提示

我从 1.4 版本开始就使用 GWT,从 2.0 规范发布以来我就使用 JSF。

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

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

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

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

恢复:

  • 总吨位 更适合网络 应用 (想想 gmail)需要最好的客户端性能。编写自定义组件(您编写 Java)很容易,并且由于您的服务器端只是一个服务层,因此您可以在服务器端完全无状态。
  • 日本科学基金会 对于大多数更适合面向组件的内容的 CRUD 应用程序来说更合适:想想酒店/航班预订系统、带有购物车的在线商店等

感谢检票员保持清醒并继续讨论。我是 wicket 用户,我喜欢它。我的主要原因是:

  1. 它是一个组件框架。我喜欢使用组件而不是整页。
  2. 我可以让设计师在模板和页面上工作,就像我在 java 部分上工作一样

  3. 没有什么新东西可以学。它“只是 java 和 HTML”

  4. 我喜欢它的 ajax Fallback 机制。如果浏览器(尤其是移动设备上的浏览器)不支持 javascript,则它会退回到纯 html 并且一切正常。
  5. 它缺少 xml 配置是一个优点
  6. 它支持我在网络应用程序中想要的一切。例如验证、国际化、后退按钮支持和静态 URL 等

我之前的经验是GWT和JSF 1.0

Seam是一个应用程序框架,不是一个真正的表示层。它最初的开发,使JSF痛苦少,但已经演变成一个更通用的依赖注入框架。

我相信你可以使用Seam与JSF,检票和GWT。 JSF支持是初级和优良;我不知道如何以及另外两个都支持。

由于您的标准的重点似乎是你的技能市场化,我建议通过Facelets的尝试Seam和JSF。 JSF是一种广为接受的标准,实际上是愉快的,如果你正在使用Facelets的使用。您可以通过有RichFaces和Ajax4jsf的光滑AJAX功能。接缝是通过JCP被或多或少标准化。

我的经验是,在按时间顺序排列:

原始的servlet - (!是的,艰苦的工作很多的,但它是初期,我们都渴望海狸)

JSP - 我认为这是在它出来的时候beez neez(如果我们只知道;))

回声 - 真棒框架,但不是需要被搜索引擎友好的页面(同 用GWT问题)

检票 - 真棒框架 - 开发者完全理解OO的概念(不像JSP和许多其他),并已应用所有常用OO细微到该框架。如果您欣赏“重用”,如果你欣赏的封装,如果你欣赏的关注点分离,如果你喜欢你的模型的UI代码绑定,而不必担心对象编组等这样的丑陋,那么这是框架为您服务!

在一个长期的情况下,我建议使用由太阳规格支持的技术。这种迄今证实能产生导致选择(经常也开源实现)的多个实施方案中,加行为趋向于被很好限定。

这将帮助你在修的情况下,这 - 希望 - 你的代码将在时间结束了。精心编写代码长存:)

在这个特定的情况下,我建议JSF。我只试过在Apache实现1.1,但它伤害是在JSP的顶部。我们很快修改了 - 我希望寻找到在小面具有JSF

我经常使用 Wicket 和 GWT。从未真正学会爱威克特。

我的自我在博客上谈到了它 http://salk31.blogspot.com/2009/07/wicket-ajax.html

今天查看 GWT 2.0 uiBinder 让我想起在 Wicket 中必须将 XML 组件树与 Java 创建的组件树相匹配是多么烦人。对我来说,GWT 的旋转看起来要好得多。

我已经一年多没有使用 Wicket 了,所以也许他们已经解决了很多问题,但是考虑到现代浏览器和 JS 支持,我看不出在服务器上执行所有这些操作的意义(我知道,我知道数据局部性)。

如果你只考虑就业市场,你应该选择JSF。但是,我相信是RIA的未来属于GWT和GWT类似客户端技术。

我认为GWT的最明显的颠倒,它比服务器侧表示层的技术,例如JSF,检票更好可扩展的。因为,服务器并不需要存储客户端状态和客户端CPU电源也同样使用。它是一个巨大的好处,你不需要序列化服务器计算机之间的客户端状态才达到容错系统。

我知道这是一个有点晚,但已经有很多关于Framewrok,espcially这一个比较,发生至极2010 durinf CONF Devox:

http://www.devoxx.com/display/Devoxx2K10/比较+ JVM +网页+框架

这应该可以帮助您选择:)

我从 JSF(1.1 和 1.2)开始,这非常痛苦,所以我决定在下一个项目中进行更改。我做了一些研究,决定尝试一下 Wicket,这真是太愉快了。我也尝试过 JSF 2,但仍然是同样的事情。

它们都是组件框架,但是使用 Wicket 很容易,而使用 JSF 则一团糟。

JSF 上的检票口:

  • 在 Wicket 中,HTML 是 HTML。JSF 有自己的标记。h:dataTable(表)是无稽之谈。相信我,Sun工程师在设计它的时候一定是喝醉了。
  • 在 Wicket 中,诸如安全之类的事情,
  • 对于 JSF,导航栏会显示之前的 URL。真的很奇怪。
  • 在我看来,JSF 非常沉重,而且像 Rich 或 Prime 这样的库甚至更重。
  • 有时,似乎不可能知道正在发生什么。你总是对着你的计算机大喊大叫,因为你不知道 JSF 为何这样做。

JSF 通过 Wicket:

  • 在 Wicket 中,您将编写更多 Java(与 HTML 的绑定)。至少,您的 IDE 将提供重构和验证支持。
  • Wicket 中的资源管理有点棘手。
  • JSF 还有更多文档和支持

一个常见的缺陷是会话大小是个问题(因为图形组件存储在其中)。

总而言之,如果您必须在 Wicket 和 JSF 之间做出决定,我毫无疑问, 便门.

<强> JSF已被弃用(JSF甚至不列为框架时布道者比较或在2010年谈论Web框架进行比较)。

现在充分长羽毛大规模应用程序正在使用GWT,YUI,JQuery的等创建的。

通读谷歌一些制品和上面将是显而易见的。

(在JSF所有作业都来支持传统应用程序)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top