GWT和Vaadin之间的差异

sun*_*har 51 gwt vaadin

任何人都可以建议"GWT"或"Vaadin"是否是设计应用程序的更好选择?另外:编码风格有什么不同?

Pet*_*ego 58

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

在Vaadin中,应用程序逻辑位于服务器端.客户端通常必须在每次用户交互后调用服务器.

GWT的优势:
App逻辑(回复用户交互)更快,因为它在浏览器中本地运行.它对网络状况不佳也相对不敏感.网络仅在需要时使用(读取/保存新数据),从而节省净流量(对于高流量站点很重要).

在这方面,Vaadin较慢并且引入了UI交互的滞后,这对用户来说是烦人的.如果网络不好,这将显示在UI响应中.

Vaadin优点:
App逻辑在服务器上运行,因此用户无法检查.(Vaadin声称)可以说它更安全.

  • 除了增加安全性之外,还有其他优点,例如自动客户端-服务器通信和可用于应用程序逻辑的大量 Java 库。 (2认同)

hba*_*sta 33

还有几点:

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

  • 在GWT客户端代码中,您必须使用Java编写代码,并且可以使用有限的语言功能子集(GWT编译器可以将其转换为Javascript).在Vaadin中,您可以使用任何JVM语言进行编码,因为所有内容都在服务器中运行(我正在使用带有Scala的Vaadin).这可能与您无关,也可能与您无关.

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

  • 使用第三方小部件扩展GWT非常简单,或者使用自己的小部件.创建新的Vaadin小部件更复杂.


Jou*_*uni 17

另一个Vaadin优势:您不必设计或实现内置的客户端 - 服务器通信.


小智 8

使用Vaadin时,如果您想在客户端执行某些操作,也可以使用内置GWT.这为您提供了服务器端编程模型的简单性(无需通信,无需浏览器编程),可以完全控制浏览器中发生的情况.


Job*_*ews 8

Vaadin和GWT之间的差异:

A)Vaadin包括服务器端开发模型:

  • 通过减少必须为用户界面实现的层,将代码行数减少一半.
  • 允许您将任何基于JVM的语言用于用户界面 - Scala,Groovy
  • 通过在服务器中保留用户界面逻辑来提高安全性
  • 允许从Web服务器同步调用任何后端API
  • 允许将任何标准Java库和工具用于UI层内服务器端体系结构应用程序
  • 不需要Java到JavaScript的编译步骤,这往往需要时间或使工具在GWT项目中变得复杂 - 相反,你有Vaadin客户端引擎
  • 提供开箱即用的服务器,无需额外代码

B)Vaadin提供大量高级用户界面组件.对于GWT,人们需要使用商业Sencha GXT来获得可比较的组件集.

C)Vaadin包括基于SASS的Valo主题引擎,可以轻松地从您的应用程序中构建漂亮的自定义主题.Valo是Vaadin的最新主题.

D)数据绑定:Vaadin已经将任何小部件直接关联到数据源(如数据库,文件或服务器端的任何其他内容).这样可以定义窗口小部件的默认行为以对数据源执行操作.

Vaadin vs GWT


Cur*_*tis 5

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

  • 但是对于完全的灵活性,GWT 比 SmartGWT 好得多。 (3认同)

Bas*_*que 5

tl;博士

“GWT”或“Vaadin”是否是设计应用程序的更好选择

这不是一个“非此即彼”的问题。

随着Vaadin,你GWT(或它的对应Web组件)加得多


Vaadin 是一个框架,用于通过在服务器端编写纯 Java 代码(包括声明用户界面)来构建桌面风格的 Web 应用程序。该用户界面由 Vaadin 在 Web 浏览器中呈现,自动生成必要的浏览器代码:HTML、CSS、JavaScript 等。业务逻辑仅在服务器端执行。Web 客户端上的用户事件(单击按钮、在字段中键入数据等)触发 Java 代码在服务器端运行。

浏览器代码如何生成和执行,以及客户端和服务器如何通信,取决于 3rd 方技术:

  • 在 Vaadin 8 及更早版本中,GWT
  • 在 Vaadin 10 及更高版本中,Web 组件

Vaadin 8 及更早版本使用GWT

Vaadin 8 及更早版本建立在Google Web Toolkit (GWT)之上。GWT 已经从 Google 分拆出来,作为一个完全开源的项目:http : //www.GWTProject.org/

GWT 将Java代码交叉编译为独立的JavaScript文件。GWT 提供了其他重要的特性,例如支持 UI 组件和客户端-服务器通信。

Vaadin有限公司公司是GWT的主要支持者,包括具有托管GWT开发者大会,并提供专业知识咨询服务。

Vaadin 只是基于 GWT 构建的众多产品之一。

Vaadin 10 及更高版本使用Web 组件

Vaadin 10 及更高版本,称为Vaadin Flow,是对该框架的主要重写。Vaadin Flow 没有在底层使用 GWT,而是建立在Web 组件技术之上。

Web Components 实际上是一套技术,包括自定义元素Shadow DOMHTML 模板。这些技术现在内置于大多数现代 Web 浏览器中,并通过polyfills支持许多旧浏览器。

使用 Web Components 为 Vaadin 编写新的小部件组件比使用 GWT 容易得多。并且大多数现有的基于 Web 组件的组件都可以被包装起来,以通过来自 Vaadin 服务器端框架的 Java 提供访问。

我手头没有可引用的来源,但我记得,基于 Web 组件的小部件可能比基于 GWT 的小部件运行得更快并且使用更少的内存。


顺便说一下,两代 Vaadin 都依赖于其他一些技术,例如Atmosphere库来帮助处理WebSocket和 HTTP。