Java虚拟机规范

时间:2015-12-04 05:08:00
【文件属性】:

文件名称:Java虚拟机规范

文件大小:2.97MB

文件格式:PDF

更新时间:2015-12-04 05:08:00

Java

中文名: Java虚拟机规范(Java+SE+7) 作者: Tim Lindholm Frank Yellin译者: 周志明图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 清华大学出版社书号: ISBN:730202365发行时间: 2011年02月 地区: 大陆 语言: 简体中文 简介: 内容简介 《Java虚拟机规范 (Java SE 7 中文版)》是一份根据《Java Virtual Machine Specification (Java SE 7)》翻译的、非官方的、以Open Document形式发布的文档。 本译文由ItEye社区三位水友IcyFenix、wupuyuan、langyu合作完成,我们的翻译工作完全基于技术研究目的,任何人也都可以在以技术研究为目的前提下任意阅读、传播、使用这份文档。但没有得到原文作者和译者授权,不得用于商业出版。 《Java虚拟机规范》并非某一款虚拟机实现的说明书,它是一份保证各个公司的Java虚拟机实现具备统一外部接口的契约文档,书中的概念和细节描述曾经与Sun的早期虚拟机的实现高度吻合,但是随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述的内容产生了越来越大的差距。 内容截图 目录: Java虚拟机规范 (Java SE 7版) 1 译者序 2 版权声明 4 目录 8 前言 14 第二版说明 15 Java SE 7版说明 15 第1章 引言 18 1.1 简史 18 1.2 Java虚拟机 18 1.3 各章节提要 19 1.4 说明 20 第2章 Java虚拟机结构 21 2.1 Class文件格式 21 2.2 数据类型 22 2.3 原始类型与值 22 2.3.1 整型类型与整型值 23 2.3.2 浮点类型、取值集合及浮点值 24 2.3.3 returnAddress类型和值 26 2.3.4 boolean类型 26 2.4 引用类型与值 27 2.5 运行时数据区 27 2.5.1 PC寄存器 28 2.5.2 Java虚拟机栈 28 2.5.3 Java堆 29 2.5.4 方法区 29 2.5.5 运行时常量池 30 2.5.6 本地方法栈 30 2.6 栈帧 31 2.6.1 局部变量表 32 2.6.2 操作数栈 33 2.6.3 动态链接 34 2.6.4 方法正常调用完成 34 2.6.5 方法异常调用完成 34 2.7 对象的表示 35 2.8 浮点算法 35 2.8.1 Java虚拟机和IEEE 754中的浮点算法 35 2.8.2 浮点模式 36 2.8.3 数值集合转换 37 2.9 初始化方法的特殊命名 38 2.10 异常 38 2.11 字节码指令集简介 40 2.11.1 数据类型与Java虚拟机 41 2.11.2 加载和存储指令 44 2.11.3 运算指令 45 2.11.4 类型转换指令 46 2.11.5 对象创建与操作 47 2.11.6 操作数栈管理指令 48 2.11.7 控制转移指令 48 2.11.8 方法调用和返回指令 49 2.11.9 抛出异常 49 2.11.10 同步 49 2.12 类库 50 2.13 公有设计,私有实现 51 第3章 为JAVA虚拟机编译 53 3.1 示例的格式说明 53 3.2 常量、局部变量的使用和控制结构 54 3.3 算术运算 58 3.4 访问运行时常量池 59 3.5 更多的控制结构示例 61 3.6 接收参数 64 3.7 方法调用 64 3.8 使用类实例 67 3.9 数组 69 3.10 编译switch语句 71 3.11 使用操作数栈 73 3.12 抛出异常和处理异常 74 3.13 编译finally语句块 78 3.14 同步 81 3.15 注解 82 第4章 Class文件格式 84 4.1 ClassFile结构 85 4.2 各种内部表示名称 89 4.2.1 类和接口的二进制名称 90 4.2.2 非全限定名 90 4.3 描述符和签名 91 4.3.1 语法符号 91 4.3.2 字段描述符 92 4.3.3 方法描述符 93 4.3.4 签名 94 4.4 常量池 96 4.4.1 CONSTANT_Class_info结构 97 4.4.2 CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构 98 4.4.3 CONSTANT_String_info结构 100 4.4.4 CONSTANT_Integer_info和CONSTANT_Float_info结构 100 4.4.5 CONSTANT_Long_info和CONSTANT_Double_info结构 102 4.4.6 CONSTANT_NameAndType_info结构 103 4.4.7 CONSTANT_Utf8_info结构 104 4.4.8 CONSTANT_MethodHandle_info结构 105 4.4.9 CONSTANT_MethodType_info结构 107 4.4.10 CONSTANT_InvokeDynamic_info结构 107 4.5 字段 108 4.6 方法 110 4.7 属性 113 4.7.1 自定义和命名新的属性 115 4.7.2 ConstantValue属性 116 4.7.3 Code属性 117 4.7.4 StackMapTable属性 120 4.7.5 Exceptions属性 126 4.7.6 InnerClasses属性 127 4.7.7 EnclosingMethod属性 130 4.7.8 Synthetic属性 131 4.7.9 Signature属性 132 4.7.10 SourceFile属性 132 4.7.11 SourceDebugExtension 属性 133 4.7.12 LineNumberTable属性 134 4.7.13 LocalVariableTable属性 135 4.7.14 LocalVariableTypeTable属性 137 4.7.15 Deprecated属性 139 4.7.16 RuntimeVisibleAnnotations属性 139 4.7.16.1 element_value结构 141 4.7.17 RuntimeInvisibleAnnotations 属性 143 4.7.18 RuntimeVisibleParameterAnnotations属性 144 4.7.19 RuntimeInvisibleParameterAnnotations属性 146 4.7.20 AnnotationDefault属性 147 4.7.21 BootstrapMethods属性 148 4.8 格式检查 150 4.9 Java虚拟机代码约束 150 4.9.1 静态约束 150 4.9.2 结构化约束 154 4.10 Class文件校验 156 4.10.1 类型检查验证 157 4.10.2 类型推导验证 158 4.10.2.1 类型推断的验证过程 158 4.10.2.2 字节码验证器 158 4.10.2.3 long和double类型的值 161 4.10.2.4 实例初始化方法与创建对象 162 4.10.2.5 异常和finally 163 4.11 Java虚拟机限制 165 第5章 加载、链接与初始化 167 5.1 运行时常量池 167 5.2 虚拟机启动 170 5.3 创建和加载 170 5.3.1 使用引导类加载器来加载类型 172 5.3.2 使用用户自定义类加载器来加载类型 172 5.3.3 创建数组类 173 5.3.4 加载限制 174 5.3.5 从Class文件中获取类 175 5.4 链接 176 5.4.1 验证 176 5.4.2 准备 177 5.4.3 解析 178 5.4.3.1 类与接口解析 179 5.4.3.2 字段解析 179 5.4.3.3 普通方法解析 180 5.4.3.4 接口方法解析 181 5.4.3.5 方法类型与方法句柄解析 182 5.4.3.6 调用点限定符解析 185 5.4.3 访问控制 185 5.4.5 方法覆盖 186 5.5 初始化 187 5.6 绑定本地方法实现 189 5.7 Java虚拟机退出 189 第6章 Java虚拟机指令集 190 6.1 设定:“必须”的含义 190 6.2 保留操作码 190 6.3 虚拟机错误 191 6.4 指令描述格式 191 6.5 指令集描述 193 第7章 操作码助记符 379


网友评论

  • 翻译手稿,不推荐初学者看。。。。
  • 有学习价值,版本有点老。
  • 初学者,虚拟机这块讲的不错,学习了
  • 有学习价值,版本有点老,不过学习虚拟机够了
  • 还不错~就是版本有点老