書馨卡幫你省薪 2024個人購書報告 2024中圖網(wǎng)年度報告
歡迎光臨中圖網(wǎng) 請 | 注冊
> >>
深入解析Java編譯器:源碼剖析與實例詳解

深入解析Java編譯器:源碼剖析與實例詳解

作者:馬智
出版社:機械工業(yè)出版社出版時間:2020-01-01
開本: 16開 頁數(shù): 668
中 圖 價:¥143.2(8.0折) 定價  ¥179.0 登錄后可看到會員價
加入購物車 收藏
運費6元,滿39元免運費
?新疆、西藏除外
本類五星書更多>

深入解析Java編譯器:源碼剖析與實例詳解 版權信息

深入解析Java編譯器:源碼剖析與實例詳解 本書特色

《深入解析Java編譯器:源碼剖析與實例詳解》以工業(yè)級編譯器Javac的源代碼為基礎,詳細介紹了詞法分析、語法分析、語義分析及代碼生成 等各個階段的具體實現(xiàn),同時對重點源代碼的實現(xiàn)進行了詳細解讀,讓讀者能真正掌握從Java源代碼變?yōu)镃lass文件的每個過程。 《深入解析Java編譯器:源碼剖析與實例詳解》共18章,章節(jié)的前后順序與Javac編譯Java源代碼的順序嚴格對應,涵蓋的主要內容有Javac介紹、Javac文件系統(tǒng)、詞法分析、語法分析之認識樹節(jié)點、語法分析之建立抽象語法樹、符號表的組織、填充符號表、插入式注解的實現(xiàn)、語義分析之類型轉換、語義分析之語法檢查、語義分析之引用消解、語義分析之語法樹標注、泛型的實現(xiàn)、數(shù)據(jù)流檢查、語法糖去除、字節(jié)碼指令生成、重要結構的字節(jié)碼指令生成、生成Class文件。同時,為了讀者能更好地查閱相關信息,《深入解析Java編譯器:源碼剖析與實例詳解》在附錄中給出了Javac命令、文法、類型常見操作、符號常見操作和虛擬機字節(jié)碼指令表的相關內容。 《深入解析Java編譯器:源碼剖析與實例詳解》語言簡潔,實例豐富,適合Java從業(yè)人員閱讀,可以幫助他們深入理解Javac如何支持Java語言的諸多特性,如泛型等;也適合對編譯器感興趣的讀者閱讀,可以幫助他們真正掌握如何將編譯器相關的理論知識應用到開發(fā)實踐中。

深入解析Java編譯器:源碼剖析與實例詳解 內容簡介

資深程序員深入剖析工業(yè)級編譯器Javac的源碼實現(xiàn)
全面講解從Java源代碼到生成Class文件的每個過程
對Java編譯器各編譯階段的源代碼實現(xiàn)進行了詳細介紹
用大量圖示和實例帶領讀者真正掌握Java編譯器的具體實現(xiàn)
幫助讀者深入理解Javac如何支持Java語言的諸多特性
讓讀者能真正理解如何將編譯器的相關理論知識應用到開發(fā)實踐中
《深入解析Java編譯器:源碼剖析與實例詳解》核心內容:
Javac介紹
Javac文件系統(tǒng)
詞法分析
語法分析之認識樹節(jié)點
語法分析之建立抽象語法樹
符號表的組織、填充符號表
插入式注解的實現(xiàn)
語義分析之類型轉換
語義分析之語法檢查
語義分析之引用消解
語義分析之語法樹標注
泛型的實現(xiàn)資深程序員深入剖析工業(yè)級編譯器Javac的源碼實現(xiàn) 全面講解從Java源代碼到生成Class文件的每個過程 對Java編譯器各編譯階段的源代碼實現(xiàn)進行了詳細介紹 用大量圖示和實例帶領讀者真正掌握Java編譯器的具體實現(xiàn) 幫助讀者深入理解Javac如何支持Java語言的諸多特性 讓讀者能真正理解如何將編譯器的相關理論知識應用到開發(fā)實踐中 《深入解析Java編譯器:源碼剖析與實例詳解》核心內容: Javac介紹 Javac文件系統(tǒng) 詞法分析 語法分析之認識樹節(jié)點 語法分析之建立抽象語法樹 符號表的組織、填充符號表 插入式注解的實現(xiàn) 語義分析之類型轉換 語義分析之語法檢查 語義分析之引用消解 語義分析之語法樹標注 泛型的實現(xiàn) 數(shù)據(jù)流檢查 語法糖去除 字節(jié)碼指令生成 重要結構的字節(jié)碼指令生成 生成Class文件 Javac命令 文法 類型常見操作 符號常見操作 虛擬機字節(jié)碼指令表

