我应该选择哪个框架 - Seam、Wicket、JSF 还是 GWT?[关闭]
-
09-09-2019 - |
题
我正在考虑是否使用 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 更新:
- 具有更好的复合组件重用能力
- 2.0 的小部件库包括 primefaces 和 mojarra 尺度
- 允许获取请求和书签
- 内置 Ajax 支持
- 看 http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/ 有关 JSF 2 的更多信息
其他提示
我从 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 用户,我喜欢它。我的主要原因是:
- 它是一个组件框架。我喜欢使用组件而不是整页。
我可以让设计师在模板和页面上工作,就像我在 java 部分上工作一样
没有什么新东西可以学。它“只是 java 和 HTML”
- 我喜欢它的 ajax Fallback 机制。如果浏览器(尤其是移动设备上的浏览器)不支持 javascript,则它会退回到纯 html 并且一切正常。
- 它缺少 xml 配置是一个优点
- 它支持我在网络应用程序中想要的一切。例如验证、国际化、后退按钮支持和静态 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所有作业都来支持传统应用程序)。