简介&历史
正如有些人已经知道的那样,从Java7开始,OpenJDK就是Java的参考实现(Reference Implementation)。下图的时间线可以让你了解一下OpenJDK的历史。
OpenJDK历史(2006至今)
看看OpenJDK更详细的过去现在和将来[1]。
如果你想了解从Oracle,Red Hat,etcetera等供应商那里下载得来的JDK或JRE库,那么可以告诉你,它们都是起源于OpenJDK。每个供应商在此基础上添加额外的部件。出于安全,专利或其他的考虑,这些额外的添加部分并不公开源码。
OpenJDK由什么组成?
OpenJDK由许多软件库组成,主要有corba,hotspot,jaxp,jaxws,jdk,langtools,以及nashorn。在OpenJDK8和OpenJDK9之间没有新的软件库加入,但有很多改变和结构调整,主要是因为Jigsaw——Java自身的模块化[2][3][4][5]。
代码的组成以及语言的分解构成(比例是估计的)
Java语言和平台是如何构建的?
Java通过引导一个旧版本的Java——例如,Java以其自身为构件建立。旧的组件被组合在一起创建一个新的组件,即成为下一阶段的结构单元。关于这种自展的一个很好的例子请参考 Scheme from Scratch或是 Wikipedia [7]。
OpenJDK8使用JDK7编译和构建,类似地,OpenJDK9 则使用JDK8编译构建。理论上,OpenJDK8是可以使用从其自身创建的影像编译的,同理,OpenJDK9也能用OpenJDK9编译。使用一个叫做循环启动影像的进程——创建OpenJDK的JDK影像,使用同样的影像,OpenJDK再一次被编译。也可以用make命令实现OpenJDK的编译:
$ make bootcycle-images # Build images twice, second time with newly built JDK
make命令在OpenJDK8和OpenJDK9下都提供了很多设置选项,可以通过命名的方式建立独立的组件或模块。如下:
$ make [component-name] | [module-name]
甚至并行运行多个构建过程,如下:
$ make JOBS= # Run parallel make jobs
最后,用install选项安装上述已构建的组件,如下:
$ make install
一些被神话了的东西