“知其然” 也要 “知其所以然”

学习 Java 虚拟机的 本质,了解Java 虚拟机如何被执行且优化的。

从内部入手达到高效编程的目的,为更高层次、更为核心的Java 技术打好基础。

知道核心类库API 专注业务实现,需要了解Java虚拟机吗?

API 比作数学公式,Java 虚拟机好比推到过程,掌握公式可以应付考试,了解背后的推到过程有助于记忆和理解。

遇到没有公式的情况,也可以知道如何解决。

学习Java 虚拟机的好处

配置参数 满足 不同场景 对程序性能的要求

举例来说,macOS 上的 Java 10 共有近千个配置参数:

$ java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version | wc -l
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
812

规避虚拟机Bug ,更快识别Java虚拟机错误。

Java 虚拟机本身是工程产品,实现过程自然存在不少局限性。

了解背后设计决策

Java 虚拟机有当前最前沿、最成熟的垃圾回收算法实现,已经即时编译器的实现。了解背后设计决策,在遇到其他代码托管技术可以触类旁通。

了解语音的通用机制

Java 虚拟机的发展已经脱离Java语言,形成一套相对独立、高性能的执行方案。

除了 Java 外,Scala、Clojure、Groovy,以及时下热门的 Kotlin,这些语言都可以运行在 Java 虚拟机之上。

专栏作者

甲骨文实验室高级研究员

研究如何通过程序分析技术让程序语音跑的更快。

Graal 编译器的核心开发者之一,Graal 编译器是 Java 10 正式引入的实验性即时编译器,在国内同行口中被戏称为“甲骨文黑科技”

内容:

基本原理:剖析 Java 虚拟机的运行机制,逐一介绍 Java 虚拟机的设计决策以及工程实现;

高效实现:探索 Java 编译器,以及内嵌于 Java 虚拟机中的即时编译器,帮助你更好地理解 Java 语言特性,继而写出简洁高效的代码;

代码优化:介绍如何利用工具定位并解决代码中的问题,以及在已有工具不适用的情况下,如何打造专属轮子;

虚拟机黑科技:介绍甲骨文实验室近年来的前沿工作之一 GraalVM。包括如何在 JVM 上高效运行其他语言;如何混搭这些语言,实现 Polyglot;如何将这些语言事前编译(Ahead-Of-Time,AOT)成机器指令,单独运行甚至嵌入至数据库中运行。