宝贝介绍
你将获得
- Java 工程师进阶加薪必修课;
- 4 大模块全方位拆解 JVM;
- 帮助你编写高效 Java 代码;
- 揭秘 Oracle 最新 Java 黑科技。
讲师介绍
郑雨迪,Oracle Labs 高级研究员,GraalVM 编译器组核心开发者之一。研究方向包括动态编译及程序分析。在加入 Oracle Labs 前,郑雨迪于瑞士卢加诺大学攻读并获得计算机博士学位。
郑雨迪在 Java 虚拟机性能优化方向有多年研究经验,在攻读博士学位期间,郑雨迪致力于 Java 字节码注入、Java 虚拟机监控工具方面的研究,并提出过一套针对动态编译的解决方案。这些研究工作已发表在程序语言方向的顶级会议上,得到了不少学术界及工业界同行的认可。郑雨迪在 Oracle Labs 主要负责研究如何通过程序分析,以及动态编译让程序语言跑得更快。工作同样是分析性能瓶颈寻找优化空间。
课程介绍
作为开发工程师,你也许会在日常编程中被 Java 的启动性能和内存耗费所震惊,继而对 Java 语言产生怀疑;或许在使用虚拟机遇见内存溢出等一系列异常时头疼万分,困扰于为什么会出现各种问题。
和语言朝夕相处的开发者们,提及代码的详细运行过程也难免会一时语塞。这都是由于 Java 虚拟机封装得太好,让使用者几乎感觉不到它的存在。虽然这种「一次编写,到处运行」优势颇多,但是却也让我们忽略了学习 Java 虚拟机的必要。
熟知 Java 虚拟机的工作原理可以大幅提升日常编程的效率,对寻常 Bug 的修复更是轻而易举。同时,这也是 Java 技术的重要组成成分之一,是实现技术进阶必不可缺的知识。
本专栏通过揭秘 Java 虚拟机的工作原理,详细阐述 Java 程序是如何被执行并且被优化的。介绍的内容并不限于某一个版本,从 8 到 11 都会涉及。通过学习此专栏,你将了解如何编写高效的代码,如何对 Bug 达到最优处理,以及如何针对自己的应用调整虚拟机的运行参数。
本专栏共 36 期,分为四大模块。
模块一 Java 虚拟机基本原理
剖析 Java 虚拟机的运行机制,逐次介绍 Java 虚拟机的设计决策以及工程实现。
模块二 高效编译
在本模块中,作者将带你探索 Java 编译器,以及内嵌于 Java 虚拟机中的即时编译器,帮助你更好地理解 Java 语言特性,继而写出简洁高效的代码。
模块三 代码优化
在实践过程中我们经常会遇到形形色色的性能问题,解决方法不外乎加机器加内存。本模块将介绍上述方法失效后的 Plan B,即如何利用工具定位并解决代码中的潜在问题,以及在已有工具不适用的情况下,如何打造专属轮子。此外,本模块还将介绍对 JVM 内存管理失去信心的开发者所选取的解决方案,以备不时之需。
模块四 虚拟机黑科技
当一门程序语言成熟稳定后,技术大神们便热衷于用这种语言开发实现编译器或虚拟机。在 Java 10 中,Graal 已作为试验性即时编译器一同发布。本模块将详细科普 GraalVM 的各个组成部分,其中包括编译器 Graal,语言实现框架 Truffle,以及支持 Ahead-of-Time (AOT) 编译的 SubstrateVM。
课程目录
开篇词 (1 讲)
开篇词 | 为什么我们要学习 Java 虚拟机?
模块一:Java 虚拟机基本原理 (12 讲)
01 | Java 代码是怎么运行的?
02 | Java 的基本类型
03 | Java 虚拟机是如何加载 Java 类的 ?
04 | JVM 是如何执行方法调用的?(上)
05 | JVM 是如何执行方法调用的?(下)
06 | JVM 是如何处理异常的?
07 | JVM 是如何实现反射的?
08 | JVM 是怎么实现 invokedynamic 的?(上)
09 | JVM 是怎么实现 invokedynamic 的?(下)
10 | Java 对象的内存布局
11 | 垃圾回收 (上)
12 | 垃圾回收 (下)
模块二:高效编译 (12 讲)
【工具篇】 常用工具介绍
13 | Java 内存模型
14 | Java 虚拟机是怎么实现 synchronized 的?
15 | Java 语法糖与 Java 编译器
16 | 即时编译 (上)
17 | 即时编译 (下)
18 | 即时编译器的中间表达形式
19 | Java 字节码 (基础篇)
20 | 方法内联 (上)
21 | 方法内联 (下)
22 | HotSpot 虚拟机的 intrinsic
23 | 逃逸分析
模块三:代码优化 (10 讲)
24 | 字段访问相关优化
25 | 循环优化
26 | 向量化
27 | 注解处理器
28 | 基准测试框架 JMH (上)
29 | 基准测试框架 JMH (下)
30 | Java 虚拟机的监控及诊断工具 (命令行篇)
31 | Java 虚拟机的监控及诊断工具 (GUI 篇)
32 | JNI 的运行机制
33 | Java Agent 与字节码注入
模块四:黑科技 (3 讲)
34 | Graal:用 Java 编译 Java
35 | Truffle:语言实现框架
36 | SubstrateVM:AOT 编译框架
尾声 (2 讲)
尾声 | 道阻且长,努力加餐
结课测试 | 这些 Java 虚拟机的知识你都掌握了吗?
适合人群
- 希望了解底层 Java 虚拟机实现的开发者。
- 有一定 Java 基础,希望达成技术进阶的 Java 工程师。
- 希望在面试中对答如流的 Java 语言应聘者,以及希望考倒应聘者的面试官们。
- 想要了解 Oracle GraalVM 黑科技,或考虑借此技术转型的开发人员。
注册向导
当你收到授权后,可以通过以下步骤兑换课程:
网页版兑换过程请按照以下步骤操作:
一、通过下方链接地址访问官方兑换网站:
https://time.geekbang.org/service/exchange
二、进入官网后,点击网页右上角的「登陆」按钮:
-
三、在转跳的网页中,任选一种登陆方式登陆账号,
-
四、在转跳的网页中,输入「兑换码 > 验证码」点击「立即验证」即可解锁全部课程。
-
手机版兑换过程请按照以下步骤操作:
一、打开「极客时间」官方 App,依次点击菜单栏「我的 > 点击登陆 > 登陆账号」按钮:
-
二、登陆后返回首页,依次点击「我的 > 兑换中心 > 立即兑换」按钮:
-
三、在弹出的窗口中,输入「兑换码」点击「立即验证」即可解锁全部课程。
-
常见问题
如果你在使用过程中遇到问题,可访问以下链接,前往我们的官方网站查看常见问题的解决方案。