写点什么

写给 Java 程序员的 Java 虚拟机学习指南

  • 2019-03-14
  • 本文字数:2190 字

    阅读完需:约 7 分钟

写给Java程序员的Java虚拟机学习指南

大家好,我是极客时间《深入拆解Java虚拟机》作者、Oracle Labs 高级研究员郑雨迪。有幸借这个专题的机会,能和大家分享为何 Java 工程师要学 Java 虚拟机?如何掌握 Java 虚拟机?

工欲善其事,必先利其器

“为什么学 Java 虚拟机”这个问题,就和“为什么要学习数据结构和算法”是一个道理:工欲善其事,必先利其器。


我总结了三点必须要学好 Java 虚拟机的理由:


  • Java 已然是一门主流的工程语言,拥有大量的应用。作为 Java 语言的执行引擎,Java 虚拟机的调优一直是热点话题,成为各大厂面试的压轴题。

  • 此外,主流的 Java 虚拟机–也就是 OpenJDK 的 HotSpot VM–是完全开源的。只要读得懂 C++代码,便能够绕开网络上的“二手”资料,直面 Java 实现的核心逻辑。

  • Java 在不断地增添新特性、新功能,其中不少都“借鉴”自其他编程语言。同样,通过学习 Java 虚拟机,在遇到其他语言实现时也能够触类旁通,迅速地完成调优、排错工作。


另外,我注意到国内大厂不再只满足于使用开源项目,而是积极参与这些项目的开发。例如 Alibaba 在去年便已成为 OpenJDK 项目执行委员会的一员,可以左右 Java 语言的发展。一旦越来越多的大厂加大对底层、对这些开源项目的投入,势必会产生许多对高精尖技术专家的需求。


所以,作为一名 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,你还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策,不会一脸懵逼的上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。


那该如何揭开 Java 虚拟机迷雾,深入底层,将 Java 虚拟机拿下?我分为 3 个阶段来分享,每个阶段大家又该具备哪些技能?


先附上一张我制作的「Java 虚拟机知识框架图」,涵盖了 Java 虚拟机的所有学习要点,建议保存。



一、Java 虚拟机新手入门


虽然我们和语言朝夕相处,但不少人提及代码的详细运行过程也难免会一时语塞。这都是由于 Java 虚拟机封装得太好,让使用者几乎感觉不到它的存在,也导致不少初学者学习 Java 虚拟机时摸不着头脑,找不到脉络。


Java 虚拟机的基本原理及运行机制,对于初学者来说,是必须要掌握的,至少我是这么要求的。不然根基不牢,何来平地高楼起。


所以我也花了一整个模块的篇幅来逐次介绍 Java 虚拟机的设计决策以及工程实现,让大家在学习 Java 虚拟机时,可以知其然,也要知其所以然。


以下是专栏里的部分原理内容,大家对照着,看看是否已掌握。


Java 代码有很多种运行方式,那 Java 虚拟机具体是怎样运行 Java 字节码的?[第1讲 | Java代码是怎么运行的?]


boolean 在 Java 虚拟机是以整数形式表示的–0 代表 false,1 代表 true。那么 2 又代表什么呢?为什么要这样设计?[第2讲 | Java的基本类型]


二、进阶 Java 虚拟机


告别了 GRUD 研究员,如果你想再进一步进阶,那么以下是知识点是你必须要掌握的。弄懂了这些,你基本上掌握了面试官 80%的问题。


怎么判定对象已经“死去”?垃圾回收的原理是什么? [第11讲 | 垃圾回收(上)]


Java 虚拟机的堆是如何划分的? [第12讲 | 垃圾回收(下)]


当然,我希望大家能系统学习 Java 虚拟机,而不是为了面试去刷题。更要的是希望这个专栏能激发出大家学习 Java 虚拟机乃至其他底层工作、前沿工作的热情。


就像我开设这个专栏一样,为不辜负大家的信任,我几乎每篇专栏都会大量阅读 HotSpot 的源代码,和同事讨论实现背后的设计理念,在这个过程中,我也发现了一些 HotSpot 中的 Bug,或者年久失修的代码,又或者是设计不合理的地方。苦中有乐,忙碌中又有惊喜。


三、Java 虚拟机高手


在我的专栏中,有一条令我印象颇深的留言,讲的是他如何解决反射调用效率低下的问题。之所以印象深刻,是因为他的做法和 Java 虚拟机中附带的自动优化方式完全一致。换个角度来看,他其实已经具备为 Java 虚拟机设计优化的能力,也完全可以将这一优化实现回馈给 OpenJDK 社区。


举一反三,主动的解决问题,且能回馈开源。这必然是高手需要具备的能力之一。


这时候大家必须去想的一个问题:如何让 Java(以及其他 Java 虚拟机语言,如 Scala、Kotlin 等)跑得更快?


主要分三个方面去考虑:


什么是虚方法调用?如何消除虚方法调用开销?[第20讲 | 方法内联]


