Vaadin用于Web应用程序开发 - 很少有人怀疑

LPD*_*LPD 6 cloud gwt client vaadin

我们正在尝试为Web应用程序选择用于客户端开发的框架.这些是我们申请的关键点.

1)富文本应用程序,其中用户在客户端中执行许多活动.

2)我们正在寻求使用Java技术进行开发

3)服务将以云提供.

4)需要移动支持.

5)可扩展性也是一个主要问题.

我在网上看了很多文档和信息以及这个视频http://twit.tv/show/floss-weekly/187,现在已经离开了Vaadin普通的GWT.我在GWT的开发方面有一点经验,但在Vaadin中没有(我只在Vaadin中编写了几个示例程序).请帮助我理解一些事情.

1)如果我必须在Vaadin中编写一个新的小部件,它实现起来有多容易或困难?

2)Vaadin小部件或概念是否存在明显问题,可能会阻碍任何应用程序?

3)如果明天我们决定切换回GWT,那么鉴于Vaadin适用于所有服务器代码逻辑,这是否可行?

4)Vaadin方法是否每次都关注部署在云上的应用程序的服务器?

5)最后但最重要的是,论坛支持和未来发展如何?

非常感谢.请注意,我已经阅读了很多关于这些讨论的文章和链接,但是至少在某些时候对这些东西有真正经验的人感到很高兴.再次感谢.

Bas*_*que 2

GWT

\n
\n

现在只剩下 Vaadin 和普通的 GWT。

\n
\n

Vaadin 7 和 Vaadin 8(现在称为Vaadin 框架)都是围绕Google Web Toolkit (GWT) 的基于 Java 的包装器基于 Java 的包装器。

\n

您为业务逻辑和 UI 创建编写纯 Java 代码。此 Java 代码在Java Servlet Web 容器中服务器端的 JVM 中运行。当 Vaadin 使用 GWT 自动生成渲染 web-app\xe2\x80\x99s 用户界面所需的 HTML、CSS、JavaScript、DOM、AJAX、XML 和 JSON、WebSocket 和 Push 代码时,奇迹就发生了。 user\xe2\x80\x99s 客户端 Web 浏览器。

\n

因此,服务器端使用纯 Java,客户端使用纯 Web 标准技术(客户端没有 Java)。

\n

网络组件

\n

Vaadin 10,现在称为Vaadin Flow ,用新兴的Web 组件标准技术取代了 GWT 的内部使用。这个新一代是 Vaadin 的重大重写,尽管它的目的和许多概念(例如数据绑定)保持不变。

\n

通过利用 Web 组件技术,构建 Vaadin 小部件应该会更容易。而且,将现有的基于 JavaScript 的组件(未明确为 Vaadin 设计)可用于服务器端 Java 代码应该相对容易。这就是 Web 组件的全部要点:制作可跨各种 Web 框架工具运行的基于 Web 的小部件。

\n

虽然 Vaadin Ltd 对发布 Vaadin 10 Flow 感到非常兴奋和自豪,但他们仍然致力于 Vaadin 8 框架。Vaadin 8 正在积极开发中,并制定了至少到 2022 年持续支持的路线图计划。

\n
    \n
  • 如果您确实想使用 GWT,可以在 Vaadin 8 Framework 中进行。
  • \n
  • 如果您想押注于 Web Components 而不是 GWT,请选择 Vaadin 10 Flow。
  • \n
\n

丰富的应用程序

\n
\n

用户在客户端中执行许多活动的富文本应用程序。

\n
\n

如果您指的是字体、颜色等形式的“富文本”,您应该研究与 Vaadin 8 捆绑的RichTextArea小部件,并检查Vaadin 目录以获取其他附加组件。该小部件不会被引入 Vaadin 10 Flow,但如上所述,Web 组件的使用可能会使其他现有的此类工具可用于基于 Java 的 Vaadin 应用程序。我看到一个已经处于测试阶段

\n

如果您所说的“丰富”是指具有专业外观、面向业务、具有企业级可靠性的桌面式 Web 应用程序,那么这就是 Vaadin 的目的。

