前言
JDK 版本
==基于 JDK 17==:主版本相同即可,次版本无伤大雅
为何要学习 JVM
- ==越是底层的才越是核心==。很多程序员因为公司业务的繁琐变化,很大精力都耗费在需求变更上,导致了没有时间去深入理解底层。觉得 SpringBoot,SpringCloud,分布式才是牛逼。(这也情有可原,因为很多面试官只关心你是否能够快速上手,完成业务),这也就导致了很多程序员为了面试去背诵八股文。从 Spring 到 SpringBoot 到 SpringCloud,框架在不停的变化,但是 JVM 底层的字节码,自从 1995 年至今,变动次数屈指可数。
- 虚假的牛逼:微服务,Redis,分布式
- 真实的牛逼:数据结构与算法,计算机组成原理,网络……
- JVM 并不只是 Java 程序员需要学习的。因为 JVM 当初设计是为了兼容多种编程语言,只要是符合 JVM 规范的都可以在 JVM 上执行,以 Python 为例,可以将 xxx.py 编译成 xxx.class 文件,也可以运行在 JVM 上,达到触类旁通。武林高手手中无剑,心中有剑,一片树叶都能当做神兵利器。
- 学习 JVM 可以更加深刻的理解 Java 这么语言,解决开发中遇到的问题也会更加游刃有余。
- 如果面试官问到 JVM,也是加薪技能,可以多要点工资。
面向人群
- 拥有一定开发经验的 Java 开发人员
- 至少学完 JavaSE(封装、继承、多态、集合、线程、泛型、装箱拆箱),低于该要求无法理解,最好已经实际做过几个项目。
- 想成为高级工程师,架构师的开发人员
- 建议先深入学习 JVM,再深入学习并发编程。没有 JVM 的功底,并发编程纸上谈兵。
参考
《Java 虚拟机规范》Tim Lindholm、Frank Yellin、Gilad Bracha、Alex Buckley 著 爱飞翔 周志明 等译
《深入理解 Java 虚拟机第 2 版》周志明
《深入理解 Java 虚拟机第 3 版》周志明
《Java 虚拟机精讲》高翔龙
《码出高效 - Java开发手册》杨冠宝 高海慧
《Java 高并发编程详解》汪文君
《Java 并发编程的艺术》方鹏飞 魏鹏 程晓明
《Java 并发编程实战》Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea 著 童云兰 等译