写点什么

极简,利用 Docker 仅两行命令就能下载和编译 OpenJDK11

作者:程序员欣宸
  • 2022 年 7 月 02 日
  • 本文字数:1525 字

    阅读完需:约 5 分钟

极简,利用Docker仅两行命令就能下载和编译OpenJDK11

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 通常情况下,编译 OpenJDK11 源码构建新的 JDK 需要以下步骤:


  1. 下载 OpenJDK11 源码;

  2. 按自己需求修改 OpenJDK11 源码;

  3. 准备编译环境;

  4. 编译构建新的 JDK;


  • 现在利用 Docker,可以将步骤简化如下:


  1. 执行一行命令,完成 OpenJDK11 源码下载;

  2. 按自己需求修改 OpenJDK11 源码,这一步省不掉;

  3. 执行一行命令,将修改后的 OpenJDK11 源码构建为新的 JDK;


  • 可见除了自己修改 OpenJDK 源码这一步因人而异无法省略,其余步骤已经被大大简化,接下来就一起体验一下吧;

实战环境

  1. 操作系统:Ubuntu 16.04.5 LTS;

  2. Docker:18.06.1-ce;

  3. 强烈建议您为 Docker 配置好镜像加速(例如阿里云和 DaoCloud),因为用到的 Docker 镜像文件较大,使用镜像加速对下载速度提升明显;

实战步骤

  • 今天实战的内容如下:


  1. 用一行命令,通过 Docker 把 OpenJDK11 源码下载到本地;

  2. 按照自己的需求修改 OpenJDK11 源码;

  3. 用一行命令,通过 DockerDocker 编译构建 OpenJDK11 源码,生成新的 JDK;

  4. 验证新的 JDK;


  • 接下来开始实战吧;

准备工作

  • 在当前电脑准备一个空目录,例如我这里是/usr/local/work/openjdksrc ,请确保该目录已经存在,且里面什么都没有;

下载 OpenJDK11 源码

  • 执行以下命令即可完成 OpenJDK11 源码下载:


docker run \--rm \-it \-v /usr/local/work/openjdksrc:/output \bolingcavalry/openjdksrc11:0.0.2
复制代码


  • 注意:


  1. 命令中的/usr/local/work/openjdksrc 就是之前新建的空文件夹;

  2. 由于源码包自身体积较大,因此下载镜像是比较耗时的,请您耐心等待;

  3. 命令执行成功后,/usr/local/work/openjdksrc 下面会出现一个名为 jdk11 文件夹,这里面就是 OpenJDK11 的源码;

修改 OpenJDK11 源码

  • 接下来是您根据自己的需要去修改 OpenJDK 源码,举个例子,我修改的文件位于以下位置:


jdk11/src/java.base/share/classes/java/lang/VersionProps.java.template
复制代码


  • 打开此文件,找到方法 print(boolean err, boolean newln),该方法位于文件的尾部,在此方法的最后面添加一行代码,如下图红框所示,新增代码的作用是让"java -version"命令多打印一行内容:


编译 OpenJDK11 源码

  • 执行以下命令即可完成 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.jgssCompiling 8 files for jdk.unsupported.desktopCompiling 94 files for jdk.xml.domCompiling 14 files for jdk.zipfsWarning: No mercurial configuration present and no .src-revCompiling 4 files for BUILD_JIGSAW_TOOLS----- Build times -------Start 2018-10-26 03:19:45End   2018-10-26 04:02:08
00:42:23 TOTAL-------------------------Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-normal-server-release'
复制代码

验证新的 JDK

  • 进入目录 jdk11/build/linux-x86_64-normal-server-release/jdk/bin

  • 执行命令./java -version ,可以看到下图信息,红框中就是我们修改的效果:



  • 至此,OpenJDK11 源码的下载、修改、编译就这么完成了,是不是很简单呢?如果您有兴趣了解如何做到这么简单的操作,请关注以下两篇文章,它们分别揭示了如何制作下载源码的镜像和编译源码的镜像:

  • 《制作 Docker 镜像,用来下载 OpenJDK11 源码》;

  • 《制作 Docker 镜像,用来编译 OpenJDK11 源码》;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 2022 年 07 月 02 日阅读数: 47
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
极简,利用Docker仅两行命令就能下载和编译OpenJDK11_Java_程序员欣宸_InfoQ写作社区