Pet*_*ego 58
在GWT中,应用程序逻辑通常在客户端运行.它只在需要读取/保存某些数据时调用服务器.
在Vaadin中,应用程序逻辑位于服务器端.客户端通常必须在每次用户交互后调用服务器.
GWT的优势:
App逻辑(回复用户交互)更快,因为它在浏览器中本地运行.它对网络状况不佳也相对不敏感.网络仅在需要时使用(读取/保存新数据),从而节省净流量(对于高流量站点很重要).
在这方面,Vaadin较慢并且引入了UI交互的滞后,这对用户来说是烦人的.如果网络不好,这将显示在UI响应中.
Vaadin优点:
App逻辑在服务器上运行,因此用户无法检查.(Vaadin声称)可以说它更安全.
hba*_*sta 33
还有几点:
一个根本区别在于,在GWT中,您必须将应用程序分离为客户端和服务器代码,而在Vaadin中没有这样的区别.这将影响您的应用程序的体系结构.
在GWT客户端代码中,您必须使用Java编写代码,并且可以使用有限的语言功能子集(GWT编译器可以将其转换为Javascript).在Vaadin中,您可以使用任何JVM语言进行编码,因为所有内容都在服务器中运行(我正在使用带有Scala的Vaadin).这可能与您无关,也可能与您无关.
GWT编译非常慢,尽管在开发模式下你有模拟器.这使得生产环境更新变得痛苦(我开发的GWT应用程序已经变得非常大,目前编译大约需要15分钟).
使用第三方小部件扩展GWT非常简单,或者使用自己的小部件.创建新的Vaadin小部件更复杂.
Vaadin和GWT之间的差异:
A)Vaadin包括服务器端开发模型:
B)Vaadin提供大量高级用户界面组件.对于GWT,人们需要使用商业Sencha GXT来获得可比较的组件集.
C)Vaadin包括基于SASS的Valo主题引擎,可以轻松地从您的应用程序中构建漂亮的自定义主题.Valo是Vaadin的最新主题.
D)数据绑定:Vaadin已经将任何小部件直接关联到数据源(如数据库,文件或服务器端的任何其他内容).这样可以定义窗口小部件的默认行为以对数据源执行操作.
“GWT”或“Vaadin”是否是设计应用程序的更好选择
这不是一个“非此即彼”的问题。
随着Vaadin,你GWT(或它的对应Web组件)加得多多。
Vaadin 是一个框架,用于通过在服务器端编写纯 Java 代码(包括声明用户界面)来构建桌面风格的 Web 应用程序。该用户界面由 Vaadin 在 Web 浏览器中呈现,自动生成必要的浏览器代码:HTML、CSS、JavaScript 等。业务逻辑仅在服务器端执行。Web 客户端上的用户事件(单击按钮、在字段中键入数据等)触发 Java 代码在服务器端运行。
浏览器代码如何生成和执行,以及客户端和服务器如何通信,取决于 3rd 方技术:
Vaadin 8 及更早版本建立在Google Web Toolkit (GWT)之上。GWT 已经从 Google 分拆出来,作为一个完全开源的项目:http : //www.GWTProject.org/
GWT 将Java代码交叉编译为独立的JavaScript文件。GWT 提供了其他重要的特性,例如支持 UI 组件和客户端-服务器通信。
该Vaadin有限公司公司是GWT的主要支持者,包括具有托管GWT开发者大会,并提供专业知识咨询服务。
Vaadin 只是基于 GWT 构建的众多产品之一。
Vaadin 10 及更高版本,称为Vaadin Flow,是对该框架的主要重写。Vaadin Flow 没有在底层使用 GWT,而是建立在Web 组件技术之上。
Web Components 实际上是一套技术,包括自定义元素、Shadow DOM和HTML 模板。这些技术现在内置于大多数现代 Web 浏览器中,并通过polyfills支持许多旧浏览器。
使用 Web Components 为 Vaadin 编写新的小部件组件比使用 GWT 容易得多。并且大多数现有的基于 Web 组件的组件都可以被包装起来,以通过来自 Vaadin 服务器端框架的 Java 提供访问。
我手头没有可引用的来源,但我记得,基于 Web 组件的小部件可能比基于 GWT 的小部件运行得更快并且使用更少的内存。
顺便说一下,两代 Vaadin 都依赖于其他一些技术,例如Atmosphere库来帮助处理WebSocket和 HTTP。