Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
各种Java Web表示层技术的优缺点_Java_Jakarta Ee_Presentation Layer - Fatal编程技术网

各种Java Web表示层技术的优缺点

各种Java Web表示层技术的优缺点,java,jakarta-ee,presentation-layer,Java,Jakarta Ee,Presentation Layer,我目前正在开发一个大量使用JSF和IceFaces的web应用程序。我们已经讨论过转移到另一个表示层,我想我应该把讨论带到SO中,看看专家们怎么想 我很好奇是否有人能权衡各种Java表示层技术的利弊。如果你只和一个一起工作过,说说你为什么喜欢或讨厌它。如果你和几个人一起工作过,给你一些印象,看看他们是如何相互竞争的 我们正在考虑的技术是: 冰面 JSF(无冰面) GWT(谷歌网络工具包) 边门 挂毯 如果我在名单上遗漏了什么,请告诉我 谢谢 我在几个小项目中使用了GWT。以下是一些我喜欢的东

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

我很好奇是否有人能权衡各种Java表示层技术的利弊。如果你只和一个一起工作过,说说你为什么喜欢或讨厌它。如果你和几个人一起工作过,给你一些印象,看看他们是如何相互竞争的

我们正在考虑的技术是:

  • 冰面
  • JSF(无冰面)
  • GWT(谷歌网络工具包)
  • 边门
  • 挂毯
如果我在名单上遗漏了什么,请告诉我


谢谢

我在几个小项目中使用了GWT。以下是一些我喜欢的东西:

  • 默认情况下它是ajax,所以我不必让它做ajax,它只是伴随着使用GWT而来的
  • 它将客户端代码与服务器端代码进行了很好的分离
  • 我可以使用junit对我的客户机代码进行单元测试
  • 它可以让你构建简洁、快速的应用程序,这主要是因为它是ajax
  • 我不喜欢的事情:

  • 有些事情并不像预期的那样起作用。例如,我见过点击事件没有按预期触发的情况,所以我不得不做一个变通办法
  • 在eclipse中运行的自动部署到tomcat有时会停止工作,我永远也不知道为什么

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

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

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

    简而言之:

    =JSF=

    优点:

    • 组件体系结构
    • 许多图书馆和工具
    • 有点好的IDE支持
    缺点:

    • 沉重的重量,包括CPU/内存和学习曲线
    • 当某些东西不能按预期工作时,很难进行调试
    =边门=

    优点:

    • 轻量化
    • 合理的模板系统
    • 好的教程
    缺点:

    • 参考文档没有教程组织得那么好和深入
    • 开发团队遇到了一些严重的困难,尤其是在成为和孵化项目时。这导致了对框架重要方面的混淆,当时我不得不切换到另一个框架,因为

    我的观点对Wicket有很大的偏见,因为在多次被JSP地雷绊倒后,我已经使用它一段时间了

    边门职业球员:

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

    • 开发在总体上有些混乱,Wicket泛型现在有点混乱,尽管它们在1.4中被清理了很多
    • 一些组件(如
      Form.onSubmit()
      )需要大量的子类化或匿名方法重写,以便轻松注入行为。这部分是由于Wicket强大的基于事件的设计,但不幸的是,这也意味着Wicket很容易弄乱代码
    随机缺点:(也就是说,我没有用过,但这些是我的观点和/或我听到的东西)

    • GWT是基于JavaScript的,这听起来很愚蠢。主要的问题是,它让我太多地想起了JSP:s及其自动生成的类,它们非常可怕
    • Tapestry没有将标记和代码正确地分开,这样就很容易在两者之间进行验证,这将在将来导致问题

    怎么样?

    我的选择是Wicket。我们已经使用过它,它提供了极好的可重用性。它拥有最具活力的论坛/邮件列表之一。作为一个问题,它将在几分钟内得到回答。它非常支持AJAX。Wicket的一个常见缺点是学习曲线陡峭。好吧,这些是一个老年犯人,现在已经没有价值了

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


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

    请参阅我对Wicket和Tapestry 5的比较:。

    好问题。我们对IceFaces的不满源于a)来自地狱的神秘肉类例外——JSF生命周期特有的问题;b)这里的许多人认为这是一个沉重而缓慢的问题;c)社区支持不足。我们正在考虑一个新项目的变化,而不是我们现有的应用程序。如果它是为一个新项目。我也很好奇你对冰面的反应,因为我以前也考虑过。