我正在考虑在Java项目的表现层中使用Seam、Wicket、JSF或GWT作为基础。
基于就业市场的考虑、技术的新颖性以及其他S.O.用户的推荐,我将我的Java Web框架选择缩小到了这个子集。
在这些框架中做决策时应该考虑哪些因素?
我正在考虑在Java项目的表现层中使用Seam、Wicket、JSF或GWT作为基础。
基于就业市场的考虑、技术的新颖性以及其他S.O.用户的推荐,我将我的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更新:
非常感谢Wicket团队的努力,让这场讨论保持清醒。作为一个Wicket用户,我很喜欢它。我的主要原因是:
我可以让设计师在模板和页面上工作,而我则专注于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 - 令人敬畏的框架 - 开发人员完全理解面向对象的概念(不像JSP和许多其他框架),并将所有通常的OO细节应用于此框架。如果您欣赏“可重用性”,如果您欣赏封装性,如果您欣赏关注点分离,并且如果您喜欢将模型绑定到UI代码而不必担心对象编组和其他类似的难看东西,那么这就是适合您的框架!
如果你只考虑就业市场,那么你应该选择JSF。但是,我相信未来的RIA属于GWT和类似的客户端技术。
我认为GWT最明显的优点是,它比像JSF、Wicket等服务器端呈现层技术更具可扩展性。因为服务器不需要存储客户端状态,而且客户端CPU功率也被利用了。这是一个巨大的好处,你不需要在服务器计算机之间序列化客户端状态来实现容错系统。
我曾经广泛使用Wicket和GWT。但从未真正喜欢过Wicket。
我的博客谈到了这个问题 http://salk31.blogspot.com/2009/07/wicket-ajax.html
今天看到GWT 2.0 uiBinder,让我想起在Wicket中必须将XML组件树与Java创建的组件树匹配是多么烦人。对我来说,GWT的解决方案看起来好得多。
我已经一年多没有使用Wicket了,也许他们已经修复了很多问题,但考虑到现代浏览器和JS支持,我不明白为什么要在服务器上做所有这些事情(我知道,我知道数据本地化)。
我知道有些晚了,但现在已经有很多关于框架的比较了,尤其是这个,在2010年Devox会议上发生的。
http://www.devoxx.com/display/Devoxx2K10/Comparing+JVM+Web+Frameworks
这应该能帮助你做出选择 :)
我最开始使用JSF(1.1和1.2),但是它非常痛苦,所以我决定在下一个项目中改变。我进行了一些研究,然后决定尝试Wicket,结果非常愉快。 我也尝试过JSF 2,但还是一样。
两者都是组件框架,但是Wicket的东西很容易,而JSF则是一团糟。
Wicket优于JSF:
JSF优于Wicket:
一个常见的缺陷是会话大小是个问题(因为图形组件存储在其中)。
总的来说,如果您只需要在Wicket和JSF之间做出决定,对我来说毫无疑问,选择Wicket。