幫助中心 | 我的帳號 | 關於我們

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

  • 作者:馬智|責編:歐振旭//李華君
  • 出版社:機械工業
  • ISBN:9787111643388
  • 出版日期:2020/01/01
  • 裝幀:平裝
  • 頁數:654
人民幣:RMB 179 元      售價:
放入購物車
加入收藏夾

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

作者介紹
馬智|責編:歐振旭//李華君

目錄
前言
第1章  Javac介紹
  1.1  初識Javac
  1.2  Javac源碼與調試
  1.3  Javac命令
第2章  Javac文件系統
  2.1  文件相關實現類
  2.2  文件的管理
    2.2.1  獲取JavacFileManager對象
    2.2.2  StandardLocation類
    2.2.3  JavacFileManager類
第3章  詞法分析
  3.1  字元編碼
  3.2  獲取字元輸入流
  3.3  Token與Name
    3.3.1  Token介紹
    3.3.2  Name對象的生成與存儲
    3.3.3  Name映射為Token
  3.4  生成Token流
第4章  語法分析之認識樹節點
  4.1  定義及聲明
    4.1.1  JCCompilationUnit類
    4.1.2  JCImport類
    4.1.3  JCClassDecl類
    4.1.4  JCModifiers類
    4.1.5  JCTypeParameter類
    4.1.6  JCVariableDecl類
    4.1.7  JCMethodDecl類
  4.2  語句
    4.2.1  JCBlock類
    4.2.2  JCIf類
    4.2.3  JCWhileLoop、JCDoWhileLoop、JCForLoop與JCEnhancedForLoop類
    4.2.4  JCSwitch與JCCase類
    4.2.5  JCTry、JCCatch與JCThrow類
    4.2.6  JCLabeledStatement、JCReturn、JCContinue與JCBreak類
    4.2.7  JCSynchronized類
    4.2.8  JCAssert類
  4.3  表達式
    4.3.1  基本表達式
    4.3.2  含運算符的表達式
    4.3.3  類型相關表達式
    4.3.4  註解表達式
  4.4  生成樹節點
第5章  語法分析之建立抽象語法樹
  5.1  定義及聲明的抽象語法樹
  5.2  語句的抽象語法樹
  5.3  表達式的抽象語法樹
    5.3.1  基本表達式
    5.3.2  含有運算符的表達式
  5.4  遍歷抽象語法樹

第6章  符號表的組織
  6.1  符號的定義
    6.1.1  Symbol類
    6.1.2  TypeSymbol及其子類
    6.1.3  VarSymbol類
    6.1.4  MethodSymbol及OperatorSymbol類
  6.2  符號表的組織
    6.2.1  Env類介紹
    6.2.2  AttrContext類介紹
    6.2.3  Scope類介紹
    6.2.4  符號表的建立
  6.3  類型的定義
    6.3.1  普通類型的定義
    6.3.2  泛型相關類型的定義
第7章  填充符號表
  7.1  依賴的處理
    7.1.1  創建包或類符號
    7.1.2  輸入包或類下的成員符號
  7.2  符號輸入的第一階段
    7.2.1  Enter類
    7.2.2  visitTopLevel()方法
    7.2.3  visitClassDef()方法
    7.2.4  visitTypeParameter()方法
  7.3  符號輸入第二階段
    7.3.1  MemberEnter類
    7.3.2  visitImport()方法
    7.3.3  visitMethodDef()方法
    7.3.4  visitVarDef()方法
第8章  插入式註解的實現
  8.1  註解處理器基礎
    8.1.1  編寫註解處理器
    8.1.2  註解配置
    8.1.3  工具類
  8.2  初始化註解處理器
  8.3  運行註解處理器
第9章  語義分析之類型轉換
  9.1  類型轉換的種類
  9.2  賦值轉換
  9.3  方法調用轉換
  9.4  強制類型轉換
  9.5  數字提升
第10章  語義分析之語法檢查
  10.1  類型定義的檢查
    10.1.1  父類及實現介面的檢查
    10.1.2  類型定義的唯一性檢查
    10.1.3  類型中方法的兼容性檢查
    10.1.4  類型中實現方法的檢查
  10.2  變數定義的檢查
  10.3  方法定義的檢查
    10.3.1  方法的唯一性檢查

    10.3.2  方法的隱藏
    10.3.3  方法的覆寫
第11章  語義分析之引用消解
  11.1  Resolve類介紹
  11.2  類型引用的消解
  11.3  變數引用的消解
  11.4  方法引用的消解
