“知其然” 也要 “知其所以然”
學(xué)習 Java 虛擬機的 本質(zhì)猴娩,了解Java 虛擬機如何被執(zhí)行且優(yōu)化的阴幌。
從內(nèi)部入手達到高效編程的目的,為更高層次卷中、更為核心的Java 技術(shù)打好基礎(chǔ)矛双。
知道核心類庫API 專注業(yè)務(wù)實現(xiàn),需要了解Java虛擬機嗎蟆豫?
API 比作數(shù)學(xué)公式议忽,Java 虛擬機好比推到過程,掌握公式可以應(yīng)付考試十减,了解背后的推到過程有助于記憶和理解栈幸。
遇到?jīng)]有公式的情況愤估,也可以知道如何解決。
學(xué)習Java 虛擬機的好處
- 配置參數(shù) 滿足 不同場景 對程序性能的要求
舉例來說速址,macOS 上的 Java 10 共有近千個配置參數(shù):
$ 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
規(guī)避虛擬機Bug 玩焰,更快識別Java虛擬機錯誤。
Java 虛擬機本身是工程產(chǎn)品芍锚,實現(xiàn)過程自然存在不少局限性昔园。了解背后設(shè)計決策
Java 虛擬機有當前最前沿、最成熟的垃圾回收算法實現(xiàn)并炮,已經(jīng)即時編譯器的實現(xiàn)默刚。了解背后設(shè)計決策,在遇到其他代碼托管技術(shù)可以觸類旁通渣触。了解語音的通用機制
Java 虛擬機的發(fā)展已經(jīng)脫離Java語言羡棵,形成一套相對獨立、高性能的執(zhí)行方案嗅钻。
除了 Java 外皂冰,Scala、Clojure养篓、Groovy秃流,以及時下熱門的 Kotlin,這些語言都可以運行在 Java 虛擬機之上柳弄。
專欄作者
甲骨文實驗室高級研究員
研究如何通過程序分析技術(shù)讓程序語音跑的更快舶胀。
Graal 編譯器的核心開發(fā)者之一,Graal 編譯器是 Java 10 正式引入的實驗性即時編譯器碧注,在國內(nèi)同行口中被戲稱為“甲骨文黑科技”
內(nèi)容:
基本原理:剖析 Java 虛擬機的運行機制嚣伐,逐一介紹 Java 虛擬機的設(shè)計決策以及工程實現(xiàn);
高效實現(xiàn):探索 Java 編譯器萍丐,以及內(nèi)嵌于 Java 虛擬機中的即時編譯器轩端,幫助你更好地理解 Java 語言特性,繼而寫出簡潔高效的代碼逝变;
代碼優(yōu)化:介紹如何利用工具定位并解決代碼中的問題基茵,以及在已有工具不適用的情況下,如何打造專屬輪子壳影;
虛擬機黑科技:介紹甲骨文實驗室近年來的前沿工作之一 GraalVM拱层。包括如何在 JVM 上高效運行其他語言;如何混搭這些語言宴咧,實現(xiàn) Polyglot根灯;如何將這些語言事前編譯(Ahead-Of-Time,AOT)成機器指令,單獨運行甚至嵌入至數(shù)據(jù)庫中運行烙肺。