官方文档链接:https://www.jenkins.io/blog/2022/06/28/require-java-11/。
介绍
Jenkins 项目致力于为最终用户和开发人员提供世界级的平台体验。这种体验的核心是Java,它是一种面向对象的编程语言,具有Java 虚拟机 (JVM)形式的跨平台运行时。自成立以来,Jenkins 项目一直是 Java 的主要消费者,向超过 300,000 个控制器的安装基础分发了 1,800 多个插件,并且 Jenkins 经常出现在有史以来顶级 Java 应用程序的列表中。
从 Jenkins 2.357(2022 年 6 月 28 日发布)和即将发布的 9 月 LTS 版本开始,Jenkins 需要 Java 11。 此外,从 Jenkins 2.355(2022 年 6 月 14 日发布)和 Jenkins 2.346.1 LTS(6 月 22 日发布, 2022),Jenkins 支持 Java 17。插件已经在JENKINS-68446中准备好了。 使用插件管理器在升级到 Jenkins 2.357之前和之后升级所有插件。
长期使用 Jenkins 的用户和 Java 开发人员可能会回忆起之前迁移到 Java 7 和 Java 8 的过程。虽然这些迁移并非微不足道,但与迁移到 Java 9 及更高版本的规模相比,它们显得苍白无力。Java 9 代表了Java 生态系统在许多方面发生的巨大变化。不仅许可政策、版本控制方案、发布节奏和长期支持 (LTS) 周期发生了变化,而且语言和运行时也发生了许多重大的技术变化(例如,Project Jigsaw),并非所有这些都保留了以前版本所具有的高度兼容性。尽管从长远来看,这些演进性变化可能符合 Java 社区的最大利益,但社区仍有责任了解其影响并做出相应的计划。
数据
上述数据表明,每个主要 Java 版本的生命周期显然是一个高斯函数。Java 的每个主要版本都由供应商发布,开始一个快速增长的采用阶段,达到使用高峰,失去 Jenkins 项目的支持,开始使用量下降,使用量下降到终端状态,最后到达供应商端生命周期 (EOL),大致按此顺序。
Java 6 Java 7 Java 8 Java 11 发布日期 2006 年 12 月 11 日 2011 年 7 月 7 日 2014 年 3 月 18 日 2018 年 9 月 25 日 快速使用量 2009 年 10 月(11,193 次安装) 2013 年 2 月(10,997 次安装) 2015 年 2 月(12,210 次安装) 2019 年 11 月(10,094 次安装) 峰值使用量 2013 年 3 月(47,244 次安装) 2015 年 6 月(68,681 次安装) 2021 年 2 月(261,468 次安装) 不适用 Jenkins 要求下一个主版本 2015 年 5 月(21,798 次安装) 2017 年 4 月(40,569 次安装) 2022 年 6 月(185,286 次安装) 不适用 终端使用量下降 2016 年 5 月(10,283 次安装) 2019 年 3 月(10,123 次安装) 不适用 不适用 生命周期结束 (EOL) 2015 年 12 月 31 日 2019 年 7 月 31 日 至少 2026 年 11 月 至少 2024 年 10 月进一步推断,可以观察到以下趋势:
- Jenkins 用户至少需要一年时间才能开始采用 Java 的新版本。
- 一旦 Jenkins 用户开始采用新版本的 Java,之前 Java 版本的使用量最终会达到峰值并开始下降。
- Jenkins 项目历来开始需要新的 Java 版本,大约在前一个 Java 版本衰退期的一半。
- 一旦 Jenkins 需要一个给定的 Java 版本,之前的 Java 版本的使用量就会继续下降,直到达到下降的最终阶段。
- 上述下降的最终阶段通常与 Java 供应商的积极支持结束有关。
结论
至关重要的是,在前一个版本的使用量明显下降之前,Jenkins 项目从未需要给定版本的 Java。这通过确保大多数用户在生产中成功运行新版本来降低风险。相反,对 Jenkins 用户的新 Java 版本的要求会激励其余用户进行升级,并防止不愿升级的用户继续依赖即将达到供应商生命周期终止 (EOL) 的版本,从而使项目面临风险)。
Java 11 的要求与历史先例一致。Java 8 的使用在 2021 年 2 月达到顶峰,此后一直在下降。同时,自 2019 年 11 月以来,Java 11 的采用率一直在迅速增加,但尚未达到顶峰。现在是需要 Java 11 的时候了。
BUG挖掘机·性能征服者·头顶锅盖