52

谁能建议“GWT”或“Vaadin”是设计应用程序的更好选择吗?另外:编码风格有什么区别?

4

10 回答 10

61

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

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

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

在这方面,Vaadin 速度较慢,并且在 UI 交互中引入了延迟,这对用户来说很烦人。如果网络不好,这将显示在 UI 响应中。

Vaadin 优势:
应用程序逻辑在服务器上运行,因此用户无法检查。可以说(Vaadin 声称)这使它更安全。

于 2010-11-11T15:35:06.743 回答
35

还有几点:

  • 一个根本的区别是,在 GWT 中,您必须将应用程序分为客户端和服务器代码,而在 Vaadin 中没有这种区别。这将影响您的应用程序的架构。

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

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

  • 使用 3rd 方小部件扩展 GWT 或滚动您自己的小部件非常简单。创建新的 Vaadin 小部件更加复杂。

于 2012-01-09T17:37:03.740 回答
18

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

于 2010-11-12T10:04:52.457 回答
8

使用 Vaadin,当您想在客户端做某事时,您还可以使用内置的 GWT。这使您既可以简化服务器端编程模型(无需通信,也无需浏览器编程),又可以完全控制浏览器中发生的事情。

于 2012-01-06T23:30:53.393 回答
8

Vaadin 和 GWT 的区别:

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

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

B) Vaadin 提供了大量高级用户界面组件。对于 GWT,需要将商业 Sencha GXT 用于可比较的组件集。

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

D) 数据绑定:Vaadin 具有将任何小部件直接关联到数据源(例如数据库、文件或服务器端的任何其他内容)的能力。这可以定义小部件的默认行为以作用于数据源。

瓦丁 vs GWT

于 2016-03-31T09:52:00.613 回答
5

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

于 2010-11-11T15:11:04.137 回答
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 Ltd公司是 GWT的主要支持者,包括主办 GWT 开发者会议,并提供咨询专业服务。

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

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

Vaadin 10 及更高版本,称为Vaadin Flow,是对该框架的一次重大改写。Vaadin Flow 不是在底层使用 GWT,而是构建在Web Components技术之上。

Web 组件实际上是一套技术,包括自定义元素Shadow DOMHTML 模板。这些技术现在已内置到大多数现代 Web 浏览器中,并通过polyfill在许多较旧的浏览器上得到支持。

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

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


顺便说一句,两代 Vaadin 都依赖于其他一些技术,例如Atmosphere库在WebSocket和 HTTP 方面的帮助。

于 2019-12-15T22:28:32.853 回答
4

我相信 Vaadin 是一个比 GWT 更先进的框架,但是当谈到优化客户端的性能时,除非您构建自己的组件(这就是 Vaadin 的魅力所在),否则您无能为力。我现在正在工作 我做过的 90% 的员工都在工作,然后我不得不在几张桌子旁边使用一个活动时间线。当我在时间轴上加载超过 400 个事件时,我的网页几乎无法使用,更不用说初始化速度很慢了。过去两个月我一直在尝试优化代码。最后我使用了一个 GWT 组件。

于 2015-10-08T20:08:58.943 回答
2

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

于 2012-06-21T13:11:04.073 回答
0

GWT 使您能够使用 Java 编写 Web 客户端。GWT 交叉编译器为客户端创建 JavaScript 代码。您必须为自己的服务器以及客户端与服务器之间的通信而关心服务器。生成的客户端代码已经针对许多浏览器进行了优化。我个人的看法是,在 Google 专注于 Angular 之前,GWT 非常流行。今天它不再流行了。

Vaadin 提供了两种不同的解决方案:1) 基于 UI 小部件集的实现 Web 组件标准,以及 2) Vaadin 服务器端 Java 框架。它允许您使用 Java 编写 Web 客户端。但是,Vaadin 通过服务器上的运行时动态生成 W​​eb 客户端。Vaadin 关心整个客户端-服务器通信。为了呈现 UI,Vaadin 直到版本 8 都使用预编译的 UI 小部件集。来自版本 10 的 Vaadin 使用 Vaadin Web 组件。

Vaadin 的其他好处:

  • 您无需接触 HTML 和 JavaScript,也无需为 DOM 操作、浏览器历史记录和其他低级问题而烦恼
  • 服务器端架构提供更好的安全性
  • 现代主题
  • 使用 CSS 进行个性化样式
  • RapidClipse 为基于 Eclipse 的 Vaadin 提供了一个强大的 UI 构建器,其中包含 Vaadin <> JPA 数据绑定、国际化、UI 持久性、扩展的 Hibernate 工具、JPA-SQL 查询语言和用于创建 Java 内存数据库应用程序和微服务的 MicroStream 集成
于 2019-12-15T15:35:01.340 回答