本书完整而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及字节码验证的规则。
译者序前 言第1章 引言11.1 简史11.2 Java虚拟机21.3 各章节摘要21.4 说明31.5 反馈3第2章 Java虚拟机结构42.1 class文件格式42.2 数据类型52.3 原始类型与值52.3.1 整数类型与整型值62.3.2 浮点类型、取值集合及浮点值62.3.3 returnAddress类型和值82.3.4 boolean类型82.4 引用类型与值92.5 运行时数据区92.5.1 pc寄存器92.5.2 Java虚拟机栈102.5.3 Java堆102.5.4 方法区112.5.5 运行时常量池112.5.6 本地方法栈122.6 栈帧122.6.1 局部变量表132.6.2 操作数栈142.6.3 动态链接142.6.4 方法调用正常完成152.6.5 方法调用异常完成152.7 对象的表示152.8 浮点算法152.8.1 Java虚拟机和IEEE 754中的浮点算法152.8.2 浮点模式162.8.3 数值集合转换172.9 特殊方法182.10 异常192.11 字节码指令集简介202.11.1 数据类型与Java虚拟机212.11.2 加载和存储指令232.11.3 算术指令242.11.4 类型转换指令252.11.5 对象的创建与操作272.11.6 操作数栈管理指令272.11.7 控制转移指令272.11.8 方法调用和返回指令282.11.9 抛出异常282.11.10 同步282.12 类库292.13 公有设计、私有实现30第3章 Java虚拟机编译器313.1 示例的格式说明313.2 常量、局部变量和控制结构的使用323.3 算术运算363.4 访问运行时常量池363.5 与控制结构有关的更多示例373.6 接收参数403.7 方法调用413.8 使用类实例433.9 数组443.10 编译switch语句463.11 使用操作数栈483.12 抛出异常和处理异常483.13 编译finally语句块513.14 同步543.15 注解55第4章 class文件格式564.1 ClassFile结构574.2 各种名称的内部表示形式614.2.1 类和接口的二进制名称614.2.2 非限定名614.3 描述符624.3.1 语法符号624.3.2 字段描述符624.3.3 方法描述符634.4 常量池644.4.1 CONSTANT_Class_info结构654.4.2 CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构664.4.3 CONSTANT_String_info结构674.4.4 CONSTANT_Integer_info和CONSTANT_Float_info结构674.4.5 CONSTANT_Long_info和CONSTANT_Double_info结构684.4.6 CONSTANT_NameAnd-Type_info结构694.4.7 CONSTANT_Utf8_info结构704.4.8 CONSTANT_MethodHandle_info结构724.4.9 CONSTANT_MethodType_info结构734.4.10 CONSTANT_Invoke-Dynamic_info结构744.5 字段744.6 方法764.7 属性784.7.1 自定义和命名新的属性824.7.2 ConstantValue属性824.7.3 Code属性834.7.4 StackMapTable属性864.7.5 Exceptions属性924.7.6 InnerClasses属性934.7.7 EnclosingMethod属性954.7.8 Synthetic属性964.7.9 Signature属性964.7.10 SourceFile属性1004.7.11 SourceDebugExtension属性1014.7.12 LineNumberTable属性1024.7.13 LocalVariableTable属性1034.7.14 LocalVariableTypeTable属性1044.7.15 Deprecated属性1064.7.16 RuntimeVisibleAnnota-tions属性1064.7.17 RuntimeInvisible-Annotations属性1104.7.18 RuntimeVisibleParameterAnnotations属性1114.7.19 RuntimeInvisiblePara-meterAnnotations属性1124.7.20 RuntimeVisibleTypeAnnotations属性1144.7.21 RuntimeInvisibleType-Annotations属性1244.7.22 AnnotationDefault属性1254.7.23 BootstrapMethods属性1264.7.24 MethodParameters属性1274.8 格式检查1294.9 Java虚拟机代码约束1294.9.1 静态约束1304.9.2 结构化约束1324.10 class文件校验1354.10.1 类型检查验证1364.10.2 类型推导验证2004.11 Java虚拟机限制206第5章 加载、链接与初始化2085.1 运行时常量池2085.2 虚拟机启动2105.3 创建和加载2115.3.1 使用引导类加载器来加载类型2125.3.2 使用用户自定义类加载器来加载类型2125.3.3 创建数组类2135.3.4 加载限制2145.3.5 从class文件表示得到类2145.4 链接2155.4.1 验证2165.4.2 准备2165.4.3 解析2175.4.4 访问控制2255.4.5 方法覆盖2255.5 初始化2265.6 绑定本地方法实现2285.7 Java虚拟机退出228第6章 Java虚拟机指令集2296.1 设定:“必须”的含义2296.2 保留操作码2296.3 虚拟机错误2306.4 指令描述格式2306.5 指令集描述232第7章 操作码助记符320附录A Limited License Grant327
评论关闭。