目录
3.2 cygwin下载地址:Cygwin Installation
4.2 VS Code2017下载:Visual Studio
一、前言
想要窥探Java虚拟机内部的实现原理,最直接的一条路径就是编译一套自己的JDK,通过阅读和跟踪调试JDK源码来了解Java技术体系的运作,虽然这样门槛会比阅读资料更高一点,但肯定也会比阅读各种文章、书籍来得更加贴近本质。
本来未计划更新此篇文章,但笔者在Windows平台编译JDK时,遇到了各种各样意料之外的事情(Oracle对Windows支持度不太友好),查阅网上资料非常片面和不符合实际,答案基本都是千篇一律的Copy,因此决定更新此篇博文。
如果你还是新手且平台为Windows时,希望我更新的详细步骤可以对你有所帮助。如果你是其他平台(Linux/mac OS),因为官方对其他平台支持度较高,直接按照其他博客教程即可。
本篇文章主要详细介绍OpenJDK11、OpenJDK12源码、Cygwin、VS Code2017社区英文版安装过程以及为什么要安装这些软件,主要给新手提供一个详细的步骤流程图,如果你已经安装,请确认无误后进入下一篇源码编译的文章。
二、正文
1.下载OpenJDK源码
1.1 选择OpenJDK版本
2006年11月13日Java正式开源,OpenJDK组织成立并对这些JDK源码进行独立管理。OpenJDK接收Sun公司移交的JDK源码时,Java正处于JDK 6时代的初期,JDK 6 Update 1才刚刚发布不久,JDK 7还处于研发状态的半成品。
OpenJDK的第一个版本就是Sun公司正在开发的JDK 7,考虑到OpenJDK 7完全不足以支持生产部署,因此又在OpenJDK 7 Build 22的基础上建立了一条新的OpenJDK 6分支,剥离掉所有JDK 7新功能的代码,把OpenJDK 6发布给公众使用。等到OpenJDK 7达到了可正式对外发布时,从OpenJDK7的主分支延伸出OpenJDK 8的研发分支和OpenJDK 7 Update(用于发布更新OpenJDK 7)两条子分支,新的功能或Bug修复通常是在最新分支上进行的,当功能或修复在最新分支上稳定之后会同步到其他老版本的维护分支上。后续的JDK 8和JDK 9都重复延续着类似的研发流程。
到了JDK 10及以后的版本,全部开发工作统一归属到JDK和JDK Updates两条主分支上,主分支不再带版本号,在内部再用子分支来区分具体的JDK版本。
因此我还是建议选择OpenJDK10及其以后的版本进行编译,此次演示我选择OpenJDK12源码进行演示。
1.2 下载OpenJDK源码
1.2.1 OpenJDK官网源码列表地址:OpenJDK Mercurial Repositories
1.2.2 选择“jdk12”
默认展示jdk12更新日志,我们点击“browse”。
然后再点击“zip”即可自动下载。
然后解压至本地(我解压到F:),效果如下图。
OpenJDK12路径:F:\jdk12-06222165c35f
2.下载编译JDK
2.1 下载编译自举JDK
熟悉编译器的自举原理的小伙伴应该都清楚,编译器和语言是鸡与蛋的问题,一门语言最初总是以其他语言作为编译器。这也就意味着编译器自举一般都是编译器开发的一个里程碑事件。Java作为高级语言,已经可以实现编译自举,就是通过Java语言来编译JDK。
通常自举的版本会小于编译的版本,但是大家一般都会使用前一个版本作为自举版本,所以我们编译OpenJDK12源码需要下载OpenJDK11。由于很多小伙伴像我下面截图这样可能已经安装了其他版本JDK,为了简化操作,所以我使用不安装OpenJDK11的方式进行编译。
注意:大家一定要区分开,下载OpenJDK11和OpenJDK12源码,OpenJDK11是安装包,12是源码。
2.1.1 OpenJDK官网JDK下载地址:Archived OpenJDK GA Releases
2.1.2 选择JDK11
我选择的是11 GA(build 11+28)
2.1.3 测试OpenJDK11
我解压压缩包至F盘,效果如下图
打开CMD,切换文件夹至“F:\jdk-11\bin”,输入“java -version”查看效果,如下图则代表成功。
3.安装cygwin
3.1 为什么安装cygwin
cygwin是一个windows平台上的unix模拟环境,主要是通过重新编译,将其他系统上的软件移植到windows上,因为OpenJDK暂不支持Windows直接编译,所以我们通过cygwin进行编译过程。
源码doc/building/building.md明确表示windows唯一支持的为Cygwin。
3.2 cygwin下载地址:Cygwin Installation
3.3 cygwin安装
点击“下一步”
点击“下一步”
选择安装目录,点击“下一步”
选择下载附件保存的文件夹
选择“Use System Proxy Settings”,选择“下一步”
选择163的Proxy地址(选择其他的也可以),选择“下一步”
左上角view选择“Category”
搜索“autoconf” ,选择“autoconf”双击“Skip”
Skip变成版本号即可,如图变成了“15-1”。
然后依次搜索“tar”、“make”、“zip”、“unzip”重复以上双击Skip操作(已经是版本号无需双击),然后选择“下一步”
选择“下一步”,等待完成即可,安装完成如下图。
4.安装VS Code2017
4.1 为什么需要下载VS Code2017?
查看OpenJDK12源码文件make/autoconf/toolchain_windows.m4文件,里面配置了支持的VS Code版本:2017、2013、2015、2012、2010,所以我们安装了支持的最新版2017版本。
4.2 VS Code2017下载:Visual Studio
选择2017栏目下的“下载”
选择“VS Code2017社区版”,选择“download”
4.3 VS Code2017安装
打开下载好的Visual Studio安装包
选择“继续”
选择VS Code2017社区版,点击“安装”
工作负荷选择“使用C++的桌面开发”
语言包取消勾选“中文”,勾选英语,点击右下角的安装
注意:请不要修改安装位置,否则要改很多东西,修改后打包工具无法找到VS Code,需要改源码
安装好点击VS Code任务栏图标
选择“Not now,maybe later.”
选择自己喜欢的风格,点击“Start Visual Studio”
打开如图英文版代表成功,关掉即可。
5.总结
本篇文章介绍了OpenJDK11、OpenJDK12源码、Cygwin、VS Code2017社区英文版的详细安装步骤,在下篇文章中,我会说明具体编辑步骤以及如何修改源代码。请查看下一篇文章。