腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

新的 Vaadin Spring 发布,增强了视图管理功能

  • 2017-01-09
  • 本文字数:2643 字

    阅读完需:约 9 分钟

Vaadin 是一个使用 UI 组件来构建 Web 应用的多语言框架,最近发布了 Vaadin Spring 项目的 1.1 版本

在 Vaadin 的Navigator类和View接口方面,有两个新的特性:

  • 新的SpringNavigator
  • 新的@SpringViewDisplay注解

SpringNavigator类极大地“简化了视图的配置”,@SpringViewDisplay注解能够用来“标记目标 Vaadin 组件,指定了我们的视图要实际展现的地方。”

另外,还有一些缺陷修正,包括使用Vaadin Spring 来序列化HTTP session。

如下的代码片段展示了如何使用 SpringNavigator类和@SpringViewDisplay注解:

复制代码
// MainUI.java
@SpringUI
@Theme("valo")
public class MainUI extends UI {
MainViewDisplay mainContent;
public MainUI(MainViewDisplay mainContent,SpringNavigator navigator) {
this.mainContent = mainContent;
navigator.setErrorView(ErrorView.class);
}
/// 其他的支撑代码...
}
复制代码
// MainViewDisplay.java
@SpringViewDisplay
public class MainViewDisplay extends Panel implements ViewDisplay {
public MainViewDisplay() {
setStyleName(ValoTheme.PANEL_BORDERLESS);
}
@Override
public void showView(View view) {
// 假设视图是组件,通常都会这样
setContent((Component)view);
}
}

在 GitHub 上的完整项目包含了上述 Java 文件源码的变更集合,阐述了用来实现导航和视图管理功能的更简洁的代码。

InfoQ 与 Matti Tahvonen 进行了交流,他是 Vaadin 的产品市场主管,讨论了这次版本相关的情况。

InfoQ:你目前在 Vaadin 的职责是什么呢?

Tahvonen:我的官方职位是 Vaadin 框架和相关 OS 库(如 Vaadin Spring)的产品市场主管,但是我的工作更像是针对开发者的宣传人员。我撰写版本发布博客、编写使用 Vaadin 与其他有趣 Java 技术进行集成的样例项目、发布技术文章、主办 webinar、参加会议(参与演讲和作为展台工作人员)、帮助新用户和客户进行 Vaadin 开发并帮助我们的工程师以及其他人员进行技术营销工作。我对 OSS 非常有热情,非常荣幸我能够从事 OS 相关的工作,而我的同事会负责 Vaadin 相关的商业扩展。

InfoQ:和其他的 Java Web 框架相比,Vaadin 的与众不同之处是什么呢?

Tahvonen: Vaadin 对 Web 技术有着最强的抽象。使用 Vaadin 框架编写应用并不需要我们接触一行 JS、HTML 或 CSS 代码(如果你想这样做的话,也是可以的),我们也不需要理解浏览器的技巧或各种形式的 HTTP 通信技术(如基本 HTTP、表单提交、AJAX、服务端推送、WebSocket 等)。如果你想编写自定义扩展的话,才需要接触底层的 Web 编程技术,我们有很活跃的社区和上百个 add-on ,所以这种场景是很少见的。在最常见的情况下,我们只需使用简单的 Java 和基于组件的编程模型,这样能让开发更简单和高效。具有桌面 UI(Swing、SWT、JavaFX)经验的开发人员或后端开发人员对于 Vaadin 会感到特别兴奋,不过也有 PHP 背景的人对 Vaadin 非常感兴趣。

InfoQ:你对 Vaadin 和 UI 的看法是怎样的,它们该如何适应微服务模式呢?

Tahvonen:最近这段时间以来,这是一个非常常见的问题。Vaadin 对微服务适配得非常好,一般而言,应用中始终会有 UI,至少会存在某种形式的 UI。在 UI 方面,会有多种策略,最佳方案要取决于你的需求。如果你的服务中具有 UI,或者使用 Vaadin + (REST)服务来构建管理端 UI,让这些服务供其他的应用消费,那么 Vaadin 非常适用于这种场景。另外,Java 也是消费 REST 服务的理想工具(没有同源的限制),在创建 mash-up 应用的时候,会消费多个微服务的数据,所以在这种情况下,Vaadin 也能运行良好。

最近,很多用户都提出了这个问题,我们决定针对这个话题编写一些内容和样例。我和我的同事 Alejandro 已经编写了第一篇文章。后续还有很多内容和样例要发布。

InfoQ:关于 Vaadin 和 / 或 Vaadin Spring,你们目前的规划是什么呢?

Tahvonen:毫无疑问,Vaadin 8 是接下来最重要的事情。在 Vaadin 中,当前的一些 API 起源非常早,那个时候还没有 lambdas 表达式,这些 API 甚至要早于泛型或 JDK 中特有的集合框架。Vaadin 8 将会是一个巨大的进步,会让代码更加类型安全、易于编写,在 CPU 和内存使用方面会更加高效。对于 Vaadin Spring 来说,也会有更新的版本。

因为我们非常重视向后兼容性(大多数的 Vaadin 应用会长期维护),我们准备了一个兼容包,借助它能够非常容易地进行升级,你可以渐进式采用新的 API。同时,Vaadin 7 版本将会继续支持,因为我们的一些客户还不能迁移到 Java 8 上,有些甚至还要支持 IE 8。

我们目前处于 beta 阶段,第一个 beta 版本在圣诞节假期前已经发布:

