购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 通过Open JDK搭建运行环境

上一章主要介绍了Oracle JDK的相关学习内容和安装技巧,本章则主要介绍了如何帮助大家下载和安装搭建Open JDK的运行环境,其中包括读者所需要的Open JDK版本的介绍及运行环境,最后构建编译Open JDK并且学习调试源码。

2.2.1 Open JDK的介绍

根据上面的学习,我们已经了解到平时我们所说的JDK,多数指的是Sun/Oracle公司发布的JDK版本,但是由于闭源化及商业版本功能的存在,所以JDK并不采用开源协议对外开放,与此对应的有了相关的开源JDK版本,我们称为Open JDK。让我们进入Open JDK的历史长河,一同去探索一下Open JDK的起源。

首先,在完成Java语言生态之后,Sun公司就在2006年的时候将JDK的源码进行开源化,此时这种开源的JDK称为Open JDK。顾名思义,“Open”的含义就是“Open Source”(开放源码),并且代码可以被其他组织或者机构进行使用和二次开发,比较著名的案例是Ultra Violet,它就是基于Open JDK而衍生的,所以可以把Open JDK理解为其他JDK的父亲或者祖先。

Open JDK采用了FreeType字体引擎的支持,并使用GPLv2的认证许可证进行项目发布,2009年之前主要通过Sun公司及其下属组织进行管理维护,之后由于Sun公司被收购了,故现在由Oracle公司进行管理。

后续各大厂商都纷纷研发属于自己的商业化JVM虚拟机,例如,IBM公司的J9虚拟机、Azul公司的Zing和Zulu等,它们基本都是在Open JDK的源码库基础上进行定制化开发和优化的,而主要不同之处在于许可协议的类型。

2.2.2 下载Open JDK源码包

如果我们需要阅读Open JDK的源码,想要探索深入学习JDK的内部机制,那么该去哪下载呢?本节主要介绍如何下载Open JDK的源码包。

好了,现在开启你的Open JDK源码之旅吧!

