GWT和Vaadin之间的差异

任何人都可以build议“GWT”或“Vaadin”是否是devise应用程序的更好select? 另外:编码风格有什么区别?

在GWT中,应用程序逻辑通常在客户端运行。 它只在需要读取/保存一些数据时调用服务器。

Vaadin应用程序逻辑在服务器端。 客户端通常在每次用户交互后都必须调用服务器。

GWT优势:
应用程序逻辑(回复用户交互)在本地运行在浏览器中更快。 这对networking状况不佳也相对不敏感。 只有在需要时才使用networking(读取/保存新数据),从而节省净stream量(对高stream量站点很重要)。

在这方面,Vaadin速度较慢,引入了用户界面交互的延迟,这对用户来说很烦人。 如果networking不好,这将显示在用户界面的响应。

Vaadin的优势:
应用程序逻辑在服务器上运行,所以用户不能检查。 可以说(Vaadin声称)使它更安全。

还有几点:

  • 一个根本的区别是,在GWT中,你必须将你的应用程序分离成客户端和服务器代码,在Vaadin中没有这样的区别。 这将影响您的应用程序的体系结构。

  • 在GWT客户端代码中,您必须使用Java进行编码,并且只能使用有限的语言function子集(即GWT编译器可以转换为Javascript)。 在Vaadin中,你可以使用任何JVM语言进行编码,因为所有东西都在服务器上运行(我正在使用Vaadin和Scala)。 这可能与您的相关或不相关。

  • GWT编译非常慢,尽pipe在开发模式下你有模拟器。 这使得生产环境更新变得痛苦(我开发的GWT应用程序已经变得相当大,目前大约需要15分钟才能编译)。

  • 使用第三方小部件来扩展GWT是非常简单的,或者推出自己的GWT。 创build新的Vaadin小部件更复杂。

Vaadin的另一个优点是:您不必devise或实施内置的客户端 – 服务器通信。

借助Vaadin,当您想在客户端执行某些操作时,还可以使用内置的GWT。 这样可以让你简化服务器端编程模型(不需要通信,不需要浏览器编程),而且可以完全控制浏览器中发生的事情。

Vaadin和GWT的差异:

A)Vaadin包含一个服务器端的开发模型:

  • 通过减less用户界面必须实现的层数,将代码行数减半。
  • 允许您使用任何基于JVM的用户界面语言 – Scala,Groovy
  • 通过保持服务器中的用户界面逻辑提高安全性
  • 允许从Web服务器同步调用任何后端API
  • 允许在服务器端架构应用程序中使用UI层的任何标准Java库和工具
  • 不需要经常需要花费时间的Java到JavaScript的编译步骤,或者使工具在GWT项目中变得复杂 – 而是需要Vaadin客户端引擎
  • 不需要额外的代码即可提供服务器推出

B)Vaadin提供了大量的高级用户界面组件。 对于GWT,需要使用商用Sencha GXT来进行可比较的组件设置。

C)Vaadin包含基于SASS的Valo主题引擎,可以轻松地从您的应用程序构build好看的自定义主题。 Valo是Vaadin的最新主题。

D)数据绑定:Vaadin具有将任何小部件直接关联到数据源(如数据库,文件或服务器端任何其他部分)的function。 这使得能够定义小部件的默认行为以作用于数据源。

Vaadin对GWT

我没有尝试Vaadin。 我是一个GWT粉丝,但是我可以说我对GWT提供的默认小部件集感到有点失望。 你真的需要像SmartGWT这样的东西来填补框架。

由于任何应用程序必须显示来自服务器的显示信息,简单编码的一个主要要求是将自动数据绑定到您的表单和表格。 有了Vaadin,这就像几行代码一样简单。 在GWT中,首先你没有表格映射。 至于表单,你可以将一个对象映射到一个表单,但是你必须为你的对象实现一个所谓的GWT编辑器(对于它里面的每个对象来说)。 编辑器只不过是用于显示/修改对象的表单的定义。 总而言之,这里没有自动化。

我相信Vaadin是一个比GWT更高级的框架,但是在客户端优化性能的时候,除非你自己构build自己的组件(Vaadin的美好之处就在此停止),否则没有什么可以做的。在一个项目中,现在正在工作我已经完成了90%的工作人员的工作魅力然后我不得不使用一个事件时间表旁边的几个表。 当我在时间线上加载了超过400个事件时,我的网页几乎不可用,更不用说初始化过程中可怕的慢了。 我一直在试图优化过去两个月的代码。 最后我使用了一个GWT组件。