说句实话,我也不知道是怎么写完这 36 篇技术文章的。

一周三篇的文章接近近万字,说多不多,对我而言还是挺困难的一件事。基本上,我连续好几个月的业余时间都贡献给写作,甚至一度重温了博士阶段被论文支配的恐怖。我想,这大概也算是在工作相对清闲的国外环境下,体验了一把 997 的生活。

这一路下来,我感觉写专栏的最大问题,其实并不在于写作本身,而在于它对你精力的消耗,这种消耗甚至会让你无法专注于本职工作。因此,我也愈发地佩服能够持续分享技术的同行们。还好我的工作挺有趣的,每天开开心心地上班写代码,只是一到下班时间就蔫了,不得不应付编辑的催稿回家码字。

我在写作的中途,多次感受到存稿不足的压力,以致于需要请年假来填补写作的空缺。不过,最后做到了风雨无阻、节假无休地一周三更,也算是幸不辱命吧。

说回专栏吧。在思考专栏大纲时,我想着,最好能够和杨晓峰老师的 Java 核心技术专栏形成互补,呈现给大家的内容相对更偏向于技术实现。

因此,有读者曾反馈讲解的知识点是否太偏,不实用。当时我的回答是,我并不希望将专栏单纯写成一本工具书,这样的知识你可以从市面上任意买到一本书获得。

我更希望的是,能够通过介绍 Java 虚拟机各个组件的设计和实现,让你之后遇到虚拟机相关的问题时,能够联想到具体的模块,甚至是对于其他语言的运行时,也可以举一反三相互对照。

不过,当我看到 Aleksey Shipilev介绍 JMH 的讲座时,发现大部分的内容专栏里都有涉及。于是心想,我还能够在上述答复中加一句:看老外的技术讲座再也不费劲了。

还有一个想说的是关于专栏知识点的正确性。我认为虚拟机的设计可以写一些自己的理解,但是具体到目前 HotSpot 的工程实现则是确定的。

为此,几乎每篇专栏我都会大量阅读 HotSpot 的源代码,和同事讨论实现背后的设计理念,在这个过程中,我也发现了一些 HotSpot 中的 Bug,或者年久失修的代码,又或者是设计不合理的地方。这大概也能够算作写专栏和我本职工作重叠的地方吧。

我会仔细斟酌文章中每一句是否可以做到达意。即便是这样,文章肯定还有很多不足,比如叙述不够清楚,内容存在误导等问题。许多读者都热心地指了出来,在此感谢各位的宝贵意见。接下来一段时间,我会根据大家的建议,对前面的文章进行修订。

专栏虽然到此已经结束了,但是并不代表你对 Java 虚拟机学习的停止,我想,专栏的内容仅仅是为你打开了 JVM 学习的大门,里面的风景,还是需要你自己来探索。在文章的后面,我列出了一系列的 Java 虚拟机技术的相关博客和阅读资料,你仍然可以继续加餐。

你可以关注国内几位 Java 虚拟机大咖的微信公众号:R 大,个人认为是中文圈子里最了解 Java 虚拟机设计实现的人,你可以关注他的知乎账号你假笨,原阿里 Java 虚拟机团队成员,现PerfMa CEO;江南白衣,唯品会资深架构师;占小狼,美团基础架构部技术专家;杨晓峰,前甲骨文首席工程师。

如果英文阅读没问题的话,你可以关注Cliff ClickAleksey Shipilëv(他的JVM Anatomy Park十分有趣)和Nitsan Wakart的博客。你也可以关注Java Virtual Machine Language SubmitOracle Code One(前身是 JavaOne 大会)中关于 Java 虚拟机的演讲,以便掌握 Java 的最新发展动向。

当然,如果对 GraalVM 感兴趣的话,你可以订阅我们团队的博客。我会在之后考虑将文章逐一进行翻译。

其他的阅读材料,你可以参考 R 大的这份书单,或者这个汇总贴

如果这个专栏激发了你对 Java 虚拟机的学习热情,那么我建议你着手去阅读 HotSpot 源代码,并且回馈给 OpenJDK 开源社区。这种回馈并不一定是提交 patch,也可以是 Bug report 或者改进建议等等。

我也会不定期地在本专栏中发布新的 Java 虚拟机相关内容,你如果有想要了解的内容,也可以给我留言反馈。

最后,感谢一路以来的陪伴与支持,谢谢你,我们后会有期!