深入解析Java編譯器:源碼剖析與實例詳解 目錄

前言
第1章 Javac介紹1
1.1 初識Javac1
1.2 Javac源碼與調試4
1.3 Javac命令7
第2章 Javac文件系統(tǒng)12
2.1 文件相關實現(xiàn)類12
2.2 文件的管理25
2.2.1 獲取JavacFileManager對象25
2.2.2 StandardLocation類28
2.2.3 JavacFileManager類31
第3章 詞法分析38
3.1 字符編碼38
3.2 獲取字符輸入流40
3.3 Token與Name43
3.3.1 Token介紹44
3.3.2 Name對象的生成與存儲47
3.3.3 Name映射為Token51
3.4 生成Token流52
第4章 語法分析之認識樹節(jié)點67
4.1 定義及聲明68
4.1.1 JCCompilationUnit類68
4.1.2 JCImport類69
4.1.3 JCClassDecl類70
4.1.4 JCModifiers類71
4.1.5 JCTypeParameter類72
4.1.6 JCVariableDecl類72
4.1.7 JCMethodDecl類74
4.2 語句75
4.2.1 JCBlock類75
4.2.2 JCIf類76
4.2.3 JCWhileLoop、JCDoWhileLoop、JCForLoop與JCEnhancedForLoop類78
4.2.4 JCSwitch與JCCase類79
4.2.5 JCTry、JCCatch與JCThrow類81
4.2.6 JCLabeledStatement、JCReturn、JCContinue與JCBreak類82
4.2.7 JCSynchronized類83
4.2.8 JCAssert類83
4.3 表達式83
4.3.1 基本表達式84
4.3.2 含運算符的表達式88
4.3.3 類型相關表達式94
4.3.4 注解表達式97
4.4 生成樹節(jié)點98
第5章 語法分析之建立抽象語法樹101
5.1 定義及聲明的抽象語法樹101
5.2 語句的抽象語法樹112
5.3 表達式的抽象語法樹121
5.3.1 基本表達式122
5.3.2 含有運算符的表達式134
5.4 遍歷抽象語法樹140
第6章 符號表的組織143
6.1 符號的定義143
6.1.1 Symbol類144
6.1.2 TypeSymbol及其子類150
6.1.3 VarSymbol類154
6.1.4 MethodSymbol及OperatorSymbol類154
6.2 符號表的組織160
6.2.1 Env類介紹160
6.2.2 AttrContext類介紹162
6.2.3 Scope類介紹163
6.2.4 符號表的建立164
6.3 類型的定義169
6.3.1 普通類型的定義169
6.3.2 泛型相關類型的定義175
第7章 填充符號表180
7.1 依賴的處理180
7.1.1 創(chuàng)建包或類符號180
7.1.2 輸入包或類下的成員符號184
7.2 符號輸入的**階段189
7.2.1 Enter類190
7.2.2 visitTopLevel()方法192
7.2.3 visitClassDef()方法193
7.2.4 visitTypeParameter()方法196
7.3 符號輸入第二階段197
7.3.1 MemberEnter類197
7.3.2 visitImport()方法200
7.3.3 visitMethodDef()方法207
7.3.4 visitVarDef()方法209
第8章 插入式注解的實現(xiàn)211
8.1 注解處理器基礎211
8.1.1 編寫注解處理器211
8.1.2 注解配置215
8.1.3 工具類215
8.2 初始化注解處理器222
8.3 運行注解處理器226
第9章 語義分析之類型轉換233
9.1 類型轉換的種類233
9.2 賦值轉換245
9.3 方法調用轉換253
9.4 強制類型轉換254
9.5 數(shù)字提升266
第10章 語義分析之語法檢查269
10.1 類型定義的檢查269
10.1.1 父類及實現(xiàn)接口的檢查269
10.1.2 類型定義的唯一性檢查273
10.1.3 類型中方法的兼容性檢查276
10.1.4 類型中實現(xiàn)方法的檢查287
10.2 變量定義的檢查294
10.3 方法定義的檢查296
10.3.1 方法的唯一性檢查296
10.3.2 方法的隱藏298
10.3.3 方法的覆寫303
第11章 語義分析之引用消解307
11.1 Resolve類介紹307
11.2 類型引用的消解310
11.3 變量引用的消解320
11.4 方法引用的消解323
第12章 語義分析之語法樹標注345
12.1 Attr類介紹346
12.2 表達式相關樹節(jié)點的標注348
12.2.1 JCUnary樹節(jié)點標注348
12.2.2 JCBinary樹節(jié)點的標注350
12.2.3 JCAssignOp樹節(jié)點的標注351
12.3 JCIdent樹節(jié)點的標注351
12.4 JCFieldAccess樹節(jié)點的標注354
第13章 泛型的實現(xiàn)361
13.1 泛型類型361
13.2 泛型方法364
13.2.1 類型推斷365
13.2.2 鉆石語法383
13.3 泛型擦除386
第14章 數(shù)據(jù)流檢查396
14.1 Flow類介紹396
14.1.1 語句的活躍性分析396
14.1.2 變量賦值檢查398
14.1.3 異常檢查405
14.2 if語句的分析405
14.2.1 if語句405
14.2.2 一元表達式與if語句409
14.2.3 二元表達式與if語句410
14.2.4 三元表達式與if語句412
14.3 循環(huán)語句的分析413
14.3.1 for語句413
14.3.2 中斷循環(huán)語句416
14.4 try語句與throw語句的分析419
14.4.1 拋出異常419
14.4.2 異常檢查424
14.4.3 變量賦值狀態(tài)及語句的活躍性430
第15章 語法糖去除435
15.1 簡單語法糖436
15.1.1 變長參數(shù)436
15.1.2 條件編譯437
15.1.3 自動裝箱與拆箱438
15.2 語句語法糖440
15.2.1 foreach語句440
15.2.2 switch語句442
15.2.3 try-with-resources語句447
15.3 枚舉類語法糖452
15.4 內部類語法糖453
15.4.1 調用私有構造方法454
15.4.2 引用成員457
15.4.3 super關鍵字引用父類成員470
15.4.4 訪問自由變量472
第16章 字節(jié)碼指令生成486
16.1 字節(jié)碼指令集486
16.2 生成字節(jié)碼指令492
16.2.1 實現(xiàn)本地變量表492
16.2.2 實現(xiàn)操作數(shù)棧495
16.2.3 常量池信息的存儲497 16.2.4 Code類介紹 499 16.3 Gen類介紹 502 16.4 可尋址實體Item 506 16.4.1 LocalItem類 508 16.4.2 ImmediateItem類 512 16.4.3 StackItem類 514 16.4.4 AssignItem類 515 16.4.5 StaticItem類 517 16.4.6 MemberItem類 520 16.4.7 SelfItem類 523 16.4.8 IndexedItem類 524 第17章 重要結構的字節(jié)碼指令生成 527 17.1 控制轉移指令與地址回填 527 17.1.1 認識控制轉移指令 527 17.1.2 地址回填 529 17.2 語句的條件判斷表達式 530 17.2.1 CondItem類 530 17.2.2 一元與二元條件判斷表達式 533 17.2.3 三元條件判斷表達式 534 17.3 if語句 536 17.4 循環(huán)語句 537 17.5 switch語句 539 17.6 異常與finally語句 545 17.6.1 異常的拋出 545 17.6.2 異常的捕獲與finally語句 545 第18章 生成Class文件 553 18.1 Class文件的結構 553 18.2 魔數(shù)與版本 556 18.3 常量池 556 18.4 類定義的基本信息 562 18.4.1 訪問標識符 562 18.4.2 類、父類及接口集合 564 18.5 字段集合 565 18.6 方法集合 570 18.7 類屬性集合 575 18.8 描述符和簽名 581 18.8.1 描述符 581 18.8.2 簽名 582 18.8.3 描述符與簽名的實現(xiàn) 585 附錄A Javac命令 589 附錄B 文法 592 附錄C 類型常見操作 600 C.1 supertype()方法 600 C.2 interfaces()方法 604 C.3 asSuper()方法 606 C.4 asOuterSuper()方法 608 C.5 isSameType()方法 609 C.6 L()與U()方法 615 C.7 lowerBound()與upperBound()方法 616 C.8 containsType()方法 617 C.9 hasSameArgs()方法 621 C.10 subst()方法 623 C.11 memberType()方法 626 C.12 erasure()與erasureRecursive()方法 628 附錄D 符號常見操作 632 D.1 isInheritedIn()方法 632 D.2 hiddenIn()方法 633 D.3 isMemberOf()方法 634 D.4 overrides()方法 635 D.5 implementation()方法 639 附錄E 虛擬機字節(jié)碼指令表 645 E.1 加載與存儲指令 645 E.2 運算指令 648 E.3 類型轉換指令 650 E.4 對象操作指令 651 E.5 操作數(shù)棧管理指令 652 E.6 控制轉移指令 652 E.7 方法調用和返回指令 653 E.8 異常拋出指令 654 E.9 同步指令 654
展開全部

