GWT和Vaadin之间的差异

时间:2010-11-11 15:04:59

标签: gwt vaadin

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

10 个答案:

答案 0 :(得分:57)

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

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

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

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

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

答案 1 :(得分:32)

还有几点:

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

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

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

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

答案 2 :(得分:16)

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

答案 3 :(得分:8)

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

答案 4 :(得分:7)

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

答案 5 :(得分:4)

我相信Vaadin是一个比GWT更先进的框架 但 当谈到优化客户端的性能时,除非你构建自己的组件(这就是Vaadin的美丽停止的地方),你无能为力。 在我现在正在工作的项目中,我所做的90%的员工都是一个魅力 然后我不得不在几张表旁边使用事件时间线。当我在时间线上加载超过400个事件时,我的网页几乎无法使用,更不用说初始化时可怕的慢。过去两个月我一直在努力优化代码。最后我使用了一个GWT组件。

答案 6 :(得分:3)

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

答案 7 :(得分:2)

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

答案 8 :(得分:1)

tl; dr

  

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

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

使用Vaadin,您可以获得 GWT (或其对应的 Web组件)加上 很多 。 / p>


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

如何生成和执行浏览器代码,以及客户端和服务器之间的通信方式,取决于第三方技术:

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

Vaadin 8和更早版本使用 GWT

Vaadin 8和更早版本是建立在Google Web Toolkit (GWT)之上的。 GWT已经spun-out of 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组件实际上是一套技术,包括Custom ElementsShadow DOMHTML Templates。这些技术现已内置到most every modern web browser中,并通过polyfills在许多较旧的浏览器中受支持。

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

我没有可援引的消息来源,但是我记得,与基于GWT的同类组件相比,基于Web组件的Widget可以运行得更快并且使用的内存更少。


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

答案 9 :(得分:0)

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

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

Vaadin的其他好处:

  • 您无需接触HTML和JavaScript,也无需费心处理DOM操作,浏览器历史记录和其他低级问题
  • 服务器端体系结构提供了更好的安全性
  • 现代主题
  • 使用CSS的个性化样式
  • RapidClipse为基于Eclipse的Vaadin提供了强大的UI构建器,其中包含Vaadin <> JPA数据绑定,国际化,UI持久性,扩展的Hibernate工具,JPA-SQL查询语言和MicroStream集成,用于创建Java内存数据库应用程序和微服务< / li>