写点什么

Java 将每半年发布一个版本

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

    阅读完需:约 4 分钟

Oracle 近日宣布,他们将 Java 的发布频率改为每六个月一次。

JCP 执行委员会在八月份的会议上提到了这一说法,随后,Oracle 发言人Donald Smith 在他的博客中确认了这一消息。该决定将在Java 9 正式发布之后开始实行,也就是说,Java 的下一个发布日期是2018 年初。

除了发布周期,Oracle 还宣布了在Java 的构建和发布方式方面所发生的主要变化。Oracle 将把OpenJDK 的二进制包作为面向开发者的主要版本,取代之前的Oracle JDK。

OpenJDK 将采用 GPLv2 许可(包括“类路径例外”)免费发行,移除了之前在 Oracle JDK 上存在的一些限制。Oracle JDK 仍然会继续存在,但需要与 Oracle 签订协议才能获得 Oracle 提供的长期支持。

Java 首席架构师 Mark Reinhold 说,为了避免出现像Java 8 和Java 9 那样的延期情况,所有决定实行新的发布周期。

Java 当前的发布周期为两年一次,Java 9 因为模块化系统(Jigsaw)问题一再延期,已经比预期晚了 18 个月。之前,Java 8 也因为安全问题延期了 8 个月左右。Java 9 的 GA 版本将在 9 月 21 号发布。

新的发布周期严格遵循时间点,将在每年的 3 月份和 9 月份发布,相应的版本号为 18.3、18.9、19.3 等。与现在的发布周期不同,新的发布计划不会为了等待某个主要特性完成而延期。如果一个特性还没有完成,它就不会被合并到发布用的代码仓库里。如果错过了一个版本,就要等待下一次发布。

新的发布周期旨在避免未完成的里程碑特性(比如 Java 8 的 Lambda 或 Java 9 的模块化系统)造成发布延期,让其他一些有用的特性也无法与开发者见面。

除了新的发布周期,Oracle 将会继续每个季度发布更新版本,时间分别为 1 月份、4 月份、7 月份和 10 月份。也就是说,在下一个大版本发布之前,当前版本都会有两个更新版本。更新版本只包含安全问题修复或回归错误的修复。

Reinhold 说:

开发者希望加快速度,这样他们就能够尽快地在生产环境中使用新的特性。

对于没有必要快速升级 Java 版本的企业和组织来说,Oracle 建议他们签订每三年一次的长期支持(Long Term Support,LTS)协议。他们因此可以获得由 Oracle 提供的至少三年的支持,还有可能更长时间,这要取决于市场的反应。

Oracle 建议第一个 LTS 版本为“18.9”,不过这需要与其他的 OpenJDK 贡献者讨论过后才能最终确定。Java 8 被作为一个特别的 LTS 版本,支持日期截止到 2025 年。

Smith 说:

OpenJDK 是开发者了解和使用 Java SE 平台最主要的渠道,而 Oracle JDK 继续作为 Oracle 收费用户的 LTS 版本。

伦敦 Java 社区的负责人 Martijn Verburg 也发表了他对新发布周期的看法:

新的 Java 发布周期对于 Java 生态系统来说是一件好事情。Java 9 的 Jigsaw 和孵化模块问题促成了这一局面的发生。

Oracle 确实面临着发布方面的巨大挑战,不过 OpenJDK 社区拥有足够的知识来帮助一起解决挑战。

我希望看到中间会有所突破,不过对常规的发布周期仍然很期待。其他实现者可以更早地访问到规范的草案,这样他们就可以更早、更经常地发布版本。

Oracle 的 Java 发布速度经常受到诟病,Java 被广大的企业组织所采用,并已成为大量开源平台和语言的基础,而这样的发布速度让 Java 处于很尴尬的境地。新的 Java 发布周期恰好满足了广大用户的期望,不过这仍然需要等待 Java 开发者和 Oracle 用户的反馈。

查看英文原文: Java to Move to 6-Monthly Release Cadence

2017-09-10 19:0015092
用户头像

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

关注

评论

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

Jenkins 通过检查代码提交自动触发编译

HoneyMoose

DOM核心——Element类型

大熊G

JavaScript 前端 6月月更

课程背景

IT蜗壳-Tango

6月月更

敲了几万行源码后,我给Mybatis画了张“全地图”

小傅哥

源码分析 面试 小傅哥 mybatis 大厂面试

DOM

Jason199

DOM js 6月月更

dart使用技巧集合【01】

坚果

6月月更

在线多行文本行转列工具

入门小站

工具

我理解的微服务 -- 读《微服务设计模式》总结

潜水员

golang 微服务

uni-app进阶之生命周期【day8】

恒山其若陋兮

6月月更

【Python技能树共建】字符编码与解码

梦想橡皮擦

Python 6月月更

【作业四 千万级学生管理系统的考试试卷存储方案】

wuli洋

《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)

懒时小窝

TCP 网络编程 IP

GetX 响应式状态管理简介

岛上码农

flutter ios 安卓 跨平台应用 6月月更

echo命令实用技巧

Nick

Docker 镜像源 echo 6月月更 tldr

redis内存优化

乌龟哥哥

6月月更

面试突击58:truncate、delete和drop的6大区别

王磊

Java java常见面试题 常见面试题

JVM调优简要思想及简单案例-JVM分代模型

zarmnosaj

6月月更

在线JSON转TSV工具

入门小站

工具

初创公司,如何拥有企业级Java脚手架

昵称不能为null

Java脚手架 企业级代码架构

远程办公三部曲 - 如何提高工作效率| 社区征文

耳东@Erdong

工作效率 远程办公 6月月更 初夏征文

scanf的使用,cin和scanf的区别

工程师日月

6月月更

解决k8s调度不均衡问题

劼哥stone

Kubernetes 云原生 调度 调度不均衡 kube-scheduler

【Spring 学习笔记(十四)】Spring AOP 通知中获取数据

倔强的牛角

Java spring 6月月更

Linux开发_采用线程处理网络请求

DS小龙哥

6月月更

wapper解析

卢卡多多

6月月更

架构实战营模块4作业

挖了蘑菇哩斯

架构实战营 存储方案

ImportSelector与DeferredImportSelector的区别(spring4)

程序员欣宸

Java spring SpringFramework 6月月更

linux几个不常用但是很有用的命令

入门小站

Linux

618战报销冠谜底:“收割机”联想屠榜背后的三大利器是什么?

脑极体

千万级学生管理系统试卷存储方案(架构实战营 模块四作业)

Gor

Python 设计模式:原型模式

宇宙之一粟

设计模式 原型模式 6月月更

Java将每半年发布一个版本_Java_Ben Evans_InfoQ精选文章