如何下载最新的java虚拟机(Hotspot)源代码?

How to download the most updated java virtual machine(Hotspot) source code?

我打算为 Java 社区做贡献,我对 JVM 很感兴趣。

现在我想下载最新的 JVM Hotspot 源代码并跟踪更新。

首先,我去 http://openjdk.java.net/ .

在它的左边我找到了一些有用的标签

Source code: 
Mercurial 
Bundles
...
JDK 6
JDK 7
JDK 7 Updates
JDK 8 · Java SE 8
JDK 8 Updates
JDK 9 · Java SE 9
JDK 10

我只能找到关于如何下载JDK8u源代码的说明:http://openjdk.java.net/projects/jdk8u/

状态

我们开放修复 jdk8u-dev 林中的 8u152。 (post时间是2017-06-06 14:23:36)

源代码

可以使用以下命令克隆用于持续开发的 jdk8u-dev 林:hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev;cd jdk8u-dev;sh get_source.sh .

对应的master forest jdk8u可以使用这个命令克隆:hg clone http://hg.openjdk.java.net/jdk8u/jdk8u;cd jdk8u;sh get_source.sh .

此外,最新版本 8u102 的源代码可通过克隆 8u master forest 获得:http://hg.openjdk.java.net/jdk8u/jdk8u 并使用“jdk8u102-b14”mercurial 标签。


但 jdk9 和 jdk10 似乎也在列表中。它们是最新的源代码吗?我如何下载它们?

JDK9 页面未提供有关如何获取源代码的说明。 JDK9:http://hg.openjdk.java.net/jdk9

JDK10:http://openjdk.java.net/projects/jdk10/


此外,如果 Java 社区发布新的更新,更新我当前源代码的最佳方式是什么?重新下载还是使用Mercurial工具?


jdk 源代码中的 forest 是什么?和git中的branch类似吗?


此外,我可以找到另一种从 JetBrains 中的 github 下载 JVM Hotspot 源代码的方法:

https://github.com/JetBrains/jdk8u_hotspot/tree/d37547149a7c5647ebffbbb62525cc62bd8e2673

但我不确定这个是不是最新的。

这取决于你的意思 'most updated'.

实际上,所有 jdk8ujdk9jdk10 存储库都保持最新-日期;它们只是具有不同状态并接受不同更改集的独立项目。

  • jdk8u 有最新的改动,将出现在JDK8 的未来更新中。这些更新主要包括错误修复。
  • jdk9 存储库包含最新代码,将在 JDK 9 发布。该项目现在处于 Rampdown 阶段 2 意味着只能在那里修复 showstopper 错误。在 JDK 9 发布之后这个存储库会发生什么还没有定义 - 例如开始像 jdk9u 这样的东西。
  • jdk10 包含在 Java SE 平台的未来版本上正在进行的工作。此处所做的重要改进可能会在稍后的某个时间向后移植到 jdk9(当然,如果它们符合规范)。

    请注意,新功能不是直接在此存储库中开发的。新功能必须经过JEP process. Some bigger features may be even hosted in separate projects like Panama or Valhalla.

OpenJDK 项目的官方存储库位于 http://hg.openjdk.java.net
要获取来源,请使用 Mercurial,例如

hg clone http://hg.openjdk.java.net/jdk10/jdk10

它包含几个嵌套的存储库。 HotSpot JVM 在 hotspot:

hg clone http://hg.openjdk.java.net/jdk10/jdk10/hotspot

稍后您可以使用 hg pull -u 将您的本地存储库与主服务器的更新同步。

在父存储库中,您还可以找到有关如何获取源代码和构建 OpenJDK 的说明:common/doc/building.md. There is a similar document in jdk9 存储库。