\n

爪哇

\n
\n

我们希望使用Java技术进行开发

\n
\n

这就是Vaadin存在的理由:编写纯 Java 来利用 Java 工具和库的庞大生态系统,以及安全性、性能和可靠性方面的所有优势 \xe2\x80\x94\ xc2\xa0同时使用网络标准技术在网络浏览器中自动渲染您的应用程序。

\n

移动的

\n
\n

需要移动支持。

\n
\n

Vaadin 小部件系列已经发展到支持触摸表面手势。

\n

Vaadin Ltd 公司此前提供了一个名为Vaadin Touch的特殊移动支持包。常规 Vaadin 小部件中对触摸手势的内置支持使得该包变得过时且不必要。

\n

云和扩展

\n
\n

这些服务将在云中提供。

\n

可扩展性也是主要问题之一。

\n
\n

基于 Java 的 Vaadin 应用程序确实存在于服务器端的 JVM 中。每个当前用户都由会话对象表示。浏览器中出现的所有用户界面小部件在服务器上的 Java 对象中都有一个对应项。您可能会在服务器上的其他 Java 对象中保留更多数据和功能。您也可能从该服务器端调用 JDBC 或 Web 服务等。

\n

所以所有这些都会占用服务器上的内存和 CPU 周期。您确实需要了解您的编程如何进行缓存以及给服务器带来其他负担。用户之间共享的任何资源都必须是线程安全的,因为 Java Servlet 环境在设计上是多线程的。

\n

可能需要强大的服务器硬件(内存、内核),具体取决于您的应用程序的具体情况。或者,如果您确实有一个非常大的应用程序和很多用户,您可能需要多个具有粘性会话负载平衡的服务器。

\n

Vaadin Ltd 公司模拟了支持数千个并发用户会话的 Vaadin 应用程序的使用。您可以联系他们针对您的具体情况进行咨询。

\n

虽然可扩展性是一个需要考虑的问题,但不要急于下结论。想清楚,并做一些实验。

\n

创建自定义小部件

\n
\n

如果我必须在 Vaadin 中编写一个新的小部件,完成起来有多容易或多困难?

\n
\n

在 Vaadin 8 中,您确实可以创建自己的小部件。但这样做需要学习 GWT 的使用。当然可行,正如您从Vaadin 目录中数百个已发布的附加组件中看到的那样中数百个已发布的附加组件中看到的那样。但仍然有一些严肃的工作。Vaadin Ltd. 提供了这方面的培训。

\n

在 Vaadin 10 Flow 中,使用 Web 组件应该会使您自己的小部件的创建变得更加容易。查看这个免费提供的入门项目,帮助您继续前进。请参阅教程使用 Element API 创建简单组件。在 Vaadin 10 Flow 中创建小部件的关键概念:

\n
    \n
  • 每个 Vaadin 10 组件始终映射到服务器端DOM表示中的一个根元素。
  • \n
  • API使得从服务器端轻松Element修改DOM成为可能。
  • \n
\n

还有其他问题吗?

\n
\n

Vaadin 小部件或概念是否存在任何可能阻碍任何应用程序的明显问题?

\n
\n

不确定你在这里的意思。我建议阅读优秀的 Vaadin 教程和手册。它引导您使用 Vaadin 中的各种功能。

\n

在使用过其他桌面应用程序的快速应用程序开发环境后,Vaadin 对我来说总是很有意义,适合我的思维和做事方式。

\n

最前沿

\n

对于 Vaadin Flow,要知道 Web 组件仍然是新事物,而且有些前沿。Web Components 实际上是技术的集合。并非所有浏览器制造商都完全支持所有这些。所以一些polyfill还是有必要的。

\n

Vaadin Flow 还利用了CSS 中最终出现的一对现代页面布局功能:FlexboxGrid Layout

\n

只有最新版本的浏览器才能接近对所有这些功能提供良好的支持。有关具体详细信息,请参阅CanIUse.com

\n

