写点什么

SpringOne 2017 第二日:Juergen Hoeller 的演讲

  • 2017-12-12
  • 本文字数:2984 字

    阅读完需:约 10 分钟

SpringOne 开发者大会第二天的活动充满了惊喜,其中就包括 Spring 框架的领头人 Juergen Hoeller 和微软杰出工程师 Erich Gamma 博士(“四人帮”之一)的演讲。

2002 年,Hoeller 创建了 Spring,据说他是在圣诞节期间阅读了 Rod Johnson 的一本书而受到了启发。

Hoeller 的演讲充满了激情,提及了技术生态圈和整个社区的通力合作让 Spring 框架光芒四射,让各方利益相关者获益不浅。

以下是 Hoeller 的演讲摘选。

关于 Spring 在肩负行业责任方面所面临的挑战:

这么多年来,我很荣幸能够领导 Spring 框架的迭代开发。现在我们身处 2017 年,并向 2018 年迈进。我们再次面临同样的境遇,我们仍然面临很多挑战。Spring 框架从来都不只是个孤岛,它向生态系统敞开怀抱,拥抱变化,拥抱 JVM 生态系统的基础设施。

关于如何赶上 Java 每六个月发布一次的节奏:

在这一时刻,我们正经历着 Java 生态系统最有趣的变化。我们有了最新的 JDK 9,虽然它早在 9 月份就已发布。我们以后每半年就会拥有一个新的 JDK。我们真的需要去拥抱这种变化。我们过去习惯了三年才获得一个新版本 JDK,甚至是三年半,而现在时间缩短到了半年。不过新特性的发布频率并没有变,我们都是凡人,所以说这种节奏更快了。JDK 10 将在 2018 年 3 月发布,而 JDK 11 将在 2018 年 9 月发布。它们可能只是小的特性发布版本,但却使用了大版本进行发行,每一次发布都提升了字节码版本。它们更像是 9.2 版本,不过它们确实带来了新的语言特性。以 JDK 10 为例,它将会带来新的本地变量声明方式,往 JDK 核心库中增加新特性就有了不一样的模式,它总是能够在合适的时间推出新特性。每半年就会有一个新 JDK 版本发布,所以我们等待新特性发布的时间不会超过半年。不过事情总是有它的两面性。每次新版本发布都会带来新的字节码版本,相关的工具需要为此做好准备。这或许会是一个挑战,会给 Java 生态系统带来混乱。很多工具都是基于字节码版本实现的,比如 ASM、CGLib、ByteBuddy 等,它们原本不需要因新的 JDK 发布而做出什么修改,但现在它们只能被限定在特定的 JDK 版本上,每次新 JDK 发布它们也要做出修改。我们不得不改变我们的思维,我们不得不改变我们的基础设施,改变我们的字节码处理方式,以便适应 JDK 的版本变化。现在 JDK 10 正在开发当中,我们将拥抱它,我们还会有 JDK 11,我们安装好它,并用它运行我们的基础设施、已有的框架、已有的软件包,一切安好。我们只需要在思维方面做些改变。但要注意,并不是所有的 JDK 都有长期支持版本,我更关心的是长期支持版本。在生产环境,我们只会使用具有长期支持的 JDK 和 JVM,而根据当前计划,我们每三年才能获得一个长期支持版本。但也许这也会发生变化,变化无处不在,但从目前来看,JDK 9 并不是一个长期支持版本,JDK 10 也不是。JDK 11 有可能是,它将在明年的 9 月份发布。所以说,JDK 8 是目前的长期支持版本,下一个会是 JDK 11。这对于我们来说会是一个挑战,我们的 Spring 5 是基于 Java 8 版本开发的,这在 Java 生态系统里已经很常见了,很多软件包都是基于 Java 8 的。它们可以用在后续的 JDK 版本上,对于软件包、框架和生产环境来说,Java 8 是一个参考点,而使用新版本 JDK 会是锦上添花。

从 Spring 框架来看,我们已经准备好采用新的运行时环境。所以,Spring 5 应用程序在 JDK 9 上运行是没有问题的,它甚至都能在 JDK 10 上运行,当然也能够在 JDK 11 上运行。JDK 8 是最好的,JDK 9 也不错,等 JDK 10 和 JDK 11 正式发布后也可以使用它们。

关于技术合作:

除了 OpenJDK 以及其他创造性的改进,还有其他很多有意思的东西,我们也参与其中。我们与 JetBrains 的 Kotlin 小组保持着良好的关系,我们很高兴能够与他们合作。我们的合作是双赢的,Spring 5 的很多东西是受到了 Kotlin 的启发而开发的。不仅仅是基于 Kotlin 的应用,我们把很多来自 Kotlin 的设计点子融入到 Spring 5 当中,Kotlin 的很多语法可以被很好地映射到 Java 生态系统中。Kotlin 中有很多重要的模式,尽管 Spring 5 已经包含了很多内容,但 Kotlin 的这些模式仍然给我们带来很多启发,我们将会把它们应用到 Spring 5 当中。如果大家选择 Kotlin 来实现 Spring 应用,Spring 框架和 API 也已经为此做好了准备。我们在支持 Kotlin 方面已经走得很远。这是一种良性的关系,我们发现问题,他们来修复,我们可以达成我们想要的一切,这就是我们在技术合作方面最好的例子。

另一个合作领域是关于反应式流——Reactor 项目是基于响应式流的,是响应式流生态系统的一部分。我们与 RxJava 团队和 Lightbend 的响应式流团队也有着密切的合作关系。我们有共同的语言词汇表、技术术语、语义以及运行时契约。但事情太多了,我们努力达成最大程度的一致,让现有的 RxJava 能够适用于使用了 Reactor 的应用程序上。

