Java虚拟机规范 Java SE 8版 PDF 190MB


文件大小:190MB

下载:

Java虚拟机规范 Java SE 8版


编辑推荐
《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由机械工业出版社出版。

作者简介
作者:(美国)蒂姆·林霍尔姆(Tim Lindholm) (美国)弗兰克·耶林(Frank Yellin) (美国)吉拉德·布拉查(Gilad Bracha) (美国)亚历克斯·巴克利(Alex Buckley) 译者:爱飞翔 周志明

目录
译者序
前言
第1章引言
1.1简史
1.2Java虚拟机
1.3各章节摘要
1.4说明
1.5反馈
第2章Java虚拟机结构
2.1class文件格式
2.2数据类型
2.3原始类型与值
2.3.1整数类型与整型值
2.3.2浮点类型、取值集合及浮点值
2.3.3returnAddress类型和值
2.3.4boolean类型
2.4引用类型与值
2.5运行时数据区
2.5.1pc寄存器
2.5.2Java虚拟机栈
2.5.3Java堆
2.5.4方法区
2.5.5运行时常量池
2.5.6本地方法栈
2.6栈帧
2.6.1局部变量表
2.6.2操作数栈
2.6.3动态链接
2.6.4方法调用正常完成
2.6.5方法调用异常完成
2.7对象的表示
2.8浮点算法
2.8.1Java虚拟机和IEEE754中的浮点算法
2.8.2浮点模式
2.8.3数值集合转换
2.9特殊方法
2.10异常
2.11字节码指令集简介
2.11.1数据类型与Java虚拟机
2.11.2加载和存储指令
2.11.3算术指令
2.11.4类型转换指令
2.11.5对象的创建与操作
2.11.6操作数栈管理指令
2.11.7控制转移指令
2.11.8方法调用和返回指令
2.11.9抛出异常
2.11.10同步
2.12类库
2.13公有设计、私有实现
第3章Java虚拟机编译器
3.1示例的格式说明
3.2常量、局部变量和控制结构的使用
3.3算术运算
3.4访问运行时常量池
3.5与控制结构有关的更多示例
3.6接收参数
3.7方法调用
3.8使用类实例
3.9数组
3.10编译switch语句
3.11使用操作数栈
3.12抛出异常和处理异常
3.13编译finally语句块
3.14同步
3.15注解
第4章class文件格式
4.1ClassFile结构
4.2各种名称的内部表示形式
4.2.1类和接口的二进制名称
4.2.2非限定名
4.3描述符
4.3.1语法符号
4.3.2字段描述符
4.3.3方法描述符
4.4常量池
4.4.1CONSTANT_Class_info结构
4.4.2CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构
4.4.3CONSTANT_String_info结构
4.4.4CONSTANT_Integer_info和CONSTANT_Float_info结构
4.4.5CONSTANT_Long_info和CONSTANT_Double_info结构
4.4.6CONSTANT_NameAnd—Type_info结构
4.4.7CONSTANT_Utf8_info结构
4.4.8CONSTANT_MethodHandle_info结构
4.4.9CONSTANT_MethodType_info结构
4.4.10CONSTANT_Invoke—Dynamic_info结构
4.5字段
4.6方法
4.7属性
4.7.1自定义和命名新的属性
4.7.2ConstantValue属性
4.7.3Code属性
4.7.4StackMapTable属性
4.7.5Exceptions属性
4.7.6InnerClasses属性
4.7.7EnclosingMethod属性
4.7.8Synthetic属性
4.7.9Signature属性
4.7.10SourceFile属性
4.7.11SourceDebugExtension属性
4.7.12LineNumberTable属性
4.7.13LocalVariableTable属性
4.7.14LocalVariableTypeTable属性
4.7.15Deprecated属性
4.7.16RuntimeVisibleAnnotations属性
4.7.17RuntimeInvisible—Annotations属性
4.7.18RuntimeVisibleParameterAnnotations属性
4.7.19RuntimeInvisiblePara—meterAnnotations属性
4.7.20RuntimeVisibleTypeAnnotations属性
4.7.21RuntimeInvisibleType—Annotations属性
4.7.22AnnotationDefault属性
4.7.23BootstrapMethods属性
4.7.24MethodParameters属性
4.8格式检查
4.9Java虚拟机代码约束
4.9.1静态约束
4.9.2结构化约束
4.10class文件校验
4.10.1类型检查验证
4.10.2类型推导验证
4.11Java虚拟机限制
第5章加载、链接与初始化
5.1运行时常量池
5.2虚拟机启动
5.3创建和加载
5.3.1使用引导类加载器来加载类型
5.3.2使用用户自定义类加载器来加载类型
5.3.3创建数组类
5.3.4加载限制
5.3.5从class文件表示得到类
5.4链接
5.4.1验证
5.4.2准备
5.4.3解析
5.4.4访问控制
5.4.5方法覆盖
5.5初始化
5.6绑定本地方法实现
5.7Java虚拟机退出
第6章Java虚拟机指令集
6.1设定:“必须”的含义
6.2保留操作码
6.3虚拟机错误
6.4指令描述格式
6.5指令集描述
第7章操作码助记符
附录A Limited License Grant

