GWT
现在留下了 Vaadin 和普通的 GWT。
Vaadin 7 和 Vaadin 8,现在称为Vaadin Framework,都是基于 Java 的Google Web Toolkit (GWT)包装器。
您为业务逻辑和 UI 创建编写纯 Java 代码。此 Java 代码在Java Servlet Web 容器中的服务器端 JVM 中运行。当 Vaadin 使用 GWT 自动生成必要的 HTML、CSS、JavaScript、DOM、AJAX、XML 和 JSON、WebSocket 以及在用户的客户端 Web 浏览器中呈现 Web 应用程序的用户界面所需的推送代码时,奇迹就会发生.
因此,服务器端是纯 Java,客户端是纯 Web 标准技术(客户端没有 Java)。
网页组件
Vaadin 10,现在称为Vaadin Flow ,用新兴的Web 组件标准技术取代了 GWT 的内部使用。新一代是对 Vaadin 的重大改写,尽管它的目的和它的许多概念(如数据绑定)保持不变。
通过利用 Web Components 技术,应该更容易构建 Vaadin 小部件。并且使现有的基于 JavaScript 的组件(不是为 Vaadin 明确设计的)可用于您的服务器端 Java 代码应该相对容易。这就是 Web Components 的重点:制作可跨各种 Web 框架工具工作的基于 Web 的小部件。
虽然 Vaadin Ltd 对发布 Vaadin 10 Flow 感到非常兴奋和自豪,但他们仍然致力于 Vaadin 8 框架。Vaadin 8 正在积极开发中,并制定了至少到 2022 年继续提供支持的路线图计划。
- 如果您真的想使用 GWT,可以在 Vaadin 8 框架中进行。
- 如果您想押注 Web Components 而不是 GWT,请选择 Vaadin 10 Flow。
丰富的应用
用户在客户端执行许多活动的富文本应用程序。
如果您指的是字体、颜色等中的“富文本”,您应该研究与 Vaadin 8 捆绑RichTextArea
的小部件,并查看Vaadin 目录以获取其他附加组件。该小部件不会被引入 Vaadin 10 Flow,但如上所述,Web 组件的使用可能会使其他现有的此类工具可用于基于 Java 的 Vaadin 应用程序。我看到一个已经在 beta 中了。
如果您指的是具有企业级可靠性的专业外观、面向业务、桌面风格的 Web 应用程序的“丰富”,这正是 Vaadin 的目的。
爪哇
我们正在寻求使用 Java 技术进行开发
这就是 Vaadin 存在的理由:编写纯 Java 以利用 Java 工具和库的庞大生态系统,以及其在安全性、性能和可靠性方面的所有优势——同时使用 Web 标准技术进行自动渲染您的应用程序在网络浏览器中。
移动的
需要移动支持。
Vaadin 小部件集合已经发展为支持触摸表面手势。
Vaadin Ltd 公司以前提供了一个特殊的移动支持包,称为Vaadin Touch。常规 Vaadin 小部件中对触摸手势的内置支持使该包过时且不必要。
云和扩展
这些服务将在云中提供。
可扩展性也是一个主要问题。
您基于 Java 的 Vaadin 应用程序确实存在于服务器端的 JVM 中。每个当前用户都由会话对象表示。出现在浏览器中的所有用户界面小部件在服务器上的 Java 对象中都有对应物。您可能会在服务器上的其他 Java 对象中保留更多数据和功能。您也可能从该服务器端调用 JDBC 或 Web 服务等。
所以所有这些都会占用服务器上的内存和 CPU 周期。您确实需要意识到您的编程会进行缓存并将其他负担放在服务器上。用户之间共享的任何资源都必须是线程安全的,因为 Java Servlet 环境在设计上是多线程的。
根据您的应用程序的具体情况,可能需要强大的服务器硬件(内存、内核)。或者,如果你真的有一个非常大的应用程序和非常多的用户,你可能需要多个具有粘性会话负载平衡的服务器。
Vaadin Ltd 公司模拟了支持数千个同时用户会话的 Vaadin 应用程序的使用。您可以联系他们就您的具体情况进行咨询。
虽然可扩展性是一个需要考虑的问题,但不要妄下结论。想清楚,做一些实验。
创建自定义小部件
如果我必须在 Vaadin 中编写一个新的小部件,实现起来有多容易或多难?
在 Vaadin 8 中,您确实可以创建自己的小部件。但这样做需要学习 GWT 的使用。可行,正如您从Vaadin Directory中数百个已发布的附加组件中看到的那样。但仍有一些严肃的工作。Vaadin Ltd. 提供了这方面的培训。
在 Vaadin 10 Flow 中,使用 Web 组件应该可以更轻松地创建您自己的小部件。查看这个免费提供的入门项目,让您继续前进。请参阅教程,使用 Element API 创建一个简单的组件。在 Vaadin 10 Flow 中创建小部件的关键概念:
- 每个 Vaadin 10 组件始终映射到服务器端DOM表示中的一个根元素。
- 该
Element
API 使从服务器端轻松修改DOM成为可能。
还有其他问题吗?
Vaadin 小部件或概念是否有任何明显的问题,可能会阻碍任何应用程序?
不知道你在这里的意思。我建议通读优秀的 Vaadin 教程和手册。它会引导您使用 Vaadin 中的各种功能。
在为桌面应用程序使用过其他快速应用程序开发环境之后,Vaadin 对我来说总是有意义的,适合我的思维方式和做事方式。
出血边缘
对于 Vaadin Flow,要知道 Web 组件仍然是新事物,而且有些前沿。Web 组件实际上是技术的集合。并非所有浏览器制造商都完全支持所有这些。所以一些polyfills仍然是必要的。
Vaadin Flow 还利用了最终出现在 CSS 中的一对现代页面布局功能: Flexbox和Grid Layout。
只有最新版本的浏览器才能对所有这些功能提供良好的支持。有关详细信息,请参阅CanIUse.com。
Vaadin 的部分目的是掩盖各种浏览器的不同版本之间的差距,以隔离我们使用 Vaadin 的开发人员。因此,您可能不会在某些浏览器中遇到问题,但您可能会再次遇到问题。
此外,Vaadin Flow 并不完全具备 Vaadin 8 的所有功能。有些正在开发中,有些正在计划中。
结果:如果您渴望尽快发布并且不能坚持让用户更新到最新的浏览器,请使用 Vaadin 8 而不是 Flow。
离开 Vaadin 前往 GWT
如果明天我们决定只切换回 GWT,考虑到 Vaadin 与所有服务器代码逻辑一起工作,这是否可行?
如果您想使用 GWT,并且想用 Java 编写服务器端逻辑,那么 Vaadin 8 Framework 是您的完美工具。我看不出你会怎么想离开 Vaadin。
但是,如果您确实离开了 Vaadin,您将不再拥有将浏览器中的 GWT 与服务器上的 Java 代码连接起来的粘合剂。这种胶水就是 Vaadin 为您提供的。当然,您可以编写您的 Java 后端业务逻辑以直接不了解 Vaadin。事实上,Vaadin Ltd 正是为此目的提供了一个基于 Maven 的多模块原型。该模块包含您的业务逻辑和数据库访问(等)代码,与包含您的面向 Vaadin 的代码backend
的模块分开。ui
网络流量
每次都访问服务器的 Vaadin 方法是否会影响部署在云上的应用程序?
您将需要进行一些试验和分析,以查看特定应用程序所需的内存和内核。如上所述,Vaadin 对服务器资源的要求可能很高。
但从技术上讲,云部署没有技巧或技术限制。只是在JVM中运行的普通 Java 代码。任何可以运行Java Servlet Web 容器的东西,例如Tomcat、Jetty、Glassfish / Payara、WildFly/JBoss 等都可以运行您的 Vaadin 应用程序。
如果您担心网络流量,是的,有流量。当用户使用小部件(例如单击按钮或在字段中输入数据)时,会通知您的服务器端 Java 应用程序,以便您的应用程序可以响应业务逻辑。所以这意味着频繁的网络遍历。
您确实可以选择在不需要时不立即通知服务器端。这样做,您正在控制一些流量。例如,您可以选择是否希望在在字段中输入文本时通知服务器端(并做出反应),或者偶尔在击键之间暂停,或者仅在用户完成输入之后场地。请参阅手册中的 [配置值更改事件的粒度]( https://vaadin.com/docs/v8/framework/components/components-textfield.html部分。
当我开始使用 Vaadin 时,我确实担心 Internet 性能出现问题。但我可以说,以我自己的经验,我很惊喜,真的很震惊,发现这对我来说不是问题。例如,在美国,在威斯康星州的科罗拉多州,只有一台 Mac mini 在非常快速的互联网连接上运行 Vaadin 7 或 8 应用程序,几乎可以立即对访问西雅图、佛罗里达州和加拿大的家庭 DSL 和有线电视连接的客户做出反应. 从香港访问时,只有最轻微的延迟,在数据输入应用程序中通常是难以察觉的。
当然,您的里程可能会有所不同。我上面的例子是一台专用计算机。相比之下,云提供商因 CPU 可用性和网络延迟或延迟的波动而臭名昭著。
支持
最后但最重要的是,论坛支持和未来的开发如何?
Vaadin Ltd似乎是一家非常健康的开源公司。他们销售附加产品、支持、咨询和培训。该公司一直在发展,雇佣更多员工,并在海外设立办事处(美国、德国),而他们的总部仍在芬兰(图尔库、赫尔辛基)。
各种 Vaadin 产品正处于非常繁重的开发阶段,其中包含许多增量版本、预发布版本以及即将推出的长期支持版本。定期发布其发展计划的路线图。他们还在博客中定期更新业务和技术问题。
Vaadin Ltd 公司拥有一个非常活跃的论坛站点。他们的员工和其他用户也都积极使用 Stack Overflow。