Oracle的JDK架構(gòu)技術負責人Joe Darcy宣布OpenJDK 10軟件倉庫群(Repository Forrest)完成最終合并。這一合并是近一年前建議提出的,意在降低管理大量軟件倉庫群的開銷。這些軟件倉庫是在OpenJDK發(fā)展史上經(jīng)歷次分裂生成的,并將在OpenJDK 9及以前的版本中繼續(xù)存在。為此,JDK中還創(chuàng)建了用于在合并和未合并版本間移動更改的工具。
在這次合并操作之前,OpenJDK曾分裂為多個不同的Mercurial軟件倉庫群(通常也被稱為Hg軟件倉庫,即“汞”),其中包含了如下的主要平臺組件:
root; corba; hotspot; jaxp; jaxws; jdk; langtools; nashorn。這導致了多個問題,例如不能以原子方式對多個軟件倉庫應用漏洞修復(Bug Fixes)。在OpenJDK合并完成后,只會有一個軟件倉庫,并復制在三個開發(fā)線上:
jdk10/master:主要的開發(fā)工作使用; jdk10/client:用于客戶代碼(通常是桌面)的集成線; jdk10/hs: 用于HotSpot的集成線。其中,Client線和HotSpot線的開發(fā)也涵蓋了整個OpenJDK軟件倉庫,只是保存為不同的開發(fā)線,因為在這些領域上的工作一般不會影響OpenJDK的其它領域,也不會被其它領域所影響。保持一個獨立的開發(fā)線,只在有需要時才與主分支(Master)同步,這將簡化Client線和HotSpot線代碼的開發(fā)。
合并還會簡化一些通用的開發(fā)任務。例如,要從代碼倉庫群中檢出一個本地拷貝,目前或者需要使用tclone(是Hg樹擴展的一部分,用于處理代碼倉庫群),或者需要使用get_source.sh腳本。而使用合并結(jié)構(gòu)后,只需要一個簡單的檢出操作即可實現(xiàn)。另一個例子是創(chuàng)建變更集(Changeset),目前為止依然需要使用hgforest.sh工具,實現(xiàn)將同一Hg命令應用到群中的所有代碼倉庫。
不幸的是,盡管新合并的代碼倉庫具有很多的優(yōu)點,但是管理代碼倉庫群的工作并未完全結(jié)束。OpenJDK 9使用的依然是舊的群格式,這意味著對于要應用到多個版本的Java上的更改(很多情況下通常是安全更新),依然需要應用到群上以及合并的代碼倉庫上。為解決這個問題,Oracle的軟件工程師,也是OpenJDK的提交者(Committer),Erik Joelsson創(chuàng)建了一個工具,可以將一個補丁在合并格式與非合并格式間作相互轉(zhuǎn)換。
最后需指出的是,首次合并工作中并未包括一些基于OpenJDK 10的項目,例如Amber和Valhalla。但這些項目的合并版本有望盡快推出。
查看英文原文: Oracle Consolidates the OpenJDK 10 Repository Forest