16

我目前正在开发一个大量使用 JSF 和 IceFaces 的网络应用程序。我们已经讨论过转移到另一个表示层,我想我会把讨论带到 SO 中,看看专家们是怎么想的。

我很好奇是否有人可以权衡各种 Java 表示层技术的优缺点。如果您只与一个人合作过,请说出您喜欢或讨厌它的原因。如果你和几个人一起工作过,请给出你对它们如何相互叠加的印象。

我们正在考虑的技术是:

  • 冰面
  • JSF(没有 IceFaces)
  • GWT(谷歌网络工具包)
  • 便门
  • 挂毯

如果我的清单中缺少任何内容,请告诉我。

谢谢!

4

8 回答 8

6

我的观点对 Wicket 有很大的偏见,因为在多次绊倒 JSP 矿井之后,我已经使用了一段时间。

检票口优点:

  • 布局和代码的真正分离。
  • 基于组件,这意味着站点元素的高度可重用性;例如,您可以创建具有自动标签和 CSS 样式以及所有内容的美化表单,并且只需在组件的构造函数中更改它的 DAO 对象,它就可以在另一个项目中完全重用。
  • 对 Ajax、Portlet 和各种框架等东西的出色支持通常直接开箱即用,更重要的是它不依赖 slf4j/log4j 以外的任何东西来工作,一切都是可选的!

检票口缺点:

  • 总体而言,开发对事物有些困惑,尽管在 1.4 中对它们进行了很多清理,但 Wicket 泛型现在有点混乱
  • 某些组件(如Form.onSubmit())需要大量的子类化或匿名方法覆盖,以便轻松注入行为。这部分归功于 Wicket 强大的基于事件的设计,但不幸的是,这也意味着 Wicket 很容易使代码混乱。

随机缺点:(也就是说,我没有使用过,但这些是我的意见和/或我听说过的事情)

  • GWT 是基于 JavaScript 的,这对我来说听起来很愚蠢。主要问题是它让我想起了太多的 JSP:s 及其自动生成的类,这太可怕了。
  • Tapestry 没有以可以在两者之间轻松验证的方式正确分离标记和代码,这将在未来引起问题。
于 2009-02-12T12:41:07.760 回答
5

我已经将 GWT 用于几个小项目。这里有一些我喜欢它的地方:

  1. 默认情况下它是ajax,所以我不必让它做ajax,它只是伴随着使用GWT。
  2. 它很好地将客户端代码与服务器端代码分开。
  3. 我可以使用 junit 对我的客户端代码进行单元测试
  4. 它可以让您构建清晰、快速的应用程序,主要是因为它是 ajax。

我不喜欢的东西:

  1. 有些事情没有按预期工作。例如,我见过点击事件没有按预期触发的情况,所以我不得不做一个解决方法。
  2. 自动部署到在 Eclipse 中运行的 tomcat 有时会停止工作,我永远无法弄清楚为什么。
于 2009-02-11T20:21:48.987 回答
3

我要问的最大问题是为什么要更改表示层?这是一个非常昂贵的成本,我可以看到一种技术的好处超过了其他技术的成本,就像改变的成本一样......

于 2009-02-11T20:25:20.227 回答
2

简而言之:

= JSF =

优点:

  • 组件架构;
  • 许多库和工具;
  • 有点好的IDE支持

缺点:

  • 重量级,在 CPU/内存学习曲线方面;
  • 当某些事情没有按预期工作时,很难调试

= 检票口 =

优点:

  • 轻的;
  • 合理的模板系统;
  • 很好的教程;

缺点:

  • 参考文档的组织和深度不如教程;
  • 开发团队遇到了一些严重的困难,特别是在成为和孵化项目时。这导致了对框架的重要方面的混淆,当时我不得不切换到另一个框架,因为这个......
于 2009-02-12T08:34:27.230 回答
1

条纹呢?

于 2009-02-17T21:54:15.817 回答
1

我的选择是Wicket。已经使用过它,并且具有出色的可重用性。它拥有最活跃的论坛/邮件列表之一。作为一个问题,它会在几分钟内得到回答。它对 AJAX 有很好的支持。归因于 Wicket 的常见缺点之一是陡峭的学习曲线。好吧,这些是现在不再有价值的老年弊端之一。

JSF:最好远离它。另一个在 JSF 上开发项目的团队现在正在考虑在我们成功后转向 Wicket。

@Megadix:就像你说的文档一开始很差,但现在没有了。Wicket 的开发人员编写了一本名为 Wicket in Action 的优秀书籍。网站上提供的示例代码也是一个很好的开始和学习的地方

于 2009-02-23T07:07:56.930 回答
0

我想知道您是否有一个与 Web 客户端不同的服务层,Web 控制器只需调用它来完成他们的工作。

如果这样做,Web UI 技术的选择可以与后端解耦。如果它作为合同优先的 Web 服务公开,您可以让不同的应用程序共享它。只要您的客户可以发送和接收 XML,他们就可以与您的服务进行交互。想要切换到 Flex?不用担心 - 将它指向服务并呈现 XML 响应。

于 2009-02-11T21:14:39.500 回答
0

请参阅我对 Wicket 和 Tapestry 5 的比较:Apache Tapestry 和 Apache Wicket 之间的区别

于 2009-04-15T14:40:13.767 回答