Vaadin\xe2\x80\x99s 的部分目的是掩盖各种浏览器的各个版本之间的差距,使我们使用 Vaadin 的开发人员隔离。因此,您可能不会在某些浏览器中遇到问题,但也可能会遇到问题。

\n

此外,Vaadin Flow 并不完全具备 Vaadin 8 的所有功能。有些正在开发中,有些正在规划中。

\n

结论:如果您急于尽快发布并且无法坚持让用户更新到最新的浏览器,请使用 Vaadin 8 而不是 Flow。

\n

离开 Vaadin 前往 GWT

\n
\n

如果明天我们决定切换回 GWT,鉴于 Vaadin 适用于所有服务器代码逻辑,这是否可行?

\n
\n

如果您想使用 GWT,并且想用 Java 编写服务器端逻辑,那么 Vaadin 8 Framework 是您的完美工具。我不明白你怎么会想离开瓦丁。

\n

但如果您离开 Vaadin,您将不再拥有将浏览器中的 GWT 与服务器上的 Java 代码连接起来的粘合剂。Vaadin 为您提供了这种胶水。当然,您可以编写 Java 后端业务逻辑而不直接感知 Vaadin。事实上,Vaadin Ltd 为此提供了一个基于 Maven 的多模块原型。该模块保存您的业务逻辑和数据库访问(等)代码,与包含面向 Vaadin 的代码的模块backend分开。ui

\n

网络流量

\n
\n

对于部署在云上的应用程序来说,每次访问服务器的 Vaadin 方法是否存在问题?

\n
\n

您将需要进行一些实验和分析,以查看特定应用程序所需的内存和内核。如上所述,Vaadin 对服务器资源的要求可能很高。

\n

但从技术上讲,云部署没有任何技巧或技术限制。只是在JVM中运行的普通 Java 代码。任何可以运行Java Servlet Web 容器的容器(例如TomcatJettyGlassfish / Payara、 WildFly/JBoss 等)都可以运行您的 Vaadin 应用程序。

\n

如果您担心网络流量,是的,确实有流量。当用户使用小部件(例如单击按钮或在字段中输入数据)时,您的服务器端 Java 应用程序会收到通知,以便您的应用程序可以使用业务逻辑进行响应。所以这意味着频繁的网络遍历。

\n

您可以选择在不需要时不立即通知服务器端。通过这样做,您可以控制部分流量。例如,您可以选择是否希望在字段中输入文本时通知服务器端每次击键(并做出反应),或者偶尔在击键之间暂停,或者仅在用户完成该字段的输入之后场地。请参阅[配置值更改事件的粒度]( https://vaadin.com/docs/v8/framework/components/components-textfield.html请参阅手册中的

\n

当我开始使用 Vaadin 时,我确实担心互联网性能会出现问题。但我可以说,根据我自己的经验,我很惊喜,真的很震惊,发现这对我来说不是问题。例如,在美国,威斯康星州的一个托管中心只有一台 Mac mini,具有非常快的互联网连接,运行 Vaadin 7 或 8 应用程序,几乎可以立即对访问西雅图、佛罗里达和加拿大的家庭 DSL 和有线电视连接的客户端做出反应。从香港访问时,只有最轻微的延迟,在数据输入应用程序中通常难以察觉。

\n

当然,您的里程可能会有所不同。我上面的例子是一台专用计算机。相比之下,云提供商因 CPU 可用性和网络延迟或等待时间的波动而臭名昭著。

\n

支持

\n
\n

最后但也是最重要的一点是,论坛支持和未来的开发如何?

\n
\n

Vaadin Ltd似乎是一家非常健康的开源公司。他们销售附加产品、支持、咨询和培训。该公司一直在发展,雇用了更多员工,并建立了海外办事处(美国、德国),而其总部仍在芬兰(图尔库、赫尔辛基)。

\n

各种 Vaadin 产品正在大力开发,有许多增量版本、预版本以及即将推出的长期支持版本。他们定期发布其发展计划的路线图。他们还在博客中定期更新业务和技术问题。

\n

Vaadin Ltd 公司拥有一个非常活跃的论坛网站。他们的员工和其他用户也积极使用 Stack Overflow。

\n