想要深入了解JVM,就必须了解其实现机制。了解JVM实现的最好方法便是自己动手编译JDK。好了,让我们开始吧!
准备工作
获取OpenJDK源码
本次编译选择的是OpenJDK7u,官方源码包:https://jdk7.java.net/source.html
系统需求
为了提高效率,尽量选择Linux 或 MacOS作为编译平台。本次使用Ubuntu12.04进行编译。仔细阅读源码包中README-builds.html文档,就可以构建编译环境了。
配置编译环境
编译依赖
OpenJDK包括虚拟机Hotsport | JDK API | JAXWS | JAXP等。需要各种编译依赖,包括C++,C的编译环境,编译Java的JDK(称为Bootstrap JDK),还有用于执行java代码的Ant脚本等等。这些依赖在Linux中都可以通过命令一次安装完成。
sudo apt-get install build-essential gawk m4 libasound2-dev libcups-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
当然,也可以在命令里面加上openjdk-6-jdk,但是由于openjdk在后面的编译中出现了bug,所以还是建议大家安装Oracle jdk。注意,bootstrap JDK版本必须在6以上。
环境变量
OpenJDK在编译时会读取许多环境变量,所以必须对Linux的环境变量进行配置。使用VIM编辑/etc/profile。 vim /etc/profile
具体在profile中添加的环境变量如下
export LANG=C #B