Vaadin
Vaadin 是一个非常好的工具,用于构建用纯 Java 开发并通过常规 Web 浏览器交付的交互式桌面式 Web 应用程序。
Benefits
Vaadin http://www.vaadin.com/6、7 和 8 应用程序完全在服务器端运行。 Vaadin 自动将 JavaScript 库安装到用户的浏览器窗口中:
- 在屏幕上绘制服务器端应用程序指示的任何内容。
- 将用户操作(单击、键入等)反馈到服务器以供应用程序考虑和响应。
因此,不存在“客户端逻辑验证”或“html5 验证”,至少从 Vaadin 应用程序开发人员的角度来看是这样。 Vaadin 框架可能会在其内部实现中秘密执行此操作,但这不是我作为 Vaadin 应用程序开发人员所关心的。这是 Vaadin 的核心优势:我不关心 Vaadin 如何将我的表单显示到用户的屏幕上。作为 Vaadin 应用程序开发人员,我不会编写任何 JavaScript、HTML、DOM、CSS 或 AJAX。只是纯Java。
风格类似于Swing http://en.wikipedia.org/wiki/Swing_%28Java%29: 实例化一个layout https://vaadin.com/book/-/page/layout.html(一个表格),添加labels https://vaadin.com/book/-/page/components.label.html, add buttons https://vaadin.com/book/-/page/components.button.html, add fields https://vaadin.com/book/-/page/components.textfield.html, add 其他小部件 https://vaadin.com/demo。附验证者 https://vaadin.com/book/-/page/components.form.html#components.form.validation如所须。嵌套额外的布局,以适应复杂的形式。所有这些都在服务器端的内存中执行,全部用纯 Java 编写。最后让布局显示出来。噗,就像魔术一样,瓦丁告诉浏览器显示该形式的相似之处。
如果您想开发通过 Web 浏览器部署的桌面式商务应用程序,Vaadin 是一个很棒的工具。
权衡
权衡包括:
- 服务器端大量内存和 CPU 使用率。
- 放弃对 HTML/CSS/JavaScript 的控制。
Scaling
您的网络应用程序位于服务器上,而不是客户端上。所有的业务逻辑、用户输入的数据、所有用户表单的内部表示(例如表中的行项目),所有这些都位于服务器上。将其乘以用户数量。这意味着 Vaadin 应用程序可能需要大量内存和 CPU 使用量。
这可能会限制扩大规模。但考虑到 64 位 Java、多 GB 内存和多个内核,即使是最低级的机器(例如麦克迷你, http://www.apple.com/macmini/server/扩展可能只是最大/最繁忙的应用程序的问题。
即使在那些罕见的大型/繁忙应用程序中,也可能有方法来处理 Vaadin 中的扩展。所有应用程序都位于 Servlet 会话中。某些 Web 基础设施允许此类会话状态在服务器之间移动,甚至保存到存储中以供其他服务器获取。
或者您的应用程序可以很好地扩展。已完成 11,000 个并发客户端的模拟。看:
-
Vaadin 可扩展性研究 - QuickTickets https://vaadin.com/blog/-/blogs/vaadin-scalability-study-quicktickets(公司博客文章)
-
使用 Vaadin 和 WildFly 进行扩展网络研讨会 https://youtu.be/kCOd9l4WGNY与 Arun Gupta(视频演示,YouTube)
控制 HTML、CSS、JavaScript
如果您的团队对传统的 Web 应用程序架构更熟悉或更有经验,那么 Vaadin 可能不适合您。在 Vaadin 中,您完全用纯 Java 编写应用程序,Vaadin 会自动将其转换为 HTML、CSS 和 JavaScript。
你可以稍微调整一下CSS。即使不接触 CSS,Vaadin 的“主题”(Valo https://vaadin.com/valo, Reindeer http://demo.vaadin.com/ReindeerTheme)如果您希望覆盖默认值,您可以对颜色、大小和字体进行更多控制。但要知道,Vaadin 在生成 HTML 和 CSS 方面处于“主导地位”;你只是被允许进行一点“后座驾驶”的乘客。
如果您的目标不是开发桌面式应用程序,如果您want要完全控制 HTML/CSS,那么 Vaadin 可能不适合您。
Updates
Vaadin 8 发布
2017 年 2 月 22 日,Vaadin 8 发布 http://www.prnewswire.com/news-releases/vaadin-releases-vaadin-framework-8-300412081.html。最大的增强是利用现代 Java 功能(例如带有类型参数和 lambda 表达式的泛型)重写数据模型和数据绑定 API。此外,内存和 CPU 的效率更高。
Vaadin 7 发布。
虽然架构与 Vaadin 6 基本相同,但 Vaadin 7 比以往任何时候都更好。看:什么是新的 https://vaadin.com/vaadin7.