深入拆解 Java 虛擬機器-鄭雨迪-極客時間

王平發表於2019-03-25

極客時間出品的《深入拆解 Java 虛擬機器》由鄭雨迪所作,鄭雨迪是Oracal高階研究員,計算機博士,由雨迪手把手帶你Java虛擬機器JVM入門。

 

深入拆解 Java 虛擬機器欄目介紹

作為開發工程師,你也許會在日常程式設計中被Java的啟動效能和記憶體耗費所震驚,繼而對Java語言產生懷疑;或許在使用虛擬機器遇見記憶體溢位等一系列異常時頭疼萬分,困擾於為什麼會出現各種問題。

和語言朝夕相處的開發者們,提及程式碼的詳細執行過程也難免會一時語塞。這都是由於Java虛擬機器封裝得太好,讓使用者幾乎感覺不到它的存在。雖然這種“一次編寫,到處執行”優勢頗多,但是卻也讓我們忽略了學習Java虛擬機器的必要。

深入拆解 Java 虛擬機器

熟知Java虛擬機器的工作原理可以大幅提升日常程式設計的效率,對尋常Bug的修復更是輕而易舉。同時,這也是Java技術的重要組成成分之一,是實現技術進階必不可缺的知識。

本專欄通過揭祕Java 虛擬機器的工作原理,詳細闡述Java程式是如何被執行並且被優化的。介紹的內容並不限於某一個版本,從8到11都會涉及。通過學習此專欄,你將瞭解如何編寫高效的程式碼,如何對Bug達到最優處理,以及如何針對自己的應用調整虛擬機器的執行引數。

 

欄目作者簡介

鄭雨迪,Oracle Labs高階研究員,GraalVM編譯器組核心開發者之一。研究方向包括動態編譯及程式分析。在加入Oracle Labs前,鄭雨迪於瑞士盧加諾大學攻讀並獲得計算機博士學位。

《深入拆解 Java 虛擬機器》作者鄭雨迪

鄭雨迪在Java虛擬機器效能優化方向有多年研究經驗,在攻讀博士學位期間,鄭雨迪致力於Java位元組碼注入、Java虛擬機器監控工具方面的研究,並提出過一套針對動態編譯的解決方案。這些研究工作已發表在程式語言方向的頂級會議上,得到了不少學術界及工業界同行的認可。鄭雨迪在Oracle Labs主要負責研究如何通過程式分析,以及動態編譯讓程式語言跑得更快。工作同樣是分析效能瓶頸尋找優化空間。

 

專欄模組

本專欄共36期,分為四大模組。

模組一 Java虛擬機器基本原理

剖析Java虛擬機器的執行機制,逐次介紹Java虛擬機器的設計決策以及工程實現。

模組二 高效編譯

在本模組中,作者將帶你探索Java編譯器,以及內嵌於Java虛擬機器中的即時編譯器,幫助你更好地理解Java語言特性,繼而寫出簡潔高效的程式碼。

模組三 程式碼優化

在實踐過程中我們經常會遇到形形色色的效能問題,解決方法不外乎加機器加記憶體。本模組將介紹上述方法失效後的Plan B,即如何利用工具定位並解決程式碼中的潛在問題,以及在已有工具不適用的情況下,如何打造專屬輪子。此外,本模組還將介紹對JVM記憶體管理失去信心的開發者所選取的解決方案,以備不時之需。

模組四 虛擬機器黑科技

當一門程式語言成熟穩定後,技術大神們便熱衷於用這種語言開發實現編譯器或虛擬機器。在Java 10中,Graal已作為試驗性即時編譯器一同釋出。本模組將詳細科普GraalVM的各個組成部分,其中包括編譯器Graal,語言實現框架Truffle,以及支援Ahead-of-Time(AOT)編譯的SubstrateVM。

 

深入拆解JAVA虛擬機器專欄詳細目錄

1)開篇詞•為什麼我們要學習Java虛擬機器

2)Java的基本型別

3)JVM是如何載入Java類的?

4)JVM是如何執行方法呼叫的?(上)

5)JVM是如何執行方法呼叫的?(下)

6)JVM是如何處理異常的?

7)JVM是如何實現反射的?

8)Java 8的Lambda表示式是怎麼執行的?

9)JVM構造物件的步驟都有哪些?

10)什麼是垃圾收集?

11)JVM是如何實現同步的?

12)Java記憶體模型是什麼?

13)JVM的安全點是什麼?

14)javac是如何編譯Java原始碼的?

15)如何使用註解直譯器?

16)如何觸發即時編譯?

17)即時編譯器與常規的靜態編譯器有哪些不同?

18)即時編譯器有哪些優化?

19)在什麼情況下重複讀寫操作會被優化?

20)在什麼情況下迴圈程式碼會被優化?

21)在什麼情況下物件分配會被優化?

22)在什麼情況下方法呼叫會被內聯?

23)什麼是intrinsics ?為什麼它們非常高效?

24)如何寫出適用向量化計算的程式碼?

25)如何理解JVM內建的編譯或GC日誌?

26)如何利用JFR和JMC監控Java程式?

27)如何利用MAT分析Java程式的堆使用狀況?

28)如何利用JMH評估程式碼效能?

29)如何在Java程式碼中與C++程式碼父互?

30)如何利用JVMTI監聽JVM事件?

31)如何利用位元組碼注入為已有程式碼加料?

32)如何利用Unsafe AP丨繞開JVM的控制?

33)Graal:用 Java 編譯 Java

34)Truffle:用Java編譯其他語言

35)SubstrateVM:用Java編譯虛擬機器

36)Metropolis: Java-on-Java 的展望

 

訂閱須知

適宜人群:希望瞭解底層Java虛擬機器實現的開發者。有一定Java基礎,希望達成技術進階的Java工程師。希望在面試中對答如流的Java語言應聘者,以及希望考倒應聘者的面試官們。想要了解 Oracle GraalVM黑科技,或考慮藉此技術轉型的開發人員。

專欄由極客時間出品,可在極客時間APP和小程式上學習。

本專欄為訂閱專欄,形式為圖文+音訊,共計36期,定價99元。

掃我下方二維碼報名,我們可額外各得9元,報名後記得加我微信:dismissmewp,備註:返現。好返你9元哈哈。也可以通過下面連結報名:http://gk.link/a/102IK

《深入拆解 Java 虛擬機器》價格

 

更多極客時間Java相關專欄:

Java核心面試技術36講-楊曉峰

Java併發程式設計實戰-王寶令

MySQL實戰45講-林曉斌

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章