有人可以建议“GWT”或“Vaadin”是否是设计应用程序的更好选择?另外:编码风格有什么不同?
答案 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包含一个服务器端开发模型:
B)Vaadin提供了大量高级用户界面组件。对于GWT,人们需要使用商业Sencha GXT来获得可比较的组件集。
C)Vaadin包含基于SASS的Valo主题引擎,可以轻松地从您的应用程序中构建外观漂亮的自定义主题。 Valo是Vaadin的最新主题。
D)数据绑定:Vaadin已经将任何小部件直接关联到数据源,如数据库,文件或服务器端的任何其他内容。这样可以定义窗口小部件的默认行为以对数据源进行操作。
答案 5 :(得分:4)
我相信Vaadin是一个比GWT更先进的框架 但 当谈到优化客户端的性能时,除非你构建自己的组件(这就是Vaadin的美丽停止的地方),你无能为力。 在我现在正在工作的项目中,我所做的90%的员工都是一个魅力 然后我不得不在几张表旁边使用事件时间线。当我在时间线上加载超过400个事件时,我的网页几乎无法使用,更不用说初始化时可怕的慢。过去两个月我一直在努力优化代码。最后我使用了一个GWT组件。
答案 6 :(得分:3)
我没有尝试过Vaadin。我是GWT粉丝,但我可以说我对GWT提供的默认小部件集感到有些失望。你真的需要SmartGWT这样的东西来填补这个框架。
答案 7 :(得分:2)
由于任何应用程序都必须显示来自服务器的显示信息,因此简单编码的主要要求是自动数据绑定到表单和表。 使用Vaadin,这就像几行代码一样简单。 在GWT中,首先没有表映射。 对于表单,您可以将对象映射到表单,但为此,您必须为对象实现所谓的GWT编辑器(并为其中的每个对象实现一个)。编辑器只不过是用于显示/修改对象的表单的定义。总而言之,这里没有自动化。
答案 8 :(得分:1)
“ GWT”或“ Vaadin”是设计应用程序的更好选择
这不是一个“非此即彼”的问题。
使用Vaadin,您可以获得 GWT (或其对应的 Web组件)加上 很多 。 / p>
Vaadin是一个框架,用于通过在服务器端编写纯Java代码(包括声明用户界面)来构建桌面样式的Web应用程序。 Vaadin在Web浏览器中呈现了该用户界面,它自动动态地生成必要的浏览器代码:HTML,CSS,JavaScript等。业务逻辑仅在服务器端执行。 Web客户端上的用户事件(单击按钮,将数据键入字段中等)触发Java代码在服务器端运行。
如何生成和执行浏览器代码,以及客户端和服务器之间的通信方式,取决于第三方技术:
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及更高版本(称为Vaadin Flow)是对该框架的主要重写。 Vaadin Flow不是在下面使用GWT,而是在Web Components技术的基础上构建的。
Web组件实际上是一套技术,包括Custom Elements,Shadow DOM和HTML 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的其他好处: