Wicket vs Vaadin

时间:2010-08-24 05:01:24

标签: java wicket ria vaadin

我在Wicket和Vaadin之间挣扎。我正在开始一个微观的,需要选择Web框架。我已经缩小了对Wicket和Vaadin的选择范围。我使用过这两种框架,我喜欢它们。但是我需要做出选择。

如果我选择Vaadin:

  1. 我不必担心外观和感觉。它有很好的主题。
  2. 我将用Java编写所有我非常擅长的编程,并且不必花时间去攻击那些不太擅长的CSS。
  3. 我需要为业务应用程序提供的大多数组件都包括在内,包括桌面布局,工具提示,键盘快捷键,带有可拖动和可折叠列的表格等等。
  4. 但是,如果我采用Vaadin方式:

    1. 我将失去以声明方式创建UI的能力。
    2. 如果浏览器不支持JavaScript,我不会有后备功能 - 例如大多数非Webkit移动浏览器。
    3. Vaadin公司正在销售一些组件 - 例如JPAContainer,所以我不确定公司是否会致力于提供完整的开源框架。商业利益永远是第一位的。
    4. Vaadin应用程序主要用于Intranet。它们不太适合具有网络外观的互联网。
    5. 如果我走Wicket的方式:

      1. 我必须设计我的应用程序样式,我很难给它们一个桌面外观和感觉。
      2. 有什么建议吗?任何有这两个框架经验的人都要告诉我利弊和专业人士以及你如何做出决定。

6 个答案:

答案 0 :(得分:30)

我想我已经为这两个框架投入了一些时间。我非常喜欢这两个,因为他们将Swing相似的编码带入了Web开发。我不知道对我来说更容易(虽然有点击但我不喜欢速度模板的东西)

是的,存在差异。

  

我不必担心外观和感觉。它有很好的主题

是的,但每个认真的公司都会以不同的方式设计其应用程序(除非您是原型)

  

我将在java中完成所有我非常擅长的编程,并且不必花时间黑客攻击css,这不是很擅长

然后Vaadin会“更好”。

  

我将失去以声明方式创建UI的能力。

有什么好处? (顺便说一句:你可以在groovy代码声明;-))

但是好的。我知道你的意思:如果你可以努力使一个单独的设计师而不是检票口是“更好”。

  

我很难给他们一个桌面的外观和感觉。

为什么不呢?或者你的意思是什么? Wicket支持ajax,并且有一些组件支持很好的'桌面相似'的东西(ajaxlink,lazycomponent,autocompletion,progressbar,看wicket stuff +扩展)。好吧,对于任何更复杂的组件,你必须在javascript中编码但是BTW你知道你甚至可以use GWT within wicket

一些小经验:

Vaadin编码时肯定会更快(没有css,html的东西)。但是,如果你去制作,请记住,编程的简易性可能会降低客户端的性能成本:例如如果您使用'错误'布局,例如Horizo​​ntal / VerticalLayout,...大量使用javascript可能会降低旧浏览器的速度。

但Vaadin并不慢!使用适当的布局,如CssLayout或FastLayout,旧的浏览器也可以提供它。 (虽然如果你使用CssLayout,你的编码风格实际上是类似于wicket。)

Vaadin的一个问题是它有点难以分析,因为你不容易看到客户端需要所有CPU的位置,而嵌套的div会得到神秘的id-name。

关于Wicket的一个好处是warp persist integration

(Guice可以集成在Vaadin和Wicket中)

使用Vaadin测试UI应该很容易(虽然我没有找到单元测试的东西)并且非常简单with wicket

最后但并非最不重要的是,与wicket相比,Vaadin创建列表/表格非常容易。

答案 1 :(得分:10)

我和Wicket一起工作过,但我没有任何与Vaadin的经历,所以这可能(有点)有偏见。

出于显而易见的原因,我推荐Wicket,但你可能感兴趣的是Wickets的开放性。正如Gweebz正确指出的那样,Wicket使用基本的HTML标记作为其基础,因此任何结构或外观变化通常都是微不足道的。

我个人喜欢关于检票口工作的个人之一就是前端演示和数据后端之间的流程,我们已经实现了Spring& amp; JPA / Hibernate意味着由于基于Wickets模型的架构,前端的任何变化都可以通过一行代码转换回数据库。

对于Vaadin从来没有使用过它,我再也不能说太多了,但是如果你正在寻找开始的架构,我也建议你看看GWT。

答案 2 :(得分:9)

(继第一个Wicket相关答案的评论)

Vaadin和Wicket之间的主要区别在于如何编写UI组合和客户端代码。使用Vaadin,您通常可以在没有任何模板或HTML的情况下编写UI,并且您可以获得开箱即用的完全Ajax的UI。但是,如果您更喜欢模板方法,只需使用CustomLayout即可。

很少需要客户端编码,但是当你使用基于Java的GWT时,IMO要比手工编写Javascript好得多。此外,使用GWT,您可以自动获得跨浏览器兼容的解决方案,而不必自己处理这些问题。

在比较框架时,您还应该查看社区活动和文档。与Vaadin一起,这两者都非常出色。另请注意Vaadin目录,它目前包含100多个非常有用的UI组件和其他插件。

答案 3 :(得分:7)

我对每个人的经验都有限,但我更喜欢Vaadin。它为我正在开发的Web应用程序提供了更丰富的体验。我们卖给我们的主要好处是围绕我们的UI类编写单元测试是多么容易,确保组件在以预期方式进行交互时正确运行。对于Wicket来说这也是可能的,但是根据我的经验来说这更难。

我还要提到任何一个框架都需要一些样式。 Wicket以简单的旧HTML开始,Vaadin默认以类似MacOSX的主题开始,但几乎所有你编写的网络应用程序都需要至少一些自定义。考虑到这一点,自定义Wicket应用程序的CSS比Vaadin更容易,原因很简单,因为您控制了标记。 Vaadin隐藏了你的标记并生成了具有奇怪ID和结构的元素,因此更难以自定义外观。在做出决定时记住这一点。

答案 4 :(得分:4)

我目前正与Wicket合作,我曾在Vaadin工作过。我的观察结果很简短:

  • Vaadin有权获得自由,但IMO并不是那么漂亮。如果您需要支持,帮助,文档来解决您遇到的那些痛苦和棘手的问题,那么您就会被搞砸,因为与Apache Wicket相比,您没有这么好的文档/社区。 Vaadin有人帮助你,但你必须付钱。;
  • 要在wicket中编程,您需要成为一名优秀的程序员。 Vaadin还需要良好的Java知识,但如果你愿意,你可以轻松地做一些意大利面条代码(只是说,不做......);
  • Apache Wicket确实将Web技术(Javascript,HTML等)与框架技术(Java)分开。 Vaadin也尝试这样做,但IMO并不那么优雅和透明。

从那里开始,我们正在谈论两种不同类型的框架,两种不同的方法,这些方法有利有弊,我建议您搜索和比较,看看哪种框架真正符合您的需求。

编辑:哦,关于外观和感觉,例如你总是有Wicket Bootstrap

答案 5 :(得分:3)

另请注意,尽管Vaadin基础框架是免费的,但对于某些其他功能,您可能需要购买扩展程序。

Ex - 如果您需要集成一个好的图表解决方案,如Highcharts,您必须支付并购买vaadin图表扩展(即使FOSS应用程序免费提供highcharts,vaadin图表插件不是免费赠送FOSS应用程序。)