质量外展提示 - 关于使用早期访问版本进行测试的重要性

OpenJDK 质量小组正在推广使用 OpenJDK 版本测试 FOSS 项目,以此作为提升版本整体质量的一种方式。此提示是发送给相关项目的定期通信的一部分。如需详细了解该计划以及如何加入,请在此查看。

关于使用早期访问版本进行测试的重要性

以下是一个近期示例,展示了使用 OpenJDK 早期访问版本测试现有代码库的好处。

上个月,我们发布了一个提示,重点关注顺序集合,因为它们可能会引入一些不兼容性。

Eclipse Collections (EC) 团队做了功课,果然不出所料,EC 受到影响,因为它现在会抛出 JDK 21 早期访问版本的编译错误。EC 团队能够快速修复这些编译错误,即主要是添加覆盖默认方法。但在修复这些编译错误后,问题变得有趣了,另一个问题浮出水面。这次,问题与 LinkedHashMap 序列化相关。经过一番调查,EC 团队将第二个问题识别为 JDK 问题,并提交了一张 JBS 工单。随后确认该问题是 JDK 回归,并在 OpenJDK 主干(即 JDK 22)中得到迅速修复。此后,修复程序被移植到 JDK 21 稳定化存储库中。此EC 拉取请求提供了更多详细信息。

在这种情况下,JDK 修复很简单,但如果 EC 团队没有主动使用 OpenJDK 早期访问版本进行测试,此类问题很容易被忽略。EC 问题会在 JDK 21 正式发布后浮出水面……而谁知道 JDK LinkedHashMap 序列化回归何时会得到修复?

TL; DR。使用 OpenJDK 早期访问版本测试现有代码库是一个双赢的局面。它有助于项目本身(本例中为 Eclipse Collections),因为它使开发人员能够在该新 JDK 版本正式发布之前识别其自身代码库中的问题。它也有助于 JDK,因为在开发周期中足够早检测到的任何 JDK 问题都让 OpenJDK 工程师有机会在该新 JDK 版本正式发布之前解决该问题。最后但并非最不重要的是,拥有一个强大的 JDK 对整个 Java 社区也是有益的。

感谢 Eclipse Collections 团队,尤其是 Donald Raab,为帮助 Java 平台变得更加强大所做的贡献!

~