JVM从入门到放弃?不要这么轻易就放弃啊
每一个JVM编程语言开发工程师,不管Java还是Groovy,Scala,Clojure,乃至新兴的Kotlin语言,在好奇心和求知欲驱使下,不断深度学习本领域的新东西时一定会接触到JVM。可能从基友,公众号,网络或书籍上了解到,然后走上了从从入门到放弃之路。但是出来工作以后,JVM这一关,终究还是要过的。尤其在关键的业务系统里的高吞吐与低延时,系统的稳定性与出现问题时排查,都需要研发工程师们掌握扎实的基础核心技术才能驾驭的,比如你调节JVM参数时,你可以预知你做的每一步能产生的效果是什么,很多时候可以节省掉一些不必要的试错过程。
JVM具有两个主要功能:允许Java程序在任何设备或操作系统上运行(称为“一次编写,在任何地方运行”原则),以及管理和优化程序内存。以上两个功能,大多人都能谈,但是再往深去剖析说个所以然出来,就比较难了。
技术有难度,入门不容易。学不懂,放弃也就是分分钟的事。
离开校园,大部分的技术都靠自学习得。自学路上最缺的就是老师,当你没有老师的时候,书籍往往就是你最好的老师。其实对于任何一名程序开发初学者来说,究竟如何学习才能提高自己的开发技术呢?答案之一就是买合适的书籍进行专门学习。当然获取“知识”的渠道多种多样,比如公众号或看视频,网络资料等,但是公众号的知识过于碎片化,很难自成体系,而且内容的质量也有待商榷;看视频则缺乏深度思考;至于网上各类 JVM 相关的资料多如牛毛,但是明显都很难让大家系统性地学明白。学习一门技术,尤其是有一定门槛的技术是件需要时间和空间的事,讲究输入和输出。在学习过程中,它远远比迅速点开另一个同样标题很好玩、内容很逗比的标题的文章难得多。
JVM的书籍市场上也很多,一般写的比较好的,在豆瓣读书上的评分都比较高。个人比较推荐的有周志明写的《深入理解java虚拟机--JVM高级特性与最佳实践》,这也是我的入门书籍。这本书评价很高,但不代表读起来没有难度,也是需要有一定的编程经验。当年还在学校时,当读到第一章中1.6小节《实战:自己编译JDK》,捣鼓了几天也没搞定,挫败感太强了,然后就放弃治疗了。直到工作以后才重新拾起,有点出来混终归是要还的味道。从入门到放弃?不要这么轻易就放弃啊!建议看这本书时,先初步读一遍,不求甚解,旨在了解整个JVM的全貌,然后第二遍开始,再挑感兴趣的章节仔细研读加实践。相信对着书捣鼓一遍,JVM 的技术和内存模型、JVM 参数和内置工具、GC 算法、GC 日志、内存和线程等相关问题排查分析等等,都会比之前有质的提升。
基础很重要,每个人都知道,但是并不是每个人都足够重视,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获。
借用《琅琊榜》一词:遥映人间冰雪样,暗香幽浮曲临江,遍识天下英雄路,俯首JVM有周郎。如今《深入理解java虚拟机--JVM高级特性与最佳实践》又出新的版本,对比第二版,内容更新了许多,值得添加进2020的书单。