说句实话,我也不知道是怎么写完这36篇技术文章的。
一周三篇的文章接近近万字,说多不多,对我而言还是挺困难的一件事。基本上,我连续好几个月的业余时间都贡献给写作,甚至一度重温了博士阶段被论文支配的恐怖。我想,这大概也算是在工作相对清闲的国外环境下,体验了一把997的生活。
这一路下来,我感觉写专栏的最大问题,其实并不在于写作本身,而在于它对你精力的消耗,这种消耗甚至会让你无法专注于本职工作。因此,我也愈发地佩服能够持续分享技术的同行们。还好我的工作挺有趣的,每天开开心心地上班写代码,只是一到下班时间就蔫了,不得不应付编辑的催稿回家码字。
我在写作的中途,多次感受到存稿不足的压力,以致于需要请年假来填补写作的空缺。不过,最后做到了风雨无阻、节假无休地一周三更,也算是幸不辱命吧。
说回专栏吧。在思考专栏大纲时,我想着,最好能够和杨晓峰老师的Java核心技术专栏形成互补,呈现给大家的内容相对更偏向于技术实现。
因此,有读者曾反馈讲解的知识点是否太偏,不实用。当时我的回答是,我并不希望将专栏单纯写成一本工具书,这样的知识你可以从市面上任意买到一本书获得。
我更希望的是,能够通过介绍Java虚拟机各个组件的设计和实现,让你之后遇到虚拟机相关的问题时,能够联想到具体的模块,甚至是对于其他语言的运行时,也可以举一反三相互对照。
不过,当我看到Aleksey Shipilev介绍JMH的讲座时,发现大部分的内容专栏里都有涉及。于是心想,我还能够在上述答复中加一句:看老外的技术讲座再也不费劲了。
还有一个想说的是关于专栏知识点的正确性。我认为虚拟机的设计可以写一些自己的理解,但是具体到目前HotSpot的工程实现则是确定的。
为此,几乎每篇专栏我都会大量阅读HotSpot的源代码,和同事讨论实现背后的设计理念,在这个过程中,我也发现了一些HotSpot中的Bug,或者年久失修的代码,又或者是设计不合理的地方。这大概也能够算作写专栏和我本职工作重叠的地方吧。
我会仔细斟酌文章中每一句是否可以做到达意。即便是这样,文章肯定还有很多不足,比如叙述不够清楚,内容存在误导等问题。许多读者都热心地指了出来,在此感谢各位的宝贵意见。接下来一段时间,我会根据大家的建议,对前面的文章进行修订。
专栏虽然到此已经结束了,但是并不代表你对Java虚拟机学习的停止, 我想,专栏的内容仅仅是为你打开了JVM学习的大门,里面的风景,还是需要你自己来探索。在文章的后面,我列出了一系列的Java虚拟机技术的相关博客和阅读资料,你仍然可以继续加餐。
你可以关注国内几位Java虚拟机大咖的微信公众号:R大,个人认为是中文圈子里最了解Java虚拟机设计实现的人,你可以关注他的知乎账号;你假笨,原阿里Java虚拟机团队成员,现PerfMa CEO;江南白衣,唯品会资深架构师;占小狼,美团基础架构部技术专家;杨晓峰,前甲骨文首席工程师。
如果英文阅读没问题的话,你可以关注Cliff Click、Aleksey Shipilëv(他的JVM Anatomy Park十分有趣)和Nitsan Wakart的博客。你也可以关注Java Virtual Machine Language Submit和Oracle Code One(前身是JavaOne大会)中关于Java虚拟机的演讲,以便掌握Java的最新发展动向。
当然,如果对GraalVM感兴趣的话,你可以订阅我们团队的博客。我会在之后考虑将文章逐一进行翻译。
如果这个专栏激发了你对Java虚拟机的学习热情,那么我建议你着手去阅读HotSpot源代码,并且回馈给OpenJDK开源社区。这种回馈并不一定是提交patch,也可以是Bug report或者改进建议等等。
我也会不定期地在本专栏中发布新的Java虚拟机相关内容,你如果有想要了解的内容,也可以给我留言反馈。
最后,感谢一路以来的陪伴与支持,谢谢你,我们后会有期!