序言
he Translator’s Words 译者序Java从诞生到现在历经20多年,如今已成为一门应用场合非常广泛的编程语言。而在它逐步发展的过程中,还有另一件事物也在不断发生变化,这就是Java虚拟机。
与某些语言相比,Java的特色之一就是通常需要把编译好的class文件放在虚拟机中执行,而不是直接放在硬件上执行。这种在硬件和二进制文件中加入虚拟机层的做法,自然有其优势与局限性,然而纵观Java语言与Java虚拟机的发展脉络就可看出,各种Java虚拟机的实现者依然在以他们自己的方式不断地优化虚拟机。
虚拟机的具体实现可以有差别,但它们都遵循一套抽象的规则,这就是Java虚拟机规范。这份规范不仅可以使Java虚拟机的实现变得更加协调,而且还阐明了Java虚拟机与Java语言之间的契合点,令实现者可以在保持程序语义不变的前提下获得充分的发挥空间。
从J2SE 5.0开始,Java有了较大改变,加入了泛型、枚举、变长参数、多异常catch语句等特性,到了Java SE 8,更是引入了与lambda表达式相关的许多新功能,使Java语言的写法变得更为灵活。与此同时,Java虚拟机也在针对这些特性而调整。无论读者是否从事虚拟机开发,都可以从研读规范的过程中更为深入地体会这些特性。大家还可以参考Bill Venners所著的《Inside the Java 2 Virtual Machine》(《深入Java虚拟机(原书第2版)》),以了解Java虚拟机的原理及指令细节。
尽管Java虚拟机通常与Java语言配套使用,但除了Java语言之外,用Clojure、Scala等语言所写的程序也可以运行在Java虚拟机上。此外,还可以用Java语言实现出Python、Ruby等语言的解释器,从而将其放在Java虚拟机中执行。这些用法都表明:虚拟机规范不但对学习Java有帮助,而且还能促使我们以全新的手法来运用其他常见的语言。从某种意义上来看,Java虚拟机有其独特的地位,而且还是程序设计领域中的一种思维方式。
翻译本书的过程中,译者参考了由周志明、薛笛、吴璞渊、冶秀刚所翻译的《Java虚拟机规范(Java SE 7版)》,并保留了上一版的部分译者注,在此谨对四位译者深表感谢。同时感谢机械工业出版社华章公司诸位编辑与工作人员的帮助。
本书的风格和术语尽量与上一版相符,有时会酌情稍作调整。
爱飞翔


end

猜你喜欢

转载自blog.csdn.net/qqduxingzhe/article/details/80653131