11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2017-10-09
  • 本文字数:1890 字

    阅读完需:约 6 分钟

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 的竞争力,同时能维持它的核心价值,也就是兼容性、可靠性以及稳健的特性演化。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-10-09 17:484329

评论

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

selenium操作元素遇到的异常

红毛丹

selenium

如何避免在面试中看走眼

Hockor

个人成长 面试经验

python 编辑器提示 do not use bare except

AlwaysBeta

Python vscode 编辑器 pycharm Python PEP

如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

蒋川

Vue PDF pdf阅读器

springsecurity默认用户生成

周杰伦本人

React Draggable 实现拖拽 - 最详细中文教程 - 卡拉云

蒋川

React

假如让你来设计SSL/TLS协议,你要怎么设计呢?

华为云开发者联盟

网络安全 HTTP 通信 SSL/TLS 协议 网络通信安全

Tech Talk 活动预告 | 为什么说 Serverless 是应用开发的未来?

亚马逊云科技 (Amazon Web Services)

Serverless

CompusAss校园社团小程序解决方案

CC同学

安全代码审计-PHP

网络安全学海

网络安全 信息安全 渗透测试 漏洞 代码审计

免费硬件、专属导师、豪华大礼|AI达人创造营第二期项目征集启动啦!

百度大脑

业内首家!百度智能云智慧金融业务通过ISO37301合规管理体系认证

百度大脑

appsmith 怎么用?评价如何

蒋川

appsmith

惨,给Go提的代码被批麻了

捉虫大师

Go 开源 Code Review

Dubbo服务如何优雅的校验参数

vivo互联网技术

dubbo 服务器 java;

高精度轻量级目标检测产业应用,实现多类通信塔识别

百度大脑

社区人物志|缪翎:见证开源世界的女性力量

ApacheDoris

大数据 开源 数据分析 OLAP apache doris

java高级用法之:无所不能的java,本地方法调用实况

程序那些事

Java Netty 程序那些事 3月月更

12 款最棒 Vue 开源 UI 库测评 - 特别针对国内使用场景推荐

蒋川

Vue vue admin

Android TabLayout 选中 tab 文字加粗显示

逆锋起笔

android 3月月更 TabLayout android滑动标签

Hoo虎符研究院|区块链简报20220307期

区块链前沿News

Hoo 虎符交易所 虎符研究院

关于中国芯片,这些话如鲠在喉

脑极体

「架构实战营」模块四作业 考试试卷存储方案

hxb

「架构实战营」

微服务工程中,基础组件应用

知了一笑

架构 分布式 微服务

《大饼卷一切》爆笑相声剧 今晚开票!

InfoQ 天津

小程序的第六年,我们还能怎么玩?

知晓云

小程序 微信 小程序生态 小程序运营

我的碎碎念:Docker入门指南

hongfei

Docker 容器技术

AI人脸识别测温一体机设计

DS小龙哥

3月月更

大画 Spark :: 网络(5)-Spark中的server端和client端

dclar

大数据 hadoop spark Spark 源码 大数据开发

PingCode 全新子产品 Insight 开放内测

PingCode

Flutter 容器盒子布局模型

岛上码农

flutter ios 安卓 移动端开发 3月月更

Java平台组首席架构师谈Java的发展和迭代_Java_张卫滨_InfoQ精选文章