说句实话,我也不知道是怎么写完这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虚拟机相关内容,你如果有想要了解的内容,也可以给我留言反馈。
最后,感谢一路以来的陪伴与支持,谢谢你,我们后会有期!

精选留言
2018-10-15 15:28:49
2018-10-15 08:12:19
2018-10-15 08:22:15
这个专栏我一直在跟进学习,可能是功力不足,部分内容认为弄明白了,有些内容认为理解不到位,后续会继续努力!
看了R大的书目和博文中学习的明目,顿感差距可用天壤之别来形容,这个专栏结束了,但这不是学习的结束而是新的开始!
感谢您的一路陪伴,感谢🙏!
2019-11-01 20:39:46
1.实践性强
这是我目前订阅的专栏里面写留言最多的,以前大学时看周志明的书,总觉得很难动手验证,或许是自己经验能力都还不够。现在订阅这个专栏,每次都能跟着老师的实战实际的动手,实际地体会每个知识点。这样的学习也是我最喜欢的方式,每次都能边看边思考边动手验证,一些思想概念等看不着莫不见的东西通过代码,通过工具,就可以显现在自己眼前,这样理解之后的在记忆,更加持久深入。即便忘记了,也可以很快捡起来。
2.有体系,有脉络
老师先讲JVM的基本原理,再讲高效编译,代码优化,以及畅想未来的GraalVM。 让我对JVM的了解深入了很多。
3.有启发,开拓视野
原来我不知道如何去验证voaltile, synchronzied的实现方式,try-catch-finally的实现方式(还有很多),其实都是可以通过字节码,机器码,JVM源码来验证的。另外JNI, Java Agent也都开拓了我的眼界,明白native的前世今生,明白了AOP的实现方式,
4.学习需要有体系
计算机组成原理,操作系统,编译原理,计网,数据结构与算法都是一些通用的计算机科学知识。聪明的计算机科学家会借鉴已有的最有效的解决方案来解决自己遇到的问题,只有了解了这些最底层计算机科学知识,自己才可以走的更远。
道阻且长,继续加油。
再次感谢郑老师
2018-10-19 08:04:56
2018-10-18 12:25:11
2018-12-03 17:11:28
2018-11-16 19:45:44
2018-10-19 18:33:14
2018-10-15 02:10:46
2018-11-19 18:28:23
2018-11-19 15:59:47
2018-10-29 07:25:12
2020-03-22 18:05:12
2018-12-01 18:38:55
2018-11-01 19:51:01
2018-10-22 16:47:56
2018-10-18 10:30:11
2018-10-17 15:03:01
2018-10-17 14:00:09