自己编译JDK
前言
买了《深入理解JAVA虚拟机 JVM高级特性与最佳实践》(周志明,第二版),作者在第一章作了一些介绍后就提出:
想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原型。虽然门槛会高一点,但肯定比阅读各种书籍、文章更加贴近本质。另外,JDK中的很多底层方法都是本地化(Native)的,需要跟踪这些方法的运作或对JDK进行Hack的时候,都需要自己编译一套JDK。
准备
操作系统
作者说Windows,Linux,Mac都可以,但Windows会麻烦一些,而我目前没有Mac,所以我选择在笔记本上安装的双系统中的Centos7上执行。
源码
两种方式获取源码,一个是用Mercurial在Repository中获取:
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-dev
cd jdk7u-dev
chmod 755
get_source.sh
我采用的就是这一方式,但速度比较慢,全部下载到本地需要数个小时的时间。
第二个方式是到自己到网站上去下载,作者给出的网址如下:
但似乎页面已经变化,不提供下载了。我在OpenJDK中只找到jdk1.6的源码:
https://download.java.net/openjdk/jdk6
通过修改链接虽然也能找到jdk7的源码下载页面,但这一下载途径似乎已经被禁止了。
Bootstrap JDK
由于Openjdk7和Oracle jdk8都会报错,我选择安装Oracle jdk7。
详细可以参考下面的链接1。
需要安装的库
yum groupinstall “Development Tools”
yum install alsa-lib-devel cups-devel freetype-devel libXi-devel gcc gcc-c++ libX* ant
这里我参照了下面的链接2和3,具体需要哪些我也不太清楚。