| 书[0名0]: | Java虚拟机规范(Java SE 8版)|4706197 |
| 图书定价: | 79元 |
| 图书作者: | (美)蒂姆·林霍尔姆;弗兰克·耶林;吉拉德·布拉查;亚历克斯·巴克利 |
| 出版社: | 机械工业出版社 |
| 出版日期: | 2015/6/1 0:00:00 |
| ISBN号: | 9787111501596 |
| 开本: | 16开 |
| 页数: | 330 |
| 版次: | 1-1 |
| 作者简介 |
| 蒂姆·林霍尔姆(Tim Lindholm),资深Java虚拟机高级架构师,Java编程语言的主要贡献者之一,曾是Sun公司杰出工程师,目前主要负责移动设备上的Java应用。在到Sun公司工作之前,他曾经在美[0国0]阿贡[0国0]家实验室和Quintus公司从事与虚拟机和运行时系统相关的工作。 弗兰克·耶林(Frank Yellin),曾是Sun公司高级工程师,Java项目元老级成员。近十余年中,他都从事着解释型及编译型语言的运行时系统方面的工作。在到Sun公司工作之前,他在Lucid公司从事Common Lisp编译器相关的工作。 吉拉德·布拉查(Gilad Bracha),Newspeak编程语言的创建者,曾是Sun公司杰出工程师。在到Sun公司工作之前,他在Animorphic Sm[0all0]talk System公司从事Strongtalk语言相关的工作。 亚历克斯·巴克利(Alex Buckley),Oracle公司Java编程语言和Java虚拟机规范负责人。 |
| 内容简介 |
| 本书由Oracle官方发布,Java虚拟机技术创建人撰写,[0国0]内资深Java技术专家翻译。书中基于新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 本书共分7章。[0第0]1章从宏观的角度介绍了Java虚拟机与Java的关系及发展历程;[0第0]2章概述Java虚拟机的整体架构,包括class文件格式、数据类型、原始类型、引用类型、运行时数据区、栈帧、浮点算[0法0]、异常等,这对理解本书后面的内容有重要帮助;[0第0]3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方[0法0]调用、数组、操作数栈、异常处理、同步与注解等;[0第0]4章深入分析用来表示编译后的类和接口的class文件格式;[0第0]5章定义Java虚拟机启动以及类与接口的加载、链接和初始化过程;[0第0]6章阐释并列举Java虚拟机指令集;[0第0]7章提供一张以操作码值为索引的Java虚拟机操作码助记符表。 |
| 目录 |
译者序 前 言 [0第0]1章 引言1 1.1 简[0史0]1 1.2 Java虚拟机2 1.3 各章节摘要2 1.4 说明3 1.5 反馈3 [0第0]2章 Java虚拟机结构4 2.1 class文件格式4 2.2 数据类型5 2.3 原始类型与值5 2.3.1 整数类型与整型值6 2.3.2 浮点类型、取值集合及浮点值6 2.3.3 returnAddress类型和值8 2.3.4 boolean类型8 2.4 引用类型与值9 2.5 运行时数据区9 2.5.1 pc寄存器9 2.5.2 Java虚拟机栈10 2.5.3 Java堆10 2.5.4 方[0法0]区11 2.5.5 运行时常量池11 2.5.6 本地方[0法0]栈12 2.6 栈帧12 2.6.1 局部变量表13 2.6.2 操作数栈14 2.6.3 动态链接14 2.6.4 方[0法0]调用正常完成15 2.6.5 方[0法0]调用异常完成15 2.7 对象的表示15 2.8 浮点算[0法0]15 2.8.1 Java虚拟机和IEEE 754中的浮点算[0法0]15 2.8.2 浮点模式16 2.8.3 数值集合转换17 2.9 特殊方[0法0]18 2.10 异常19 2.11 字节码指令集简介20 2.11.1 数据类型与Java虚拟机21 2.11.2 加载和存储指令23 2.11.3 算术指令24 2.11.4 类型转换指令25 2.11.5 对象的创建与操作27 2.11.6 操作数栈管理指令27 2.11.7 控制转移指令27 2.11.8 方[0法0]调用和返回指令28 2.11.9 抛出异常28 2.11.10 同步28 2.12 类库29 2.13 公有设计、私有实现30 [0第0]3章 Java虚拟机编译器31 3.1 示例的格式说明31 3.2 常量、局部变量和控制结构的使用32 3.3 算术运算36 3.4 访问运行时常量池36 3.5 与控制结构有关的更多示例37 3.6 接收参数40 3.7 方[0法0]调用41 3.8 使用类实例43 3.9 数组44 3.10 编译switch语句46 3.11 使用操作数栈48 3.12 抛出异常和处理异常48 3.13 编译fin[0all0]y语句块51 3.14 同步54 3.15 注解55 [0第0]4章 class文件格式56 4.1 ClassFile结构57 4.2 各种[0名0]称的内部表示形式61 4.2.1 类和接口的二进制[0名0]称61 4.2.2 非限定[0名0]61 4.3 描述符62 4.3.1 语[0法0]符号62 4.3.2 字段描述符62 4.3.3 方[0法0]描述符63 4.4 常量池64 4.4.1 CONSTANT_Class_info结构65 4.4.2 CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构66 4.4.3 CONSTANT_String_info结构67 4.4.4 CONSTANT_Integer_info和CONSTANT_Float_info结构67 4.4.5 CONSTANT_Long_info和CONSTANT_Double_info结构68 4.4.6 CONSTANT_NameAnd-Type_info结构69 4.4.7 CONSTANT_Utf8_info结构70 4.4.8 CONSTANT_MethodHandle_info结构72 4.4.9 CONSTANT_MethodType_info结构73 4.4.10 CONSTANT_Invoke-Dynamic_info结构74 4.5 字段74 4.6 方[0法0]76 4.7 属性78 4.7.1 自定义和命[0名0]新的属性82 4.7.2 ConstantValue属性82 4.7.3 Code属性83 4.7.4 StackMapTable属性86 4.7.5 Exceptions属性92 4.7.6 InnerClasses属性93 4.7.7 EnclosingMethod属性95 4.7.8 Synthetic属性96 4.7.9 Signature属性96 4.7.10 SourceFile属性100 4.7.11 SourceDebugExtension属性101 4.7.12 LineNumberTable属性102 4.7.13 LocalVariableTable属性103 4.7.14 LocalVariableTypeTable属性104 4.7.15 Deprecated属性106 4.7.16 RuntimeVisibleAn[0no0]ta-tions属性106 4.7.17 RuntimeInvisible-An[0no0]tations属性110 4.7.18 RuntimeVisibleParameterAn[0no0]tations属性111 4.7.19 RuntimeInvisiblePara-meterAn[0no0]tations属性112 4.7.20 RuntimeVisibleTypeAn[0no0]tations属性114 4.7.21 RuntimeInvisibleType-An[0no0]tations属性124 4.7.22 An[0no0]tationDefault属性125 4.7.23 BootstrapMethods属性126 4.7.24 MethodParameters属性127 4.8 格式检查129 4.9 Java虚拟机代码约束129 4.9.1 静态约束130 4.9.2 结构化约束132 4.10 class文件校验135 4.10.1 类型检查验证136 4.10.2 类型推导验证200 4.11 Java虚拟机限制206 [0第0]5章 加载、链接与初始化208 5.1 运行时常量池208 5.2 虚拟机启动210 5.3 创建和加载211 5.3.1 使用引导类加载器来加载类型212 5.3.2 使用用户自定义类加载器来加载类型212 5.3.3 创建数组类213 5.3.4 加载限制214 5.3.5 从class文件表示得到类214 5.4 链接215 5.4.1 验证216 5.4.2 准备216 5.4.3 解析217 5.4.4 访问控制225 5.4.5 方[0法0]覆盖225 5.5 初始化226 5.6 绑定本地方[0法0]实现228 5.7 Java虚拟机退出228 [0第0]6章 Java虚拟机指令集229 6.1 设定:“必须”的含义229 6.2 保留操作码229 6.3 虚拟机错误230 6.4 指令描述格式230 6.5 指令集描述232 [0第0]7章 操作码助记符320 附录A Limited License Grant327 |
| 编辑推荐 |
| Oracle官方发布,Java虚拟机技术创建人撰写,[0国0]内资深Java技术专家翻译 基于新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作 更多精彩,点击进入[0品0]牌店查阅>> |
作为一名在互联网行业摸爬滚打多年的程序员,我深知基础知识的重要性。市面上有很多关于Java语言本身的教学书籍,但真正能把JVM这个“黑盒子”讲透彻的却不多。《Java虚拟机规范(Java SE 8版)》就是这样一本让我相见恨晚的书。它不是一本教你如何写代码的书,而是告诉你代码是如何在机器上运行的。我尤其欣赏它对字节码指令集的详细解析,虽然一开始读起来有些挑战,但当我把一段简单的Java代码反编译成字节码,再对照书中的描述去理解每一条指令的作用时,那种豁然开朗的感觉是无与伦比的。这不仅提升了我对Java语言的理解深度,也为我理解更底层的系统原理打下了坚实的基础。
评分我一直认为,要成为一名真正优秀的程序员,仅仅掌握语言的语法和API是远远不够的,理解其运行机制至关重要。《Java虚拟机规范(Java SE 8版)》恰好填补了我在JVM这一块的知识空白。我喜欢它从宏观到微观的讲解方式,先是介绍了JVM的整体架构,包括类加载器、运行时数据区、执行引擎等核心组件,然后再深入到每个组件的细节。比如,在讲解运行时数据区时,它对堆、栈、方法区等内存区域的划分、生命周期以及存储内容的描述都非常清晰。特别是关于线程安全和并发问题,书中对Java内存模型(JMM)的阐述,以及如何通过`volatile`、`synchronized`等关键字来保证线程间的可见性、原子性和有序性,都提供了非常系统和深入的解释,这对于编写健壮的并发程序至关重要。
评分购买这本书,主要是想突破在性能调优方面的瓶颈。我经常遇到一些难以排查的性能问题,感觉像是雾里看花。读了《Java虚拟机规范(Java SE 8版)》之后,我才明白很多问题根源在于对JVM工作原理的理解不够。比如,对于JVM的类加载过程,书中对其时序、委托机制、以及双亲委派模型都做了详尽的说明,这让我能够更好地理解为什么某些类在特定情况下加载失败,或者如何优化类的加载速度。还有,书中对执行引擎的讲解,包括解释执行和即时编译(JIT)的原理,也让我对Java代码的执行效率有了更直观的认识。现在,我面对性能问题时,思路更加清晰,能够更快地定位到问题的根源,并给出有效的解决方案。
评分这本书的价值远超其价格。作为一名在算法和数据结构领域有一定造诣的开发者,我发现《Java虚拟机规范(Java SE 8版)》为理解这些概念在实际运行中的表现提供了绝佳的视角。例如,JVM的内存管理直接关系到各种数据结构的内存占用和访问效率。书中对堆内存的详细分析,包括对象分配、垃圾回收策略,让我能更深刻地理解为什么某些数据结构在特定场景下会表现出更好的性能。此外,对于方法的调用和栈帧的创建与销毁,书中细致入微的描述,让我能更好地理解递归、函数调用等基本操作的底层开销。总而言之,这本书是构建扎实计算机科学基础,尤其是与Java语言运行时环境相关的知识体系不可或缺的一部分。
评分这本书真的是一本宝藏!我是一名Java开发者,一直在寻找一本能够深入理解JVM底层原理的权威书籍,而《Java虚拟机规范(Java SE 8版)》完美地满足了我的需求。初次拿到这本书,就被它厚实的篇幅和严谨的排版所震撼,这预示着里面蕴含着深厚的知识。我喜欢它那种不回避细节的风格,对于垃圾回收机制、内存模型、类加载过程等关键概念,它都进行了极其详尽的阐述。比如,在讲述垃圾回收时,它不仅仅停留在“标记-清除”或“复制”等算法的表面,而是深入到各个算法的具体实现、参数调优、以及不同垃圾回收器(Serial, Parallel, CMS, G1)的优劣势和适用场景。这让我对JVM如何管理内存、避免内存泄漏有了更深刻的理解,也能够更有效地进行性能调优。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有