我正在争论是否使用 Seam、Wicket、JSF 或 GWT 作为我在 Java 项目中表示层的基础。
根据就业市场的考虑、技术的新颖性和其他 SO 用户的建议,我将 Java Web 框架的选择范围缩小到这个子集。
在这些因素中我应该考虑哪些因素?
我正在争论是否使用 Seam、Wicket、JSF 或 GWT 作为我在 Java 项目中表示层的基础。
根据就业市场的考虑、技术的新颖性和其他 SO 用户的建议,我将 Java Web 框架的选择范围缩小到这个子集。
在这些因素中我应该考虑哪些因素?
我从 1.4 版开始使用 GWT,从 2.0 规范出来后使用 JSF。
GWT 是一个客户端框架,它从 Java 生成 JavaScript。您的架构将是一个纯粹的客户端-服务器,这意味着:
JSF 是一个基于组件的框架,具有视图优先的设计(如果您愿意,可以使用代码隐藏):
恢复:
我用过的唯一一个是 JSF,所以我不能给你关于其他的反馈,但这是我对 JSF 的看法。根据我的经验,当我们从 JSP 中的 JSF 转换为 facelets 中的 JSF 时,生活变得轻松多了,所以我将专注于 facelets。此外,Seam 和 JSF 看起来并不相互排斥。
优点:
缺点:
我绝不是 JSF/Facelets 方面的专家,所以我敢肯定还有其他一些我错过了。希望其他人也能详细说明。
JSF 2.0 的更新:
感谢检票员保持清醒并继续讨论。我是检票口用户,我喜欢它。我的主要原因是:
我可以让设计人员在处理 java 部件时处理模板和页面
没有什么新东西要学。它的“只是 java 和 HTML”
我之前的经验是 GWT 和 JSF 1.0
Seam 是一个应用程序框架,而不是真正的表示层。它最初是为了让 JSF 不那么痛苦而开发的,但已经演变成一个更通用的依赖注入框架。
我相信您可以将 Seam 与 JSF、Wicket 和 GWT 一起使用。JSF 支持是主要且优秀的;我不确定其他两个的支持情况如何。
由于您的标准的重点似乎是您的技能的适销性,我建议通过 Facelets 尝试 Seam 和 JSF。JSF 是一个广为接受的标准,如果您使用 Facelets,它实际上是一种令人愉快的使用。您可以通过 Richfaces 和 Ajax4jsf 获得流畅的 AJAX 功能。Seam 正在通过 JCP 或多或少地标准化。
我的经验是,按时间顺序:
原始 servlet - (是的,很多艰苦的工作,但那是早期的,我们是热切的海狸!)
JSP - 我以为它出来的时候是个笨蛋(如果我们只知道;))
Echo - 很棒的框架,但不适用于需要搜索引擎友好的页面(与 GWT 相同的问题)
Wicket - 很棒的框架 - 开发人员完全理解 OO 的概念(与 JSP 和许多其他人不同),并将所有常见的 OO 细节应用于该框架。如果您喜欢“可重用性”,如果您喜欢封装,如果您喜欢关注点分离,如果您喜欢将模型绑定到 UI 代码而不必担心对象编组和其他此类丑陋,那么这就是您的框架!
从长远来看,我建议使用受 Sun 规范支持的技术。到目前为止,这已被证明可以提供多种实现,从而导致选择(通常也是开源实现),而且行为往往被很好地定义。
这将在维护场景中为您提供帮助,希望您的代码也能及时结束。写得好的代码永远存在 :)
在这种特殊情况下,我建议使用 JSF。我只尝试了 1.1 的 Apache 实现,但是在 JSP 之上是很痛苦的。我们将很快对其进行修改——我希望研究在 facelets 上使用 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、wicket 等服务器端表示层技术具有更好的可扩展性。因为,服务器不需要存储客户端状态,也使用了客户端 cpu 电源。这是一个巨大的好处,你不需要在服务器计算机之间序列化客户端状态来实现容错系统。
我知道这有点晚了,但是在 Framewrok 上已经有很多比较,尤其是这个,发生在 Devox 2010 conf 期间:
http://www.devoxx.com/display/Devoxx2K10/Comparing+JVM+Web+Frameworks
这应该可以帮助您选择:)
我从 JSF(1.1 和 1.2)开始,非常痛苦,我决定在下一个项目中进行更改。我进行了一些研究,然后决定尝试 Wicket,这真是一种享受。我也尝试过 JSF 2,但还是一样。
它们都是组件框架,但是使用 Wicket 很容易,而使用 JSF 则完全是一团糟。
JSF 上的检票口:
检票口上的 JSF:
One common flaw is that session size is are problem (because graphical components are stored in there).
All in all, if you have to decide only between Wicket and JSF there not doubt for me, Wicket.
JSF 已被弃用(当 2010 年传教士比较或谈论 Web 框架时,JSF 甚至没有被列为可比较的框架)。
现在使用 GWT、YUI、JQuery 等创建成熟的大型应用程序。
通过google及以上阅读一些文章将是显而易见的。
(JSF 上的所有工作都是为了支持遗留应用程序)。