注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)網(wǎng)絡(luò)與數(shù)據(jù)通信網(wǎng)絡(luò)服務(wù)深入解析Java編譯器:源碼剖析與實(shí)例詳解

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

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

定 價(jià):¥179.00

作 者: 馬智
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111643388 出版時(shí)間: 2020-01-01 包裝:
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 668 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書(shū)目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)