Vaadin与jQuery UI比较

4
我正在开始一个新的Java项目,对于UI技术来说,最主流的似乎是jQuery UI和Vaadin (或GWT)。
是否有任何指导方针可以选择最合适的UI框架,有没有可以注意到的优缺点呢?
例如使用Vaadin就像开发与使用Java Swing应用程序相当的桌面应用程序,而使用jQuery则不同。
但我很感谢任何关于此的额外想法。
谢谢。
5个回答

5
我喜欢Vaadin的原因是它处理整个客户端和服务器之间的通讯(保持UI刷新等),就像编写Swing应用程序一样。Vaadin提供了一堆组件,也可以扩展使用GWT小部件,非常灵活。
使用Vaadin时,你不需要关心HTML和JavaScript,因此可以全身心地开发应用程序。
希望我的观点能对您有所帮助。

4
我不熟悉Vaadin,但我知道Java、略懂GWT和非常熟悉jQuery。所以我想给出我的意见:
总体而言,我认为使用纯HTML/jQuery开发客户端GUI更容易。
  1. GWT承诺支持所有浏览器,jQuery也可以做到。
  2. GWT让你可以使用熟悉的语言(Java)而不需要学习新的语言(jQuery)。对于这一点我们可以争论,但如果你也熟悉jQuery,那么这并没有优势;如果你不熟悉,我认为学习jQuery比学习GWT框架要容易得多。
  3. 我认为GWT会给项目增加很多不必要的复杂性(新编译器、新一套SDK、新的错误、新的调试方式等)。
  4. 在使用GWT时,虽然有很多优秀的JavaScript/AJAX调试工具,但你很难使用它们。你必须使用Eclipse的调试机制,可能会有些麻烦。
  5. 在GWT中部署更改比正常的HTML/JavaScript项目需要更长时间,这意味着开发时间更长。
  6. 如果你的应用程序中使用了另一个框架(如Spring、Hibernate),将它们与GWT框架混合使用可能会导致编码/维护上的困境(我有过亲身经历)。
就像我说的,我不熟悉Vaadin,无法对它发表评论,但我强烈建议你至少尝试一下jQuery。

谢谢,我对jQuery非常熟悉,但还在学习Vaadin。我同意你所说的要点,然而,在我看来,Vaadin应用程序比jQuery应用程序看起来更加流畅和美观。因此,我想问一下,这是否值得额外的复杂性呢? - jakstack
就像我说的,我不是很了解它,所以我不能对此进行争论,但请考虑开发和维护时间,并看看这是否值得权衡。此外,请考虑jQuery社区非常庞大,这意味着解决问题更容易,如果您需要新的功能,可能已经有人编写了一个插件。 - Tomer
我不太喜欢这类框架的主要原因在于它们夺走了你的控制权,但这只是我的个人想法 :)。此外,请尝试确定从模板中偏离的难易程度(例如,替换按钮图像、更改布局等)。 - Tomer
Vaadin 提供了设置组件应具有的 CSS 类的能力 - 在 Java 代码侧完成 - 并且在应用程序 CSS 文件中,您可以以适当的方式对其进行样式设置。我还没有深入研究它,但这似乎对我来说是非常好的集成。 - jakstack
如果您正在考虑纯客户端方法,您将需要使用JAX-RS服务器端。考虑使用backbone.jshtml5boilerplate来简化客户端开发。 - Craig Ringer
@fatman:Vaadin不是GWT。它在开发/部署时间、复杂性和调试方面有几个优点,尤其是相对于GWT而言。你的大多数论点并不适用于Vaadin。 - Stefan Endrullis

1
如果你比Java更擅长JavaScript和jQuery,我建议你使用jQuery UI。否则,我建议你使用vaadin。这两个框架都有其优缺点,非常取决于个人偏好(例如对于类型化/非类型化语言的偏好)。
首先,我认为这两个框架都有庞大的社区和许多插件。到目前为止,我总是能找到我工作所需的插件。
Vaadin的一些优点:
- 您可以使用一种语言(Java)来开发RIA。 - 开发是类型安全的->减少了主要错误来源。 - 您可以像开发桌面应用程序一样开发应用程序 - 不必处理客户端代码(JavaScript,jQuery) - 不必处理客户端-服务器通信(AJAX) - 编写安全应用程序更容易,因为整个Web应用程序状态存储在服务器上(客户端操作无效)。 - 您可以直接在IDE中调试整个代码。 - 使用Java Persistence API(hibernate和co.)以面向对象的方式访问数据库。
Vaadin的一些缺点:
  • 项目的初始设置(包括网页应用程序重新加载脚本、调试器设置)比简单的php/javascript项目需要更多时间。
  • 部署时间稍长(约5秒钟重新加载网页应用程序)。
  • 要使用外部JS组件,您需要先编写Java包装器;不过这并不难(请参见https://vaadin.com/blog/-/blogs/vaadin-7-loves-javascript-components)。
  • Vaadin是一个高级框架,使用GWT作为背景。因此,在Vaadin的组件中适应特定细节不像基于JavaScript的UI框架那么容易。

1

jQuery UI的级别太低了,不能单独使用(我不会这样做,它无法解决您的UI问题),您看到Twitter Bootstrap能做什么了吗?它基本上拥有jQuery UI的所有东西和许多有用的插件/组件 - 它是实际的框架,可以构建并且是我未来几年至少会使用的唯一UI框架,如果我正在开发Web应用程序。(响应式设计等)- 只是指出这个观点,即使您没有在问题中包含它:http://twitter.github.com/bootstrap/

至于Vaadin和GWT,作为一名经验丰富的Web程序员,我不觉得需要“桌面应用程序类型的Web编程”,这只会让我更加困惑,因此在我制作某种“桌面软件外观”的网页之前,我不会使用它们。(顺便说一句,如果它们与Swing类似,它们将是噩梦,但是像我说的那样-没有使用,因为我不需要它们。)


1
当然,应用程序的性质应该是一个重要的决定因素。我喜欢 Twitter Bootstrap,它看起来很不错,但是我只有时间使用现成的组件来解决业务问题,没有时间扩展框架使其看起来更好。 - jakstack

0
在Vaadin中创建用户界面似乎比使用JavaScript + HTML创建用户界面要简单得多,无论使用哪个框架。

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