前提先看完这篇博文http://www.javashuo.com/article/p-ogoruzem-gx.htmlhtml
根据GNU协议又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是建立一套彻底自由的操做系统。Richard Stallman最先是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为什么发起该计划的文章,其中一个理由就是要“重现当年软件界合做互助的团结精神”。为保证GNU软件能够自由地“使用、复制、修改和发布”,全部GNU软件都有一份在禁止其余人添加任何限制的状况下受权全部权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。故Sun公司于2009年4月15日正式发布OpenJDK。甲骨文在 2010 年收购Sun以后接管了这个项目。java
Oracle JDK只发布二进制安装包,而OpenJDK只发布源码。git
冯·诺依曼机原理github
由此咱们得知计算机上设备的运行是须要二进制代码也就是0,1组合,而计算机处理运算的部分是运算器与控制器也就是如今的微处理器CPU,因此就有了机器码,机器码是给CPU下达指令的,机器识别很容易,而人经过机器码编程太过复杂,因而聪明的人类将机器码0001,0010这种二进制码映射成固定的符号,好比0001表明read,0010表明add,因而就有了汇编语言,汇编语言造成的操做指令就是CPU的操做指令,因此每一个CPU都有本身的操做规范,因而就有了8086处理器,Intel 1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,以后x86便成为了我的计算机的标准平台,成为了从来最成功的CPU架构。 编程
8086是16位处理器;后续有了32位的80386处理器,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。后来Intel也推出了与之兼容的处理器,并命名为Intel 64。二者通常被统称为x86-64或x64,开创了x86的64位时代。这里16位32位64位表明的是寄存器的个数。centos
一来基于x86架构造成的指令集对于人类仍是太复杂,二来每一个CPU在指令集上都会有所不一样,这样基于某个CPU写出来的软件只能给特定的CPU使用,因而在基于x86架构的指令集上开始诞生了汇编语言,汇编语言对人仍是不太友好,因而人类又发明高级语言,好比C , C++语言,这样高级语言和汇编语言直接映射指令集,因而在这种映射之间就诞生了编译器,这就是编译原理。浏览器
(source language)源程序→编译器 →目标机器代码程序(object code)bash
后来人类又发明了面向对象的编程语言,这种语言更贴合人的思惟逻辑,因而主角诞生了--java超高级语言架构
后来sun公司的程序猿经过JNI将JAVA,C,C++封装在一块儿就造成JDK,JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其余语言的通讯(主要是C&C++)。因而在2009年,sun公司将jdk源码公布于众,openjdk就这样诞生了。编程语言
本人编译的是openjdk9
openjdk9源码地址http://hg.openjdk.java.net/jdk9
这是一个版本树,基于Mercurial搭建的一个代码托管平台,相似于github和开源中国的码云。
打开本地的centos7虚拟机,请确保本地电脑联网而且网速要很好。网速差就找个网速很好的地方,不然你会哭的。我已经哭过了。
yum install mercurial
下载openjdk9的编译指南项目源码,这个源码下都是须要编译和下载openjdk9源码的bash脚本和编译指南
openjdk9指南项目下载地址http://hg.openjdk.java.net/jdk9/jdk9/
点击zip下载到本地
而后解压zip包进入到\common\doc的目录下
用浏览器打开building.html并翻译成中文
而后根据指南开始你的表演
最好经过root权限登陆centos7虚拟机
clone指南项目到/opt目录下
hg clone http://hg.openjdk.java.net/jdk9/jdk9 cd jdk9 bash get_source.sh
请保持耐心等待源码下载完成
下载编译器,外部库和头文件
sudo yum groupinstall "Development Tools"
而后安装引导jdk8
sudo yum install java-1.8.0-openjdk-devel
运行配置参数
bash configure --with-target-bits=64 --disable-warnings-as-errors --with-debug-level=slowdebug --with-boot-jdk=/usr/jdk1.8.0_161
将这个--with-boot-jdk=/usr/jdk1.8.0_161修改成本身的jdk绝对路径
编译openjdk9源码
make images
进入到根目录下将jdk环境变量修改为本身的路径./build/*/images/jdk/
vi /etc/profile source /etc/profile
java -version
验证成功
如今开始openjdk9的调试吧!