Answers:
OpenJDK页面上对此进行了详细解释:JDK 7更新项目建议书问答
该项目是否可以作为Oracle JDK 7 Update版本的基础?
是。
引用Joe Darcy 在OpenJDK 6上的FOSDEM 博客文章:
特别是,OpenJDK 7代码库和7更新代码库之间不会像OpenJDK 6和6更新系列之间存在二分法一样。
根据我的阅读,以上内容实质上意味着补丁和更新通常会首先发布到Open JDK,然后再以尽可能小的延迟在Oracle JDK中交付。
对于安全补丁,情况似乎恰恰相反,即我希望它们首先发布到Oracle版本,然后(同样,以尽可能小的延迟)发布到OpenJDK:
7 Update Project会从Oracle获得安全修复程序吗?
是。
与OpenJDK 6一样,安全修补程序首先要保持机密并应用于私有林,然后再将其推送到公共林中,作为对受影响的JDK发布系列进行的修补程序的常规同步发布的一部分。此外,他们将不会进行公共代码审查和推迟批准程序,并且项目的问题跟踪程序中的相应问题将不会公开显示。
该项目什么时候会收到Oracle的安全修复程序?
Oracle Java SE重要补丁更新的时间表是公开可用的。
该项目的源代码的安全修补程序将在JDK 7更新项目中同时在Oracle产品中发布的同时提供...
为了更好地理解为什么要付出如此大的努力来使Oracle和Open JDK保持同步,请看一下Oracle对先前项目的决定:将OpenJDK用作正式的Java SE 7参考实现是有道理的:
... Oracle和Java SE 7专家组的其他成员一直在对Java SE 7规范(JSR 336)进行最后润饰。Oracle担任规范负责人,负责提供Java SE 7参考实现... 我们将提供一个完全基于OpenJDK开源代码并使其在GPL开源许可下可用的参考实现。。
参考实现(RI)的作用将用作所有Java实现的黄金标准。为了使实现被认证为与Java SE兼容,实现者必须通过大量的兼容性测试-技术兼容性套件(TCK)。此外,可以将实现与RI进行比较,作为兼容性的附加检查。基本上,如果您的实现已被证明具有与RI相同的行为,则它与Java兼容。有关此主题的更多信息,请参阅JCP FAQ。
从历史上看,Sun始终将Sun JDK用作RI,并根据Binary Code License(BCL)使它可用。对于Sun而言,这非常方便,因为这意味着其产品实现在定义上是兼容的。但是,这也令人困惑,因为Sun JDK包含了很多不属于标准的功能,例如Java插件。同样,继续这种做法会使开源实现者感到困难,因为他们将无法学习和评估正式的RI源代码。(Oracle JDK的源代码与OpenJDK略有不同-我们将逐步解决该问题)。
考虑到这一点,Oracle将:
上述决定意味着需要投入大量精力投入Open JDK代码,以发布经过官方验证,测试,许可和兼容的代码。如果您添加它必须按照商定的公共时间表发布,那么很明显,这种努力与以前在“传统” Sun / Oracle Java版本中所做的努力差不多。
这使得尽可能保持Open和Oracle JDK代码库尽可能接近是合理的:否则,重复开发和进行修复以使两个项目均符合TCK可能会令人望而生畏。
使用Open JDK作为参考实现的决定似乎使Oracle出于最大利益考虑,要使其JDK与Open JDK保持尽可能接近的同步-直到JDK 7发行。
为了了解是什么促使Oracle在JDK 7更新发行版中进一步保持同步,最好还是看一下Open JDK 8项目,该项目的目的与Open JDK 7非常相似:
该项目的目标是生成Java SE 8平台的开源参考实现,该参考实现将由Java Community Process中的JSR 337定义。
出于与上述有关JDK 7参考实现的解释相同的理由,Oracle的最大利益是,使两个JDK的更新尽可能保持同步。
现在,这些JDK之间的差异越大,Oracle发行Java SE 8的难度就越大,这是因为需要重复努力才能使自己的发行版与TCK兼容。相反的情况也是如此,即,两个项目现在都越接近,发布两个Java 8实现的工作量就越少。
您是否曾经碰巧同时支持针对不同客户端的同一软件的两个略有不同的版本?如果是的话,您可能会想起让它们尽可能接近的愿望,以及不同步时遇到的不便。对于Open和Oracle JDK,这只是在更大范围内非常类似。
几乎所有错误修复都直接通过OpenJDK项目,然后进入下游JVM供应商(Oracle,Azul,RedHat等)。
一个例外是,某些安全补丁已在下游版本(特别是Oracle)中修复,然后悄悄地移植回OpenJDK。这样一来,供应商便可以在安全性修补程序上升级全球大部分地区,然后再在开源项目中公开该漏洞。
一些供应商还选择不将其更改推回OpenJDK。例如,Google和Twitter都修改了OpenJDK版本,它们在内部使用了错误修复程序和功能,这些功能并没有包含在OpenJDK主项目中。
高温超导