Java 虚拟机是如何进行硬件加速的?[第22讲 | HotSpot虚拟机的intrinsic]


我需要手工避免 new 语句吗?[第23讲 | 逃逸分析]


再之,Java 虚拟机有很多工具,需要大家熟练掌握,比如 javap–能够将 class 文件反汇编人类可读格式的工具;OpenJDK 项目 Code Tools–包含了好几个实用小工具,又或者是 ASM–Java 字节码框架等等。


在专栏里,我专门有几篇文章来介绍各类工具的使用:


如何通过注解处理器自动生成业务逻辑? [第27讲 | 注解处理器]


如何标准化地衡量程序性能? [第28讲 | 基准测试框架]


作者介绍


郑雨迪,甲骨文实验室(Oracle Labs)的高级研究员,主要负责研究如何通过程序分析技术以及动态编译技术让程序语言跑得更快。同时,也是全栈虚拟机 Graal 编译器的核心开发者之一,在为 HotSpot 虚拟机项目添砖加瓦。


通过学习《深入拆解 Java 虚拟机》,你将获得:


  • Java 工程师进阶加薪必修课

  • 4 大模块全方位拆解 JVM

  • 帮助你编写高效 Java 代码

  • 揭秘 Oracle 最新的 Java 黑科技


戳此订阅:《深入拆解Java虚拟机》这个专栏涨价倒计时最后 5 天,从 68 元直接涨到 99 元,现参团只要 58 元。


2019-03-14 15:425124

评论

发布
暂无评论
发现更多内容

7大海外社交媒体监测服务深度横评:数据与功能

沃观Wovision

社媒监测 海外社交媒体监控 社交媒体监测 社媒分析

AI 智能体的开发方法

北京木奇移动技术有限公司

AI应用 AI智能体 软件外包公司

Java 应用容器化与部署

码界行者

Java Docker 容器化部署

区块链 Web3 项目的开发流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

AI 口语学习 App 的开发方法

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

数字乡村AI综合治理大数据平台:用“数据铁脚板”破解基层治理“最后一公里”难题

上海拔俗

TikTok、Facebook还是Instagram?海外网红推广主流平台选择指南

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 海外红人营销

触“见”世界:基于Rokid AI眼镜的视障人士环境感知系统

鸽芷咕

人工智能 AR

驱动全球增长:必备的海外社交媒体监测服务

沃观Wovision

海外舆情监测 出海舆情 出海媒体监测 媒体监测 社媒分析

Dragonboat统一存储LogDB实现分析|得物技术

得物技术

后端技术 #后端

Tenable补丁管理修复JRE组件漏洞安全通告

qife122

网络安全 漏洞管理

AI 数据分析产品推荐:更高效、更可控的智能报告解决方案

Aloudata

数据分析 ChatBI 智能问数 智能报告 dataagent

AI 英语学习 App 的开发流程

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

quic协议监听与Alt-Svc响应头的应用

天翼云开发者社区

CDN

效率翻倍:5款海外网红推广营销必备工具

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

一文看懂,如何找对正版Altair软件代理商!正版HyperWorks价格多少

智造软件

CAE CAE软件 altair CAE仿真

面向中小企业的IT基础设施选型:超融合方案的架构特点与适用场景

智驱前线

深入理解分布式共识算法 Raft

京东科技开发者

选择前必看:评估海外社交媒体监测服务的8个关键问题

沃观Wovision

社交媒体 海外舆情监测 社交媒体监控 海外社交媒体监控 社媒分析

traffic server双向认证介绍

天翼云开发者社区

CDN

2026社交媒体营销趋势:AI、视频与私域流量的崛起

Wolink

跨境电商 外贸 海外社媒营销 海外营销推广 海外红人营销

从点赞到成交:打通社交媒体营销与销售转化的最后一步

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 海外红人营销

AI时代:2026海外营销的5大趋势与应对策略

Wolink

跨境贸易 海外社媒营销 海外营销推广 海外红人营销

解读西格电力光伏四可装置:可观、可测、可控、可调的技术内涵

西格电力

分布式光伏并网 光伏四可装置 分布式光伏发电 分布式光伏 分布式光伏产品

低代码开发平台有哪些,2025国内低代码开发平台全景报告

科技经济

一键发售token、pump\pinksale这些私募平台是怎么运营的、竟然上线币安交易所了(盈利模式和市场需求)

西安链酷科技

京东云海存储成为全球最大规模基于国产CPU的AI存储技术应用

京东科技开发者

B2B企业海外营销:从线索到忠诚客户的全流程营销蓝图

Wolink

外贸 外贸服务 海外社媒营销 海外营销推广 海外红人营销

告别错单漏装!这款家具组装MES 让定制交付又快又准

万界星空科技

mes 万界星空科技mes 制造业转型 家具行业 家具mes

写给Java程序员的Java虚拟机学习指南_语言 & 开发_郑雨迪_InfoQ精选文章