Oracle 完成 OpenJDK 10 软件仓库群的合并

  • Abraham Marín Pérez
  • 盖磊

2017 年 10 月 8 日

话题:Java语言 & 开发

Oracle 的 JDK 架构技术负责人 Joe Darcy 宣布OpenJDK 10 软件仓库群(Repository Forrest)完成最终合并。这一合并是近一年前建议提出的,意在降低管理大量软件仓库群的开销。这些软件仓库是在 OpenJDK 发展史上经历次分裂生成的,并将在 OpenJDK 9 及以前的版本中继续存在。为此,JDK 中还创建了用于在合并和未合并版本间移动更改的工具。

在这次合并操作之前,OpenJDK 曾分裂为多个不同的 Mercurial 软件仓库群(通常也被称为 Hg 软件仓库,即“汞”),其中包含了如下的主要平台组件:

  • root;
  • corba;
  • hotspot
  • jaxp;
  • jaxws;
  • jdk;
  • langtools;
  • nashorn

这导致了多个问题,例如不能以原子方式对多个软件仓库应用漏洞修复(Bug Fixes)。在 OpenJDK 合并完成后,只会有一个软件仓库,并复制在三个开发线上:

其中,Client 线和 HotSpot 线的开发也涵盖了整个 OpenJDK 软件仓库,只是保存为不同的开发线,因为在这些领域上的工作一般不会影响 OpenJDK 的其它领域,也不会被其它领域所影响。保持一个独立的开发线,只在有需要时才与主分支(Master)同步,这将简化 Client 线和 HotSpot 线代码的开发。

合并还会简化一些通用的开发任务。例如,要从代码仓库群中检出一个本地拷贝,目前或者需要使用tclone(是 Hg 树扩展的一部分,用于处理代码仓库群),或者需要使用get_source.sh脚本。而使用合并结构后,只需要一个简单的检出操作即可实现。另一个例子是创建变更集(Changeset),目前为止依然需要使用hgforest.sh工具,实现将同一 Hg 命令应用到群中的所有代码仓库。

不幸的是,尽管新合并的代码仓库具有很多的优点,但是管理代码仓库群的工作并未完全结束。OpenJDK 9 使用的依然是旧的群格式,这意味着对于要应用到多个版本的 Java 上的更改(很多情况下通常是安全更新),依然需要应用到群上以及合并的代码仓库上。为解决这个问题,Oracle 的软件工程师,也是 OpenJDK 的提交者(Committer),Erik Joelsson 创建了一个工具,可以将一个补丁在合并格式与非合并格式间作相互转换

最后需指出的是,首次合并工作中并未包括一些基于 OpenJDK 10 的项目,例如AmberValhalla。但这些项目的合并版本有望尽快推出。

查看英文原文: Oracle Consolidates the OpenJDK 10 Repository Forest

Java语言 & 开发