• 深入解析Java编译器:源码剖析与实例详解
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

深入解析Java编译器:源码剖析与实例详解

正版新书 新华官方库房直发 可开电子发票

103.82 5.8折 179 全新

库存7件

江苏无锡
认证卖家担保交易快速发货售后保障

作者马智

出版社机械工业出版社

出版时间2020-01

版次1

装帧其他

货号文轩11.25

上书时间2024-11-27

   商品详情   

品相描述:全新
图书标准信息
  • 作者 马智
  • 出版社 机械工业出版社
  • 出版时间 2020-01
  • 版次 1
  • ISBN 9787111643388
  • 定价 179.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 668页
  • 字数 800千字
【内容简介】
《深入解析Java编译器:源码剖析与实例详解》以工业级编译器Javac的源代码为基础,详细介绍了词法分析、语法分析、语义分析及代码生成
  等各个阶段的具体实现,同时对重点源代码的实现进行了详细解读,让读者能真正掌握从Java源代码变为Class文件的每个过程。
  《深入解析Java编译器:源码剖析与实例详解》共18章,章节的前后顺序与Javac编译Java源代码的顺序严格对应,涵盖的主要内容有Javac介绍、Javac文件系统、词法分析、语法分析之认识树节点、语法分析之建立抽象语法树、符号表的组织、填充符号表、插入式注解的实现、语义分析之类型转换、语义分析之语法检查、语义分析之引用消解、语义分析之语法树标注、泛型的实现、数据流检查、语法糖去除、字节码指令生成、重要结构的字节码指令生成、生成Class文件。同时,为了读者能更好地查阅相关信息,《深入解析Java编译器:源码剖析与实例详解》在附录中给出了Javac命令、文法、类型常见操作、符号常见操作和虚拟机字节码指令表的相关内容。
  《深入解析Java编译器:源码剖析与实例详解》语言简洁,实例丰富,适合Java从业人员阅读,可以帮助他们深入理解Javac如何支持Java语言的诸多特性,如泛型等;也适合对编译器感兴趣的读者阅读,可以帮助他们真正掌握如何将编译器相关的理论知识应用到开发实践中。
【作者简介】
马智  毕业于天津工业大学。在校期间所修专业为软件工程。毕业后一直从事软件开发相关工作。先后在掌游天下、京东集团任软件研发工程师。对编程语言的底层实现有浓厚的兴趣,尤其对编译原理有较为全面和深入的研究。深入研究过openJDK的源代码实现,其中包括Javac编译器的源代码实现。
【目录】
前言

第1章 Javac介绍1

1.1 初识Javac1

1.2 Javac源码与调试4

1.3 Javac命令7

第2章 Javac文件系统12

2.1 文件相关实现类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章 语法分析之认识树节点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 生成树节点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 创建包或类符号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章 插入式注解的实现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 数字提升266

第10章 语义分析之语法检查269

10.1 类型定义的检查269

10.1.1 父类及实现接口的检查269

10.1.2 类型定义的唯一性检查273

10.1.3 类型中方法的兼容性检查276

10.1.4 类型中实现方法的检查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 表达式相关树节点的标注348

12.2.1 JCUnary树节点标注348

12.2.2 JCBinary树节点的标注350

12.2.3 JCAssignOp树节点的标注351

12.3 JCIdent树节点的标注351

12.4 JCFieldAccess树节点的标注354

第13章 泛型的实现361

13.1 泛型类型361

13.2 泛型方法364

13.2.1 类型推断365

13.2.2 钻石语法383

13.3 泛型擦除386

第14章 数据流检查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 循环语句的分析413

14.3.1 for语句413

14.3.2 中断循环语句416

14.4 try语句与throw语句的分析419

14.4.1 抛出异常419

14.4.2 异常检查424

14.4.3 变量赋值状态及语句的活跃性430

第15章 语法糖去除435

15.1 简单语法糖436

15.1.1 变长参数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章 字节码指令生成486

16.1 字节码指令集486

16.2 生成字节码指令492

16.2.1 实现本地变量表492

16.2.2 实现操作数栈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章  重要结构的字节码指令生成 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  循环语句 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  魔数与版本 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  描述符与签名的实现 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  虚拟机字节码指令表 645

E.1  加载与存储指令 645

E.2  运算指令 648

E.3  类型转换指令 650

E.4  对象操作指令 651

E.5  操作数栈管理指令 652

E.6  控制转移指令 652

E.7  方法调用和返回指令 653

E.8  异常抛出指令 654

E.9  同步指令 654
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP