通常情况下,编译OpenJDK11源码构建新的JDK需要以下步骤:
现在利用Docker,可以将步骤简化如下:
可见除了自己修改OpenJDK源码这一步因人而异无法省略,其余步骤已经被大大简化,接下来就一起体验一下吧;
今天实战的内容如下:
接下来开始实战吧;
在当前电脑准备一个空目录,例如我这里是/usr/local/work/openjdksrc,请确保该目录已经存在,且里面什么都没有;
执行以下命令即可完成OpenJDK11源码下载:
docker run \
--rm \
-it \
-v /usr/local/work/openjdksrc:/output \
bolingcavalry/openjdksrc11:0.0.2
注意:
接下来是您根据自己的需要去修改OpenJDK源码,举个例子,我修改的文件位于以下位置:
jdk11/src/java.base/share/classes/java/lang/VersionProps.java.template
打开此文件,找到方法print(boolean err, boolean newln),该方法位于文件的尾部,在此方法的最后面添加一行代码,如下图红框所示,新增代码的作用是让"java -version"命令多打印一行内容:
执行以下命令即可完成OpenJDK11源码编译和构建:
docker run --rm \
-it \
-v /usr/local/work/openjdksrc:/src \
bolingcavalry/buildopenjdk11:0.0.2
编译构建的速度和电脑硬件有关,构建完成后,打开文件jdk11/build/linux-x86_64-normal-server-release/build.log,在文件尾部可以看到如下信息:
Creating support/modules_libs/jdk.security.auth/libjaas.so from 1 file(s)
Compiling 16 files for jdk.security.jgss
Compiling 8 files for jdk.unsupported.desktop
Compiling 94 files for jdk.xml.dom
Compiling 14 files for jdk.zipfs
Warning: No mercurial configuration present and no .src-rev
Compiling 4 files for BUILD_JIGSAW_TOOLS
----- Build times -------
Start 2018-10-26 03:19:45
End 2018-10-26 04:02:08
00:42:23 TOTAL
-------------------------
Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-normal-server-release'
至此,OpenJDK11源码的下载、修改、编译就这么完成了,是不是很简单呢?如果您有兴趣了解如何做到这么简单的操作,请关注以下两篇文章,它们分别揭示了如何制作下载源码的镜像和编译源码的镜像: