65 lines
4.5 KiB
Markdown
65 lines
4.5 KiB
Markdown
# 精尽 JDK 源码解析 —— 调试环境搭建(一)入门
|
||
|
||
> 本文,我们在原来文章 [《JDK 源码解析 —— 调试环境搭建》](http://vip.iocoder.cn/JDK/build-debugging-environment/?self) 的基础上,从 JDK11 调整成 JDK13 ,并使用 Git 取代 Mercurial 获取 OpenJDK 的源码。
|
||
>
|
||
> 在艿艿写完 [《精尽 JDK 源码解析 —— 调试环境搭建(二)进阶》](http://svip.iocoder.cn/JDK/build-debugging-environment-more?self) 之后,艿艿突然发现,从 Git 克隆的是 OpenJDK14 的 EA(Early Access抢 先体验版)。暂时不就纠正,反正胖友要记得,整个系列是基于 **OpenJDK14 的 EA** 写的。
|
||
|
||
# 0. 友情提示
|
||
|
||
JDK 源码的调试环境,实际上暂时没有特别好的方案。
|
||
|
||
因为,我们程序运行以来 JDK ,但是我们如果在 JDK 上增加源码相关的注释,就会导致代码行数的错乱。所以,艿艿目前的想法是,如下两个步骤:
|
||
|
||
- 1、从官方的 Mercurial 获取 OpenJDK 源码,在上面添加源码注释。
|
||
|
||
> 获取 OpenJDK 源码的方式,一共有三种
|
||
>
|
||
> - 1、从 http://jdk.java.net/ 网站上,直接下载源码。
|
||
> - 2、使用 Mercurial ,从 http://hg.openjdk.java.net/jdk/ 克隆对应版本的源码。例如说,我们在 [《JDK 源码解析 —— 调试环境搭建》](http://vip.iocoder.cn/JDK/build-debugging-environment/?self) 文章中,就是这么干的。
|
||
> - 3、使用 Git ,从 https://github.com/openjdk/jdk克隆对应版本的源码。该仓库就是 http://hg.openjdk.java.net/jdk/ 的镜像,方便我们使用我们所熟悉的 Git 而不是 Mercurial 。在本文,我们就会从该仓库克隆。
|
||
|
||
- 2、自己搭建一个项目,使用 JDK13 ,然后进行调试。
|
||
|
||
# 1. 获取 OpenJDK 源码
|
||
|
||
从官方仓库 https://github.com/openjdk/jdk Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈
|
||
|
||
使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。因为 JDK 的源码比较大,所以拉取会花费漫长时间,耐心等待下。
|
||
|
||
> 如果拉取比较慢,也可以考虑使用 https://gitee.com/zhijiantianya/jdk 地址。这个是艿艿使用 Gitee 对 https://github.com/openjdk/jdk 做的镜像。毕竟,Github 对国内的网络,不是非常友好。
|
||
|
||
拉取完成后,我们可以搜索想看的类。例如说,HashMap 如下图所示:[](http://static.iocoder.cn/images/JDK/2019_01_01/01.jpg)HashMap
|
||
|
||
如此,我们就可以愉快的在其上添加源码注释。
|
||
|
||
> 可能胖友导入在 IDEA 看到的项目结构比较奇怪。可以先 IDEA 关闭 OpenJDK 项目,然后删除项目本地根目录下面 IDEA 相关的配置,最后再使用 IDEA 打开 OpenJDK 项目。
|
||
|
||
# 2. 搭建项目调试
|
||
|
||
① 下载 JDK
|
||
|
||
从 https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html 上,下载 Oracle JDK13 。
|
||
|
||
虽然说,我们在 [「1. 获取 OpenJDK 源码」](https://svip.iocoder.cn/JDK/build-debugging-environment/#) 中下载的是 OpenJDK 的源码,但是我们使用 Oracle JDK13 作为调试环境,也是没啥问题的。因为,Oracle JDK 和 OpenJDK 绝大部分源码是相同的。
|
||
|
||
> 如果想要纯粹以 OpenJDK 作为调试环境,可以参考 [《Mac 上的 JDK 多版本管理》](https://www.jishuwen.com/d/pm5V/zh-hk) 文章,使用 brew 安装对应版本的 OpenJDK 。
|
||
|
||
② 搭建项目
|
||
|
||
这个比较简单,就不重复赘述了。**需要注意的是,设置 Project SDK 要是 Oracle JDK13 噢**。
|
||
|
||
还有一个注意点,IDEA 需要升级到 2019.2 或以上版本,因为 2019.2 才支持 JDK13 。
|
||
|
||
> 友情提示:当然,胖友如果自己有精力,可以将**克隆的** OpenJDK13 **编译**出来,作为项目使用的 Project SDK 。
|
||
|
||
③ 调试
|
||
|
||
直接调试,这个无需多说列。
|
||
|
||
例如说,艿艿就在 https://github.com/YunaiV/openjdk 项目下,创建了一个叫 `yunai` 的 Maven 项目,各种创建测试类,各种调试。
|
||
|
||
# 666. 彩蛋
|
||
|
||
2019 年的下半年,艿艿准备写写大家比较常用的 JDK 类的源码解析,希望对胖友有一些帮助。共勉,2019 ,加油!
|
||
|
||
当然,可能会有胖友会有疑惑,目前 JDK8 版本才是主流,而艿艿为什么使用 JDK13 呢?虽然说,Oracle JDK8 某个版本(具体不太记得了)之后,需要更新,但是我们最终还是会不断更新版本。Java 的强大,不是因为 Oracle ,而是完善的整个社区体系。 |