首先我们需要访问Open JDK的官方网站(http://hg.openjdk.java.net/),在这里找到需要下载的源码,进入后看到相关的Open JDK版本列表,如图2.15所示。

图2.15 部分Open JDK版本列表

图2.15只展示了一部分Open JDK的版本,想要获取所有的版本请访问官方网站,在这里选取我们需要的jdk8u版本源码,进入页面可以看到它所有的分支代码,如图2.16和图2.17所示,它们分别代表jdk8u分支版本列表和jdk8u主分支版本项。

图2.16 jdk8u的部分分支版本列表

图2.17 jdk8u主分支版本项

如图2.17所示,这里选择的是jdk8u主分支版本,单击jdk链接后,直接进入下载页面,如图2.18所示。

图2.18 下载页面效果图

单击左侧边栏的zip或者gz选项即可下载相关的源码压缩包。

2.2.3 Open JDK的版本介绍

上面介绍了如何下载Open JDK的源码压缩包,接下来我们简单介绍一下JDK版本,现在JDK已经发展到版本10了,版本11的开发已经处于计划中,而我们主要关注的就是Open JDK 6、Open JDK 7、Open JDK 8、Open JDK 9和Open JDK 10,如图2.19所示。

图2.19 Open JDK常用版本展示

至于其他的版本,读者感兴趣可以参考学习和延伸一下,但主要以上述的这几个版本为学习的目标版本。此处多说一句,针对Open JDK的版本发展来讲,其实主要是基于Open JDK 7版本引出的,比如说Open JDK 6的版本就是通过Open JDK 7的某一个基线引出的,并且剥离了JDK7中相关的特性代码。因为笔者建议大家可以用Open JDK 7的版本进行编译使用,此处主要是考虑到与上面介绍的Oracle JDK的版本对应,所以选择了Open JDK 8。

2.2.4 运行环境的要求

安装和运行Open JDK所需要的环境配置,可以参考上面介绍的Oracle JDK所需要的环境要求,两者所需要的环境指标基本一致。在此笔者不做太多赘述,但是如果条件允许,尽可能地在Linux操作系统上进行编译运行构建,同时最好采用x64版的JDK,而且机器处理器架构也应该是64位操作系统。

除上述的要求之外,官方文档上的配置要求有512MB的内存和600MB以上的硬盘空间,但是实际情况还包括了其他系统编译组件及工具,总体建议还是以Oracle JDK的配置要求做标准要求即可。

2.2.5 构建编译属于自己的JDK

首先,我们需要准备Open JDK源码所需要的编译环境,在官网下载安装包并解压之后找到RE-ADME-builds.html,根据这个html文档执行编译步骤。

Windows搭建环境下,你在编译时通常需要一些诸如Linux/Unix这样的搭建环境,特别是cgshell,可以直接通过下载的Cygwin,甚至MinGW/MSYS等工具包来搭建一个环境。这种方式与其他模仿虚拟环境的处理工具有所区别,主要不同之处在于它对每个路径文件名称的处理方式。

这里以Cygwin(http://www.cygwin.com/)为例,选择x64位下载,Cygwin默认情况下不会包含我们编译Open JDK所需要的组件,所以需要我们手动进行安装,如下表所示。

Cygwin额外所需要的工具

下载成功之后,进入安装页面,如图2.20所示。

图2.20 Cygwin安装界面

当单击下一步按钮的时候,会有以下3种安装方式供你选择。

第一行代表联网在线安装;

第二行代表先下载但不进行自动安装,需要手动进行定制化选择安装;

第三行代表直接安装本地的安装包,可以理解为是第二行步骤的后续执行步骤,如图2.21所示。

图2.21 Cygwin选择安装类

在此我们需要勾选所需要安装的工具组件,对应的就是Cygwin的内部所需要安装的服务模块,记住一定要安装上面表格中所需工具包,如图2.22所示。

图2.22 Cygwin工具包选择

其他的步骤皆可自定义选择或按默认配置进行,此处不再做过多的赘述。安装完Cygwin以后,还必须安装编译器,而Open JDK的核心代码和底层代码大部分是由C++和部分C语言写成的。因此,我们首先选择Microsoft Visual Studio C++ 2010(VS2010)对它进行二次编译。

接下来使用可选的方式对freetype进行下载,此部分并未出现在官方文档中,它是一个开源的字体处理引擎,很多的开源项目都采用它作为系统字体的渲染工具。可去其官网上下载:http://www.freetype.org/,并且查看相关的安装教程即可,如图2.23所示

图2.23 freetype下载界面

另外,你可以下载已编译好的lib和dll进行应用开发,但不需自行编译,下载网址:https://github.com/ubawurinna/freetype-windows-binaries。

到目前为止,已经基本完成Open JDK编译环境基础组件的下载和安装。

下面是案例,我们使用configure配置相关参数机制。先直接进入源码配置,然后直接打开一个Cygwin的bash窗口,之后直接进入一个Open JDK源码配置路径,再按我们的要求配置:

开始配置:

对以上的参数简单作一些说明。

· --with-freetype=/cygdrive/e/hub/freetype:指定feetype的位置,必选。

· --with-boot-jdk=/cygdrive/e/sdkUnity/java/jdk:启动jdk的路径,必选。

· --with-target-bits=64:指定生成64位jdk,必选。

· --with-jvm-variants=server:编译JVM的模式,有server、client、kernel、zero和zeroshark五种,默认server模式。

· --with-debug-level=release:编译时debug的级别,有release、fastdebug(可调试的JDK)和slowdebug 三种级别。

其他可以参考README-builds.html。

执行编译:make all,如果只需要JVM客户端,可以参考README-builds.html。

如果有多个配置make完成后,需要执行make install 将生成的文件集中在某个目录,没有指定则默认放在/usr/local/jvm下。

完成后在/usr/local/jvm中就有生成的openjdk-1.8.0-internal文件夹,执行java -version测试JDK编译功能和设置安装是否正常。 Fv+mHbUwHe9TXOBEx0DUUgQYwy6+7uUTUOqkg7YCeSHZ1Dy7UXzIqq92P4xYXtYl

点击中间区域
呼出菜单
上一章
目录
下一章
×