- OpenJDK源码下载
OpenJDK源码的下载方式我总结为主要有三种方式:
1)从官网下载zip包到本地,优点是直观方便,缺点是版本管理和更新不便;
官网地址
OpenJDK Mercurial Repositorieshg.openjdk.java.net比如需要 下载jdk15的版本,则只需要点击截图中左侧的zip即可使用浏览器进行下载。
2)使用mercurial管理工具下载
openjdk官方是使用mercurial进行代码仓管理,因此可以用hg clone下载源码,首先进入terminal安装mercurial,然后同步代码到本地,比如jdk8:
hg clone http://hg.openjdk.java.net/jdk8/jdk8
同步完成后,使用代码仓的./get_source.sh脚本更新源码。
笔者在无代理的网络环境使用该方式总是超时失败,遂放弃。
3)使用git工具进行下载
openjdk在GitHub上也建立了代码仓,因此可以直接从官方仓库进行clone;
git clone git@github.com:openjdk/jdk.git
同样由于网络问题同步失败。
好在国内码云上有同步的镜像仓库,解了燃眉之急。
git clone git@gitee.com:mirrors/openjdk.git
2. openJDK源码编译
相比源代码下载,openjdk的编译倒简单一些,主要是:
1)configure
chmod a+x configure
./configure --with-boot-jdk ~/path/to/jdk
2) make
这个过程的主要问题在于第一步的configure的时候就要依赖旧版本jdk用于后续编译,比如从码云上同步下来的源码编译时需要依赖jdk 15 16 17,而Ubuntu18官方源提供的jdk最新版本只有11,因此只能曲线救国,基于jdk11环境和jdk13源码、jdk15源码逐步编译出新版本的jdk。如果当前已安装的jdk环境是满足源码版本N-1要求的,则只需要./configure即可。
configure: Potential Boot JDK found at /usr/lib/jvm/java-1.11.0-openjdk-amd64 is incorrect JDK version (openjdk version "11.0.9.1" 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)); ignoring
configure: (Your Boot JDK version must be one of: 15 16 17)
configure: Could not find a valid Boot JDK. OpenJDK distributions are available at http://jdk.java.net/.
configure: This might be fixed by explicitly setting --with-boot-jdk
configure: error: Cannot continue
以jdk12为例,基于jdk11环境进行configure和make之后,javac等二进制文件在build/linux-x86_64-server-release/jdk/bin目录;