也许这个答案有点矫枉过正,但我希望你至少觉得它有用。
我通常下载代码并自己构建。有一些工具可以查看实际变化是什么(例如 TortoiseHG)。这就是我所做的:
如何构建 JDK 8
以下指南介绍了如何使用Ubuntu Linux 12.04 (Precise)构建Open JDK 8 Developer Lambda 项目。如果您需要有关构建过程如何工作的更多详细信息,请参阅新构建系统的自述文件。对于其他 JDK 项目,例如主 JDK 8 森林或 Jigsaw 森林,该过程几乎相同。
如何构建第一次
安装 Ubuntu 后,您必须安装以下附加软件包:
sudo apt-get install build-essential
sudo apt-get install mercurial
sudo apt-get install tortoisehg
sudo apt-get install awk
sudo apt-get install m4
sudo apt-get install ccache
sudo apt-get install openjdk-7-jdk
sudo apt-get install ant
sudo apt-get install vim
sudo apt-get install libX11-dev
sudo apt-get install libxext-dev
sudo apt-get install libxrender-dev
sudo apt-get install libxtst-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
使用 Mercurial 下载 Open JDK8 Lambda 项目源代码
hg clone http://hg.openjdk.java.net/lambda/lambda
其他项目森林是:
http://hg.openjdk.java.net/jdk8/jdk8
http://hg.openjdk.java.net/jigsaw/jigsaw
尽管 Jigsaw 已推迟到 JDK 9。
前面的命令,实际上只是下载了项目林的根目录。您仍然需要为其余的子项目(即 corba、jaxp、jaxw、langtools、jdk 和热点)下载 mercurial 存储库。您可以通过运行get_source.sh
位于您刚刚签出的项目的根文件夹中的命令来执行此操作。
cd ~/lambda
sh ./get_source
所有其他项目存储库的下载可能需要一段时间,所以请耐心等待。
下载所有项目存储库后,您就可以配置构建了。假设您仍然位于 lambda 目录中
cd commom/makefiles
sh ../autoconf/configure
此命令:configure
有很多选项,您可以设置这些选项来自定义 JDK 的构建方式。您可以通过运行来查看这些选项的文档configure --help
。但是,在没有任何参数的情况下运行命令就足够了。
虽然您仍然位于 lambda/common/makefiles,但现在您已准备好构建 JDK 8。
make images
该make
命令还有多个选项来构建 JDK。如果您键入make help
,您将看到它们全部。
根据您计算机上的资源量(内核和内存),此编译过程可能需要一些时间。我在具有单核和 1GB 内存的虚拟机中做过一次,它花了一整夜。我现在在具有 4 核和 4 GB 内存的 Intel Core i7 中执行此操作,并且需要不到 1 小时。无论如何,一旦编译准备好,JDK 映像位于:
~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image
该目录linux-x64-normal-server-release
在您的计算机上可能具有不同的名称,具体取决于其体系结构。
一切顺利,您现在可以使用此构建版本来测试 JDK 8 的新功能。
如何获取更新和重建
随着 OpenJDK 工作的进展,您可能希望不时获取最新的源代码并重新构建整个东西,对吧?
要更新到最新的源代码,只需get_source.sh
再次运行命令:
cd lambda
sh ./get_source
您可能不需要configure
再次运行该命令,除非您的硬件架构(即更多内核、更多内存)或您安装的软件(即安装的 jdk)发生了变化。但是,如果您想确定并重新运行它,请从清理并完全清除之前的构建开始:
make dist-clean
该命令将删除之前的配置并构建。
然后你可以再次配置:
cd commom/makefiles
sh ../autoconf/configure
最后,再次构建系统:
make images
如何知道发生了什么变化
显然,一旦您获得了最新版本的代码,您可能想知道自上次构建以来发生了什么变化。任何子项目(即热点、langtools 等)中的情况都可能发生了变化。但是,JDK 子项目中正在积极开发 JDK API。
由于项目使用 Mercurial,您可以使用 TortoiseHG 与您的存储库进行交互并查看发生了什么变化。只需找到项目目录之一并运行 TortoiseHG 命令:
cd ~/lambda/jdk
thg
这将启动 TortoiseHG GUI 工具,您可以在其中轻松查看存储库中所有更改的日志以及在您获得的最后一次更新中准确修改的内容,在上面的 jdk 子项目示例中。您可以通过在每个子文件夹中调用 thg 命令来查看编译器在 langtools 子项目中遭受的变化,并查看 jvm 在热点子项目中遭受的变化。
如何创建 Java 文档
尽管该configure
命令带有一个名为的选项,该选项--enable-docs
应该在构建期间自动生成 Java 文档,但截至今天,该标志似乎没有做任何事情。因此,您可以使用以下命令生成 javadocs:
~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image/bin/javadoc \
-d ~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image/docs \
-use \
-author \
-version \
-linksource \
-splitIndex \
-windowtitle 'Java 2 Platform 8.0 API Specification' \
-doctitle 'Java<sup><font size="-2">TM</font></sup> 2 Platform 8.0 API Specification' \
-header '<b>Java 2 Platform </b><br><font size="-1">8.0</font>' \
-group "Core Packages" "java.\*" \
-overview ~/lambda/jdk/src/share/classes/overview-bundled.html \
-sourcepath ~/lambda/jdk/src/share/classes \
java.lang java.util java.util.functions java.util.concurrent \
java.lang.annotation java.lang.reflect java.lang.ref
请注意,JDK 的源代码位于 ~/lambda/jdk/src/share/classes/
此处指定的列表包是执行大部分 JDK 8 工作的包。添加您认为必要的任何其他软件包。