极客时间《深入拆解Java虚拟机》 | 郑雨迪 | Oracle高级研究员
好记性不如烂笔头,做下笔记顺便加强一下记忆,之前了解虚拟机笔记零散,准备借此机会梳理一下。
为什么我们要学习Java虚拟机?
“知其然”也要“知其所以然”,学习Java虚拟机的本质,更多是了解Java程序是如何被执行且优化的。这样一来,你才可以从内部入手,达到高效编程的目的。与此同时,你也可以为学习更深层级、更为核心的Java技术打好基础。
了解Java虚拟机有如下好处:
优化:Java虚拟机提供了很多配置参数,用于满足不同应用场景下,对程序性能的需求。学习Java虚拟机,你可以针对自己的应用,最优化匹配运行参数。
避险:Java虚拟机本身是一种工程产品,在实现过程中自然存在不少局限性。学习Java虚拟机,可以更好地规避它在使用过程中的bug,也可以更快地识别出Java虚拟机中的错误。
触类旁通:Java虚拟机拥有当前最前沿、最成熟的垃圾回收算法,以及即时编译器实现。学习Java虚拟机,我们可以了解其背后的设计决策,今后再遇到其他代码托管技术也能触类旁通。
百发齐放:Java虚拟机发展到今天,已经脱离Java语言,形成一套相对独立的、高性能的执行方案。除了Java以外,Scala、Clojure、Groovy,以及时下热门的Kotlin,这些语言都可以运行在Java虚拟机上。学习Java虚拟机,便可以了解这些语言的通用机制,甚至于让这些语言共享生态系统。
基本原理
剖析Java虚拟机的运行机制,逐一介绍Java虚拟机的设计决策以及工程实现。
高效实现
探索Java编译器,以及内嵌于Java虚拟机中的即时编译器,帮助你更好地理解Java语言特性,继而写出简洁高效的代码。
代码优化
介绍如何利用工具定位并解决代码中的问题,以及在已有工具不适用的情况下,打造专属轮子。
虚拟机黑科技
介绍甲骨文实验室近年来的前沿工作之——GraalVM。包括如何在JVM上高效运行其他语言;如何混搭这些编程语言,实现Polyglot;如何将这些语言事前编译(Ahead-Of-Time, AOT)成机器指令,单独运行甚至嵌入数据库中运行。