Java平台组首席架构师谈Java的发展和迭代

2017 年 10 月 12 日 细说云计算 张卫滨
译者|张卫滨
编辑|Cherry

9 月 21 日 Oracle 发布了 Java 9.0 版本,同时 Oracle 宣布在 9.0 之后,会将 Java 的发布周期调整为每半年一次版本。

针对这种变化,Java 平台组首席架构师 Mark Reinhold 在其个人博客中阐述了他的观点。

在过去的二十年间,Java SE 平台和 JDK 经历了很大的变化,其中每个演变步骤都变更很大、不规则并且在一定程度上来讲很难预测。历史上,每个特性释放版本都是由一个或多个重要特性驱动的,所以为了适应这些特性的研发进度,发布日程也会按需进行调整,有时候甚至不止调整一次。

这样做的好处就是能够以非常高的质量交付大型的新特性,在这个过程中会经过早期采用者的全面审查和测试。但是,它所带来的不足就是小型的 API、语言和平台的变更无法单独发布,只能等到大特性就绪之后才能交付。

在过去的二十年中,这种发布节奏还是可以的,因为当时与 Java 竞争的只有几个平台,基本都是采用类似的发布节奏。但是,现在 Java 要与很多的平台竞争,这些平台的演化节奏更快。Java 为了保持竞争力,必须要不断前进,而且要前进地更快。

“列车”模式的版本发布  

五年前,Mark Reinhold 就曾经讨论过开发人员与企业之间不同的诉求,开发人员希望更快的革新,而企业更关注稳定性,但是每个人都希望规律且可预测的发布周期。

为了解决这个问题,当时 Reinhold 提出了将特性驱动的发布模式改为时间驱动的“列车”模式。在这种模式下,开发进程是一个持续的革新过程,它与实际的发布进程是松耦合的。不管特性大小,只有在接近完成的时候才合并进来。如果某个特性非常遗憾地错过了当前的这趟“列车”,那么这也不是世界末日,因为下一趟“列车”已经在等待中并且会按照时间表发车。

两年为间隔的“列车”模式在理论上很吸引人,但是事实证明在实践中行不通。Java 8 为了解决关键的安全问题和完成 Lambda 项目多耗费了八个月的时间,但是这要比让 Lambda 项目再等两年更好一些。为了包含 Jigsaw 项目,Java 9 最初的发布周期是两年半,虽然超出了半年,但是这要比让 Jigsaw 项目多等 18 个月更好,不过最终 Java 9 多耗费了一年的时间,也就是会在本月发布,这样从 Java 8 发布到现在经历了三年半的时间。

Reinhold 认为,现在来看两年的发布周期太长了,交付特性的节奏应该更快一些。将某项特性推迟到下个版本发布,不应该是有重大影响的战略决策,而应该是影响不太大的战术性决策。因此,Reinhold 认为六个月是一个合适的发布周期。它比以前更快,会减少等待下一趟“列车”的痛苦,同时也有足够的时间保证每次发布的质量。

相关提议  

根据其他平台和各种操作系统版本的发布模式,Reinhold 建议在 Java 9 之后,采用一种更严格基于时间模式,每六个月发布一个新特性释放版本,每季度发布一个更新释放版本,每三年发布一个长期支持的发布版本。

特性发布版本可以包含任何类型的特性,不仅包括新的以及增强的 API,还包含语言和 JVM 的特性。特性只有在接近完成的时候,才会合并进来,所以当前要释放的版本始终都是特性已完成的状态。特性发布版本会在每年的三月和九月交付,从 2018 年的三月开始。更新释放版本会被严格限制,只能解决安全问题、回归测试中的问题和 bug。每个特性发布版本都会有两个更新版本,更新版本会按照季度发布,在每年的一月、四月、七月和十月交付。从 2018 年的九月开始,特性发布版本同时也会是一个长期支持版本。对这些发布版本,至少会支持三年,甚至更长时间。每半年交付一次的发布版本会比多年才交付一次的版本体量更小,更易于采用,同时为旧释放版本打补丁也会更容易。

开发人员更喜欢快节奏的创新,那么他们可以使用最新的特性发布版本或特性更新版本,这样就能尽快在生产环境使用新特性。他们可以通过 Docker 镜像或其他类型的容器包交付应用,容器中会同时包含应用所要使用的 Java 发布版本。

企业会更加关注稳定性,那么可以让多个大型的应用使用相同的 Java 版本,他们可以使用长期支持的发布版。像常规工作一样,他们可以每三年规划一次长期维护版本的升级。

为了明确特定版本的发布时间,特性发布版的版本号格式为 $YEAR.$MONTH,因此明年三月份的发布版将会是 18.3,九月份的长期维护版将会是 18.9。

Reinhold 认为,如果采用这种模式的话,将会影响到 OpenJDK 社区的贡献者。这项提议会最终影响每个依赖 Java 的开发者、用户和企业。但是,如果成功的话,将会在未来的很多年内保持 Java 的竞争力,同时能维持它的核心价值,也就是兼容性、可靠性以及稳健的特性演化。


正值  AI 的风口,你是否蠢蠢欲动?斯达克学院(StuQ)为你准备了“ AI 专题”系列课!注册 StuQ 新官网即可获得免费 AI 专题公开课学习名额,AI 人气精品课更是直降 5000 元,全年最低价!重磅新课超值预售,买 100 元券抵 200 元,买 200 元券抵 500 元!优惠多多,快来参与吧!点【阅读原文】极速抢课~

细说云计算  

「细说云计算」是 InfoQ 旗下关注云计算技术的垂直社群,投稿请发邮件到 editors@cn.infoq.com,注明“细说云计算投稿”即可。

登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
最新《可解释深度学习XDL》2020研究进展综述大全,54页pdf
专知会员服务
124+阅读 · 2020年3月26日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
前端微服务在字节跳动的落地之路
前端之巅
41+阅读 · 2019年9月19日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
Java 工程师快速入门深度学习,可以从 Deeplearning4j 开始
人工智能头条
13+阅读 · 2018年12月14日
136 个Python 机器学习知识点让你受益终生!
ImportNew
3+阅读 · 2018年11月27日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
Anomalous Instance Detection in Deep Learning: A Survey
Arxiv
24+阅读 · 2020年3月11日
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Transfer Adaptation Learning: A Decade Survey
Arxiv
37+阅读 · 2019年3月12日
Arxiv
6+阅读 · 2018年2月7日
VIP会员
相关VIP内容
相关资讯
前端微服务在字节跳动的落地之路
前端之巅
41+阅读 · 2019年9月19日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
Java 工程师快速入门深度学习,可以从 Deeplearning4j 开始
人工智能头条
13+阅读 · 2018年12月14日
136 个Python 机器学习知识点让你受益终生!
ImportNew
3+阅读 · 2018年11月27日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
相关论文
Top
微信扫码咨询专知VIP会员