深入解析Java編譯器:源碼剖析與實例詳解 相關資料

在日常的程序開發(fā)中,開發(fā)人員可能很少思考Javac編譯器是如何運行的,以及如何對代碼進行優(yōu)化!渡钊虢馕鯦ava編譯器:源碼剖析與實例詳解》從編譯器源碼剖析的角度,詳細介紹了Javac如何實現(xiàn)編譯,以及如何結合Java的特性而實現(xiàn)編譯優(yōu)化等相關內容,從而讓開發(fā)者能更好地掌控Java這個“神獸”,編寫出更加利于編譯器優(yōu)化的高性能代碼。 ——掌游天下玉米廣告部門經(jīng)理 姚寶栓 馬智用他的專業(yè)知識和豐富的開發(fā)經(jīng)驗,深入剖析了工業(yè)級編譯器Javac的源碼實現(xiàn)過程。對于任何一個使用Java語言做開發(fā)的人來說,《深入解析Java編譯器:源碼剖析與實例詳解》可以幫助他們更加深入地理解Javac編譯器,從而提高開發(fā)水平,提升職場競爭力。 ——螞蟻金服工程師 陳峰 《深入解析Java編譯器:源碼剖析與實例詳解》將Java語言復雜的底層編譯邏輯用簡單明了的語言和生動的圖示進行講解,讀后給人一種“大徹大悟”的感覺,推薦給那些想要透徹理解Java語言的人閱讀。 ——*數(shù)科高級工程師 王帥

深入解析Java編譯器:源碼剖析與實例詳解 作者簡介

馬智 畢業(yè)于天津工業(yè)大學。在校期間所修專業(yè)為軟件工程。畢業(yè)后一直從事軟件開發(fā)相關工作。先后在掌游天下、京東集團任軟件研發(fā)工程師。對編程語言的底層實現(xiàn)有濃厚的興趣,尤其對編譯原理有較為全面和深入的研究。深入研究過openJDK的源代碼實現(xiàn),其中包括Javac編譯器的源代碼實現(xiàn)。

商品評論(0條)
暫無評論……
書友推薦
編輯推薦
返回頂部
中圖網(wǎng)
在線客服