第12章  語義分析之語法樹標注
  12.1  Attr類介紹
  12.2  表達式相關樹節點的標注
    12.2.1  JCUnary樹節點標注
    12.2.2  JCBinary樹節點的標注
    12.2.3  JCAssignOp樹節點的標注
  12.3  JCIdent樹節點的標注
  12.4  JCFieldAccess樹節點的標注
第13章  泛型的實現
  13.1  泛型類型
  13.2  泛型方法
    13.2.1  類型推斷
    13.2.2  鑽石語法
  13.3  泛型擦除
第14章  數據流檢查
  14.1  Flow類介紹
    14.1.1  語句的活躍性分析
    14.1.2  變數賦值檢查
    14.1.3  異常檢查
  14.2  if語句的分析
    14.2.1  if語句
    14.2.2  一元表達式與if語句
    14.2.3  二元表達式與if語句
    14.2.4  三元表達式與if語句
  14.3  循環語句的分析
    14.3.1  for語句
    14.3.2  中斷循環語句
  14.4  try語句與throw語句的分析
    14.4.1  拋出異常
    14.4.2  異常檢查
    14.4.3  變數賦值狀態及語句的活躍性
第15章  語法糖去除
  15.1  簡單語法糖
    15.1.1  變長參數
    15.1.2  條件編譯
    15.1.3  自動裝箱與拆箱
  15.2  語句語法糖
    15.2.1  foreach語句
    15.2.2  switch語句
    15.2.3  try-with-resources語句
  15.3  枚舉類語法糖
  15.4  內部類語法糖
    15.4.1  調用私有構造方法

    15.4.2  引用成員
    15.4.3  super關鍵字引用父類成員
    15.4.4  訪問自由變數
第16章  位元組碼指令生成
  16.1  位元組碼指令集
  16.2  生成位元組碼指令
    16.2.1  實現本地變數表
    16.2.2  實現操作數棧
    16.2.3  常量池信息的存儲
    16.2.4  Code類介紹
  16.3  Gen類介紹
  16.4  可定址實體Item
    16.4.1  LocalItem類
    16.4.2  ImmediateItem類
    16.4.3  StackItem類
    16.4.4  AssignItem類
    16.4.5  StaticItem類
    16.4.6  MemberItem類
    16.4.7  SelfItem類
    16.4.8  IndexedItem類
第17章  重要結構的位元組碼指令生成
  17.1  控制轉移指令與地址回填
    17.1.1  認識控制轉移指令
    17.1.2  地址回填
  17.2  語句的條件判斷表達式
    17.2.1  CondItem類
    17.2.2  一元與二元條件判斷表達式
    17.2.3  三元條件判斷表達式
  17.3  if語句
  17.4  循環語句
  17.5  switch語句
  17.6  異常與finally語句
    17.6.1  異常的拋出
    17.6.2  異常的捕獲與finally語句
第18章  生成Class文件
  18.1  Class文件的結構
  18.2  魔數與版本
  18.3  常量池
  18.4  類定義的基本信息
    18.4.1  訪問標識符
    18.4.2  類、父類及介面集合
  18.5  欄位集合
  18.6  方法集合
  18.7  類屬性集合
  18.8  描述符和簽名
    18.8.1  描述符
    18.8.2  簽名
    18.8.3  描述符與簽名的實現
附錄A  Javac命令
附錄B  文法

附錄C  類型常見操作
  C.1  supertype()方法
  C.2  interfaces()方法
  C.3  asSuper()方法
  C.4  asOuterSuper()方法
  C.5  isSameType()方法
  C.6  L()與U()方法
  C.7  lowerBound()與upperBound()方法
  C.8  containsType()方法
  C.9  hasSameArgs()方法
  C.10  subst()方法
  C.11  memberType()方法
  C.12  erasure()與erasureRecursive()方法
附錄D  符號常見操作
  D.1  isInheritedIn()方法
  D.2  hiddenIn()方法
  D.3  isMemberOf()方法
  D.4  overrides()方法
  D.5  implementation()方法
附錄E  虛擬機位元組碼指令表
  E.1  載入與存儲指令
  E.2  運算指令
  E.3  類型轉換指令
  E.4  對象操作指令
  E.5  操作數棧管理指令
  E.6  控制轉移指令
  E.7  方法調用和返回指令
  E.8  異常拋出指令
  E.9  同步指令

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032