https://vaadin.com/blog/-/blogs/vaadin-8-beta-is-out-we-need-your-help-

至于 Vaadin Spring,我们计划为 Spring Security 提供一些辅助功能。大多数的 Vaadin Spring 用户都会同时使用 Spring Security,通过一些更深入的集成,我们相信能够让客户的起步更简单一些。

InfoQ:与原生的 JavaScript 框架相比,例如 AngularJS 或 ReactJS,它的性能 / 响应性如何呢?

Tahvonen:在着手评估 Vaadin 的时候,很多开发人员都会担心这个问题。我建议他们亲自尝试一下。如果 session 存储在服务器的内存中(通常如此),服务器的基本访问是很快的,除非服务器的位置在地球的另一端。我们可以看一下如今的 Google 搜索,每当键盘按下的时候,它都会访问服务器,但它依然非常流畅。

在与亚马逊的专家一起构建的一个样例中,我们使用了他们的地理负载均衡功能,成功玩了一个基于 Vaadin 的俄罗斯方块游戏,它运行在一个位于悉尼的 EC2 微实例上(我位于芬兰)。此时,它已经不是那么流畅了(相对于部署在同一个大洲的服务器来说),但是对于正常的业务应用来说,它能够运行地非常好。通过启用 WebSocket,我们持续地开启通信通道(在 Vaadin 中,需要添加一项依赖并且要在UI类上添加@Push注解),这样能够进一步减少延迟。

除了服务器往返(roundtrip)所造成的延迟,人们还应关注浏览器渲染所造成的延迟,以及执行实际的业务逻辑或数据库查询所造成的延迟,这一点与使用 Angular 和 React 是相同的。不管是 Vaadin 还是客户端的 UI 框架,我都建议为长时间运行的查询展示一些进度指示器或对话框,不要让 UI 看起来像停滞了一样。

Tahvonen 和 Stéphane Nicoll 最近录制了一个 webinar ,展现了如何使用 Vaadin 和 Spring 来构建 Java Web 应用。

查看英文原文: New Vaadin Spring Release Introduces Enhanced View Management

2017-01-09 18:006001

评论

发布
暂无评论
发现更多内容

Java开发从零开始,java基础入门传智播客网页版,Java后端路线图

Java 程序员 后端

Java开发从零开始,牛客网java选择题库,程序员Javaweb源码

Java 程序员 后端

Java开发你需要了解的那些事,Java线程池基础入门和简单实践以及使用技巧

Java 程序员 后端

Java开发实战讲解,牛客网面试经验,Java高级知识图谱

Java 程序员 后端

模块一作业

忘记喝水的猫

架构训练营

Java开发教程,极客时间架构师训练营,面试流程4轮技术面+1轮HR

Java 程序员 后端

Java开发实战讲解,牛客网面试经验,Java编程入门教材

Java 程序员 后端

Java开发者跳槽面试,尚硅谷java课程,netty框架面试题

Java 程序员 后端

Java开发岗还不会这些问题,想拿高工资

Java 程序员 后端

Java开发究竟该如何学习,年末阿里百度等大厂技术面试题汇总,程序员翻身之路

Java 程序员 后端

Java开发经验谈,linux视频教程百度网盘,逆袭面经分享

Java 程序员 后端

Java开发者应该会哪些东西才不会被公司淘汰,美团Java面试

Java 程序员 后端

Java开发自学教程!尚学堂java,我被面试官绝地反杀了

Java 程序员 后端

Java开发工程师笔试题目,图灵学院vip百度云盘,阿里P8大牛手把手教你

Java 程序员 后端

第1周作业

波波

「架构实战营」

Java开发面试基础,java架构师全套百度网盘,Java基础面试重点

Java 程序员 后端

Java开发人员不得不收集的代码,精选Java面试真题集锦

Java 程序员 后端

Java开发最佳实践手册全网独一份,vue视频教程百度网盘,正式加入字节跳动

Java 程序员 后端

Java开发经验的有效总结,以商品超卖为例讲解Redis分布式锁

Java 程序员 后端

Java开发自学技巧!极客学院百度云资源,2021最新Java笔试题目

Java 程序员 后端

Java开发视频教程,linux使用教程,BIO和NIO有啥区别

Java 程序员 后端

Java开发还会吃香吗,Java微服务架构从入门到精通

Java 程序员 后端

Java开发面经分享,springboot项目案例百度云,实战篇

Java 程序员 后端

Java开发人员不得不收集的代码,史上最全的微服务专业术语面试50问

Java 程序员 后端

Java开发入门与实战!极客学院和黑马程序员,Java高级工程师系列学习路线介绍

Java 程序员 后端

Java开发前景怎么样,java全套教程百度云,linux基础入门教程

Java 程序员 后端

Java开发核心知识笔记共2100页,如何保证Redis与数据库的双写一致性

Java 程序员 后端

Java开发经典实战!自学java教程百度云盘,阿里程序员的Java之路

Java 程序员 后端

Java开发还不会这些,极客学院和黑马,进阶学习工作最全指南

Java 程序员 后端

Java开发者跳槽指,牛客网算法初级班,春招我借这份PDF的复习思路

Java 程序员 后端

云栖收官:想跟远道而来的朋友们说

阿里巴巴云原生

云原生 云栖大会 收官 致谢

新的Vaadin Spring发布,增强了视图管理功能_Java_Michael Redlich_InfoQ精选文章