为 OpenJDK 做贡献

从这里开始

我们很高兴您有兴趣为 OpenJDK 做贡献。在您开始之前,最好尝试了解项目的“脉搏”。以下是一些资源可以帮助您做到这一点。

OpenJDK 网站

OpenJDK 是 Java 开发工作的主要场所。简单来说,直接摘自 OpenJDK 网站,OpenJDK 是:协作开发 Java 平台标准版及其相关项目的开源实现的场所。

旁注:许多人将 OpenJDK 与 Java 的构建(用于构建和运行 Java 应用程序的可安装工件)联系起来,但这并不正确。OpenJDK 指的是许多人协作开发 Java 的场所。然后,从在 GitHub 上找到的 OpenJDK 项目源代码创建下游构建。

访问 https://openjdk.org

开发者指南

OpenJDK 开发者指南 是一个很好的起点!该指南的目标是回答 JDK 开发人员可能在开发流程、工具、标准等方面遇到的问题。

Inside Java

另一个跟踪 JDK 和 OpenJDK 子项目(如 Loom、Valhalla 等)进度的资源是 Inside.java。您还可以订阅 Inside.java 中的许多节目,但有一个专门介绍参与的播客节目是 Inside Java 播客 第 11 集“如何为 OpenJDK 做贡献”

邮件列表

阅读邮件列表是开始贡献的好方法。您将了解 OpenJDK 社区、它的工作原理以及它的文化。您不必害怕在邮件列表中提问。如果有更好的邮件列表来讨论您提出的问题,您将被重定向到那里,这没关系。您可以在 此页面 上找到 OpenJDK 邮件列表。

了解 OpenJDK 项目角色

在 OpenJDK 项目中工作的人员具有特定的角色,并承担一系列职责。他们是

您可以在 此处 了解更多关于角色的信息。

当您是 OpenJDK 项目的新手并且还没有做出任何贡献时,您就是一名参与者。这意味着您正在积极参与邮件列表。

一旦您贡献了几个更改(通常是两个),您就可以成为一名作者。作者有权创建补丁,但不能推送它们。要推送补丁,您需要一名赞助商。获得赞助通常是通过您在邮件列表中进行的讨论来实现的。

为了成为一名作者,您还需要签署 Oracle 贡献协议 (OCA)。然后,您将在 JDK 错误系统 (JBS) 上获得一个帐户,这使您有权创建问题并评论现有问题。JBS 对任何人都开放阅读。

在贡献了大约八个更改后,您将成为一名提交者。作为提交者,您可以推送您的补丁,而无需赞助商。

在贡献了 32 个重大更改后,您将成为一名审阅者。作为审阅者,您有权批准更改以包含在 OpenJDK 中。

最后,您也可以成为一名项目负责人。项目负责人是该项目的提交者,负责指导和协调项目的活动。

审阅代码和文档

即使您认为自己是一个初学者,任何人都可以进行审阅。如果您对 JDK 代码库感兴趣,在代码库中包含新代码之前对其进行审阅是发现错误的最佳方法之一,并且非常有价值。审阅还有助于提高您的编码技能。审阅测试代码,寻找可能被遗忘的边缘情况和极端情况也很有价值。它有助于潜在地防止将来出现错误。

许多文档以 JavaDoc 注释的形式出现,这些注释是代码的一部分。审阅 JavaDoc 注释以确保它们有意义并且以书面形式易于理解也很有价值。编写 JavaDoc 注释可能非常具有挑战性。如果您觉得某些内容难以理解,可能意味着它应该以不同的方式编写。在审阅过程中,找到难以理解的 JavaDoc 注释是目标之一。

建议一个想法

从 2020 年 9 月开始,OpenJDK 项目的开发迁移到 GitHub,这使得跟踪其开发变得更加容易。要开始您的探索,请访问页面 https://github.com/openjdk 并浏览您需要的存储库。

公开开发并不意味着您可能需要的任何创新和有趣的功能都可以通过一个拉取请求添加到 JDK 源代码中。在能够贡献补丁之前,为 OpenJDK 做贡献需要经过深思熟虑和渐进的经验。它还需要遵循项目的开发流程,即使迁移到 GitHub 使流程和工具变得更加顺畅,这都要归功于 Skara 项目 的工作。

从技术角度来看,贡献补丁意味着您承诺在可预见的未来维护此代码。为了使您的代码被接受,它在经过测试时需要在功能上具有高性能、安全和稳定性。

即使在达到那个阶段之前,讨论您的想法也是第一步。您是否解决了正确的问题?如果是,那么您的解决方案是解决该问题的最佳解决方案吗?是否已对所有权衡进行了适当的分析?等等。

在这些方面达成一致并获得对您提出的建议的验证非常重要,确保它对潜在包含在 OpenJDK 中有意义。

开始此讨论的最佳方法是在 OpenJDK 邮件列表之一中开始。在那里达成共识可以让您实现您的想法,创建一个拉取请求,并让您的代码得到审阅。您不应该从生成代码开始,因为这会使讨论问题的相关性和解决方案变得更加困难。

提交 JDK 增强提案 (JEP)

您可能知道,Java 语言、API 或 Java 虚拟机的新功能和增强功能的开发必须通过创建 JEP 来完成。

您想要解决的问题和您提出的解决方案的讨论中出现的是问题的范围。范围可能非常大,涉及 JDK 的多个组件,例如 JVM 和核心库的核心修改。实现此解决方案可能需要涉及多个 OpenJDK 项目团队,并可能需要修改 Java 规范的某些部分。在这种情况下,需要通过 JEP。

无论您是需要为您的想法提交错误还是提交 JEP,这都将从邮件列表中的讨论中得出。

请注意,一些小的功能想法也可能导致提交 JEP。提交 JEP 可能有助于提高人们对一项小但重要的更改的认识,或者围绕一项可能被视为有点有争议的功能进行讨论。

更多学习