Vaadin
Vaadin 是一款非常出色的工具,用于构建以纯 Java 开发并通过常规 Web 浏览器交付的交互式桌面样式 Web 应用程序。
好处
Vaadin 6、7 和 8 应用程序完全在服务器端运行。由 Vaadin 自动安装到用户浏览器窗口中的 JavaScript 库:
- 根据服务器端应用程序的指示在屏幕上绘制。
- 将用户操作(单击、键入等)反馈给服务器,以供应用程序考虑和响应。
因此没有“客户端的逻辑验证”或“html5 验证”,至少从 Vaadin 应用程序开发人员的角度来看是这样。 Vaadin 框架可能会在其内部实现中暗中这样做,但这不是我作为 Vaadin 应用程序开发人员关心的问题。这就是 Vaadin 的核心优势:我不在乎 Vaadin 如何将我的表单放到用户的屏幕上。作为 Vaadin 应用程序开发人员,我不会编写任何 JavaScript、HTML、DOM、CSS 或 AJAX。只是纯Java。
样式类似于Swing:实例化一个layout(一个表单),添加labels,添加buttons,添加fields,添加other widgets。根据需要附加validators。嵌套额外的布局,用于复杂的表单。所有这些都在服务器端的内存中执行,全部使用纯 Java。最后告诉布局展示自己。噗,就像魔术一样,Vaadin 告诉浏览器显示该形式的相似之处。
如果您想开发恰好通过 Web 浏览器部署的桌面风格的商业风格应用程序,Vaadin 是一个很棒的工具。
权衡
权衡包括:
- 服务器端占用大量内存和 CPU。
- 放弃对 HTML/CSS/JavaScript 的控制。
缩放
您的网络应用程序位于服务器上,而不是客户端上。您所有的业务逻辑,用户输入的数据,所有用户表单的内部表示,例如表格中的行项,所有这些都存在于服务器上。乘以用户数量。这意味着 Vaadin 应用程序可能需要大量内存和 CPU 使用率。
这可能会限制扩大规模。但考虑到 64 位 Java、多个内存和多个内核,即使是在最底层的机器上(例如 Mac mini,),扩展可能仅对最大/最繁忙的应用程序来说是一个问题。
即使在那些罕见的大型/繁忙应用程序中,也可能有一些方法可以在 Vaadin 中处理缩放。所有的应用程序都存在于一个 Servlet 会话中。一些 Web 基础架构允许此类会话状态在服务器之间移动,甚至可以持久化到存储中以供其他服务器获取。
或者您的应用可能会很好地扩展。已经完成了对 11,000 个并发客户的模拟。见:
对 HTML、CSS、JavaScript 的控制
如果您的团队对传统的 Web 应用架构更加熟悉或经验丰富,那么 Vaadin 可能不适合您。在 Vaadin 中,您完全用纯 Java 编写应用程序,Vaadin 会自动将其转换为 HTML、CSS 和 JavaScript。
您可以稍微调整一下 CSS。即使不接触 CSS,如果您希望覆盖默认值,Vaadin 的“主题”(Valo、Reindeer)也可以让您对颜色、大小和字体进行大量控制。但是要知道 Vaadin 在生成 HTML 和 CSS 方面处于“驾驶座”;你只是被允许进行少量“后座驾驶”的乘客。
如果您的目标不是开发桌面风格的应用程序,如果您想要完全控制 HTML/CSS,那么 Vaadin 可能不适合您。
更新
Vaadin 8 发布
2017 年 2 月 22 日,Vaadin 8 was released。最大的改进是利用现代 Java 特性重写了数据模型和数据绑定 API,例如具有类型参数和 lambda 表达式的泛型。此外,内存和 CPU 效率更高。
Vaadin 7 发布。
虽然架构与 Vaadin 6 大致相同,但 7 比以往任何时候都更好。见:What's New。