内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

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

2017-01-10 09:53 出处:清屏网 人气: 评论(0

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应用。

分享给小伙伴们:
本文标签: Spring

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号