最近发布了 EE4J,我们看到了 Java EE 的终结,而 EE4J 是 JCP 的新贵,在我们看来它就是 Java EE。Servlet 规范、JPA、Bean Validation 都捐献给了 Eclipse 基金会,处于 EE4J 的庇护之下。这是我们参与规范工作的最好时机。我们已经在 Servlet 规范上投入了很多,我们已经成为 JPA 专家组成员很长一段时间了,我们也集成 Bean Validation 好几年了。我们最近开始拥抱 JSON Binding API——谷歌 Gson 的替代品。我们正在参与好几个规范,只等 Eclipse 基金会这边开始流程。我们极有可能看到更多小版本的规范出现,可能是 JPA 2.3、Servlet 4.1,不一定要再等 4 年,有可能是明年或 2019 年,只要所有的利益相关者同意发布。如果 Tomcat 和 Jetty 同意 Servlet 4 需要做一些 API 重构,那么它们就会在 Servlet 4.1 中发布,这会在某个合适的时间发生。

我们参与了这么多的项目,很多实际的例子证实我们已经带来了很大的价值,而在 2018 年会有更大的价值得到体现。Kotlin 1.3 协程模型,我们将会在适当的时机拥抱它,或许是在 2018 年或 2019 年。

关于 Spring 核心框架的路线图:

从 Spring 框架角度来看,我们已经准备好开始新任务。Spring 5 已经包含了很多东西,新的函数式 API 设计、反应式架构、反应式 Web 技术栈、将 Kotlin 作为另一个首选的 JVM 语言。它们都很健壮,可以长期存在。我们的使命尚未结束,我们已经开启了新一代框架,我们正在迭代,从人们那里收集反馈——每一个利益相关者、Kotlin 团队成员、Reactor 团队成员。除了这些,在 2018 年,我们有两个主要迭代计划,都是在核心框架层面。我们计划在 2018 年 5 月或 6 月初推出 Spring 5.1。我们的 JIRA 待办目录中有很多东西需要做,如果大家想知道明年 Spring 框架会发生什么变化,可以参看 JIRA 的 5.x 目录。那里有差不多 200 个待办事项,如果大家关心其中某些项目,可以给它们投票,或者给出评论,表达你们的想法,我们会依此决定明年的优先级。如果有些东西无法在 5.1 中交付,我们会另找机会,随着新 JDK 的发布,或许可以放在下一年年底的 Spring 5.2 中发布。将依赖项更新到最新版,采用最新的 Kotlin,反应式流的新进展,反应式 JDBC 集成 API,这些东西都有可能包含在后续的 5.1、5.2 甚至是 2019 年的 5.3 版本当中。

我们野心勃勃,同时几个项目齐头并进,我们希望为大家带来更多东西,2018 年将是激动人心的一年,我个人非常期待我们将给大家带来的惊喜。

查看英文原文 SpringOne 2017 - Day 2 - Juergen Hoeller on Spring’s Mission

2017-12-12 18:006014
用户头像

发布了 322 篇内容, 共 139.3 次阅读, 收获喜欢 145 次。

关注

评论

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

第八章作业 - 用户路径

Au revoir

Wireshark数据包分析学习笔记Day20

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

数据结构之栈

我是程序员小贱

3月日更

分而治之——D&C

Kylin

3月日更 21天挑战 分而治之

[老孟Flutter] Stateful 组件的生命周期

老孟Flutter

flutter

第9周作业

Geek_72d5ab

第六次作业

Geek_79e983

Flutter 中与平台相关的生命周期

老孟Flutter

flutter

产品经理训练营--第9周作业

月亮 😝

JDBC—数据库事务处理

打工人!

Java MySQL 数据库事务 JDBC

【Axure9百例NO.46】中继器多条件判断的优雅处理

zhuchuanming

原型设计 Axure 交互原型

推荐几本 Go 相关书籍

roseduan

书籍推荐 Go Concurrency Patterns Go web 书籍 Go 语言

ProxmoxVE系列:VMware,是时候卸载了

Bob

vmware 虚拟化 服务器开发 proxmoxve PVE

第八章—数据分析作业

墨狂之逸才

翻译:《实用的Python编程》07_04_Function_decorators

codists

Python PEP

《Redis 核心技术与实战》学习笔记 08:GEO数据类型和时间序列数据

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

第八章作业

流浪猫

产品经理训练营 - 第八章作业

joelhy

产品经理训练营

产品经理面试常见问题总结 3

lenka

3月日更

“英特尔‘IDM2.0’的疯狂”

E科讯

图论--网络流最大流问题

风骨散人

如何提高Flutter应用程序的性能

老孟Flutter

flutter

MySQL - 事务

insight

3月日更

如何判断自己是否适合当前公司?

石云升

离职 28天写作 职场经验 3月日更

C++后台开发必看,这个学习路线必须收藏

赖猫

c++ Linux 后台开发 服务器开发

ARTS——week 3

steve_lee

软件工程是否可以指导小团队的建设

风翱

软件工程 3月日更

文档是给未来自己的珍贵礼物

steve_lee

文档

第九周作业

产品经理训练营

Python SMTP 发送邮件方法

HoneyMoose

Spring-Retry重试实现原理,有点东西哈

Java小咖秀

Java spring 源码 原理 开发

SpringOne 2017第二日:Juergen Hoeller的演讲_Java_Victor Grazi_InfoQ精选文章