大神級程序員修煉之道!阿里,京東大咖力薦的Java編譯器筆記

這份資料獻給對Java無盡追求的人

資深程序員深入剖析工業級編譯器Javac的源碼實現

全面講解從Java源代碼到生成Class文件的每個過程

Java是一門流行多年的高級編程語言,相關的就業崗位很多,但是最近幾年卻出現了用人單位招不到人,大量研發人員找不到工作的尷尬局面。究其根本原因還是崗位對技術的要求高,不但要會應用,更要懂其內部的運行原理。對於想要深入研究Java 的從業者來說,目前國內市場上還沒有一本剖析Java 編譯器(Javac)源碼的書籍,也沒有一本剖析工業級編譯器源碼的書籍,這正是本書要填補的市場空白。

本書以工業級編譯器Javac的源代碼爲基礎,詳細介紹了詞法分析、語法分析、語義分析及代碼生成等各個階段的具體實現,同時對重點源代碼的實現進行了詳細解讀,讓讀者能真正掌握從Java源代碼變爲Class文件的每個過程。

本書學習路線

內文展示:

需要獲取的小夥伴可以直接轉發後私信(學習)即可獲取!

第1章Javac介紹

第1章介紹了Javac的目錄結構及源代碼調試,同時對Javac支持的編譯命令的實現進行了簡單介紹。

第2章Javac文件系統

第2章介紹了Javac操作文件(如讀取.java文件、讀取JAR包)相關的類。

第3章詞法分析

第3章介紹了Javac將讀取到的Java源代碼的字符流轉換爲Token流的過程。

第4章語法分析之認識樹節點

第4章介紹了抽象語法樹的每個樹節點,這些樹節點可以大概劃分爲定義及聲明、語句與表達式。

第5章語法分析之建立抽象語法樹

第5章介紹瞭如何建立抽象語法樹,即Javac根據Token流建立一個完整的抽象語法樹。

第6章符號表的組織

第6章介紹了符號表的結構,同時也對Javac中使用的符號及類型做了詳細介紹。

第7章填充符號表

第7章進行符號表的填充,分兩個階段對抽象語法樹進行掃描,然後向符號表中填充相關的符號

第8章插入式註解的實現

第8章介紹了插入式註解的實現內容

第9章語義分析之類型轉換

第9章介紹了Java的類轉型,重點介紹了賦值轉換,方法調用轉換等等

第10章語義分析之語法檢查

第10章介紹了語法檢查,主要是針對類型定義,變量定義及方法定義的合法性進行檢查

第11章語義分析之引用消解

第11章介紹了引用消解,主要是查找表達式中所引用的唯一符號,Resolve類中提供了對類型引用、變量引用及方法引用的具體查找方法。

第12章語義分析之語法樹標註

第12章對抽象語法樹進行了類型與符號標註,重點介紹了一些重要樹節點,如JCIdent和 JCFieldAccess 等的具體標註過程。

第13章泛型的實現

第13章介紹了泛型的實現。泛型類型或泛型方法等與泛型相關的特性完全由編譯器來支持,而在後續生成Class文件的過程中需要對泛型進行擦除。

第14章數據流檢查

第14章介紹了數據流分析,分別從變量賦值、語句活躍性及異常這3個方面對if判斷語句、循環語句及 try語句等進行分析。

第15章語法糖去除

第15章介紹了語法糖去除,分別對簡單的語法糖、語句語法糖、枚舉類語法糖與內部類語法糖進行分析。

第16章字節碼指令生成

第16章介紹了字節碼指令的生成,通過簡單模擬Java虛擬機運行時的情況來更好地生成字節碼指令。

第17章重要結構的字節碼指令生成

第17章介紹了重要結構的字節碼指令生成,對一些常見的控制結構,如if語句、循環語句、switch語句及try語句等指令的生成過程進行了詳細介紹。

第18章生成Class文件

第18章介紹了Class文件的生成,根據Class文件規範生成可被Java虛擬機加載運行

下面是本書的目錄內容,需要的小夥伴可以直接轉發+關注後私信(學習)即可免費獲取到這本書籍!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章