GWT与Apache Wicket比较

12

无论是 GWT 还是 Wicket,都是基于 Java 面向对象的有状态框架。GWT 完全基于客户端,具有 JavaScript 优化、CSS 优化等功能,而我对 Apache Wicket 还比较陌生。

我读得越多,就越感觉 Wicket 和 GWT 相似。

所以问题来了——GWT 和 Wicket 之间有什么区别?还是说我在比较苹果和橙子?


请提供建议:Wicket 和 GWT 之间的区别。 - Karussell
6个回答

27
  • 我在一个大型项目上使用了多年GWT(1.x和2.x)和Wicket(1.4、1.5),这两个框架都有优点和缺点。只要它们被用于设计的目的,它们都很棒。但你可以轻松地将它们混合在一起,以充分利用它们的优点。

  • Wicket 对于 CRUD 网站非常好用和强大,HTML 页面设计和 Java 代码之间有很好的分离。只要不需要强大的客户端功能,它就能很好地完成它的工作,只是代码有些冗长:但这是为了强类型而付出的代价:没有"魔法",重构组件化运作良好。对于大型项目,它可以轻松地解耦,并且经过良好设计可以与大团队一起工作:人们可以专注于提供一组漂亮的核心组件,其他人则专注于展示层等。唯一的缺点是,在客户端复杂行为方面,仍然需要精通 Javascript,而且自己 混合 Wicket 和 Javascript 可能会变得相当复杂。

  • GWT 在客户端需要强大的丰富行为能力时很好用(类似GMail应用程序)。 GWT 的主要问题在于它在纸面上看起来太好了("一切都在Java中"的范例),但它并没有实现它的承诺。它 缩放性不佳:GWT 适用于提供小功能集的小模块,而不适用于大型应用程序。代码/编译/调试周期相当漫长,当模块大小增加到一定程度时,它将成为负担。此外,它不支持大型团队同时在同一个模块上工作。

  • 总之,我会建议人们做出选择:

    • 只有在确实需要的情况下才使用GWT,保持模块大小较小,并且永远不要尝试完全用它来构建整个大型应用程序;
    • 其余部分使用Wicket(Wicket真的很棒!)。
    • 要将两者混合在一起,使用Wicket强大的组件功能以" wicket方式"将GWT代码模块化(GWT模块成为特殊类型的Wicket组件),并且再次保持GWT的精简

    6
    抱歉,我完全不同意关于 “它不可扩展” 的立场。我们有一个非常大的应用程序,并没有在扩展方面出现任何问题,超过1200个动态页面。我们使用了MVP模式并使用GWT.runAsync来实现快速加载。我也使用过Wicket,但它似乎更像是一个拼凑起来的框架而不是GWT。诸如 getModel 和 getOriginalModel 等内容非常恼人,再加上无法简单地与DOM一起工作,这才真正让我对Wicket失去兴趣。依我之见,Vaadin比Wicket更好,因为7.0版提供了两者的优点,但我会坚持使用GWT。 - Chris Hinshaw
    我想说的是,GWT模块不具有良好的可扩展性。单独使用GWT,如果保持模块大小受限,则可以通过增加模块数量来扩展。但是我确认,让GWT模块大小变得过大对技术和人类原因都非常痛苦。顺便说一下,我不知道Wicket中的getOriginalModel()是什么? - Laurent Grégoire
    1
    为什么模块大小很痛苦?Super Dev Mode可以在开发过程中消除编译所有内容的需要,即使是旧的Dev Mode也非常适合这个。如果模块大小对下载时间有影响,有很多选项可以减小下载大小。如果GWT对于移动版GMAIL应用程序(Android和iOS)很好用,我认为我们可以得出结论,它可以独立处理大型复杂应用程序。Google如何在Inbox中实现多平台 - Ted Gulesserian
    这真的取决于您将“大型应用程序”门槛放在哪里。我不会称Gmail为“大型”应用程序;我指的是可以拥有数十个或数百个不同页面,具有许多自定义小部件、图形等的真正大型应用程序... Gmail界面虽然设计得很好,但相当小而简单。至于新的Super Dev Mode,它可能确实改善了性能。我的帖子与旧的dev模式相关。 - Laurent Grégoire

    9

    这就像是苹果和橙子之间的比较。

    这个维基页面总结了一些相似性和差异,以及一种同时使用它们的策略,我认为这是一个有趣的想法。

    Wicket主要是一种服务器端技术,具有一些内置的Ajax支持和用于连接更多Ajax的钩子。它不像GWT那样将Java翻译成JavaScript。它在服务器端维护状态,而GWT在客户端维护状态。

    两者都是基于组件的,对我来说有一些类似于Swing开发的感觉(尽管至少有一个其他回答者认为Wicket不像Swing)。



    1

    这个帖子已经有6年了,GWT大多停滞不前。 Wicket似乎更加活跃地开发和支持。 有人对Wicket或其他选项有新的看法吗?


    0

    Wicket是一种基于服务器的框架。它与JSF比GWT更为相似。GWT在概念上类似于Swing,我曾经是Swing开发人员,从Swing迁移到GWT非常容易。但对于Wicket或JSF来说,我不能说同样的话。


    0

    Wicket是一个服务器框架。它允许创建所需的HTML。在项目中可以分离角色(Web设计->HTML / CSS->Java)。

    如果您考虑使用GWT进行项目开发,则可能不需要Web设计师。
    GWT生成JavaScript。大多数逻辑可以在浏览器端执行。GWT更适合可扩展的应用程序。


    嗨, 为什么说“GWT更适合可扩展的应用程序”? - Andrea Del Bene
    1
    使用GWT轻松将逻辑移动到浏览器中。这需要客户端更多的计算能力,但服务器的计算能力较少。使用GWT可以缓存静态js文件。 - Dmitry
    在某些情况下,可以完全使用静态JS文件创建应用程序。这是扩展的最佳条件。 - Dmitry

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接