基本信息

编辑推荐
---------------------------Java虚拟机规范(Java SE 8版)---------------------------
Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译,Amazon畅销书基于最新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。
内容简介
计算机书籍
---------------------------深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)---------------------------
内容介绍
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎。
自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,两家主要网络书店的评论近90000条,内容上近乎零差评,是原创计算机图书领域不可逾越的丰碑。
第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。
全书一共13章,分为五大部分:
第一部分(第1章)走近Java
系统介绍了Java的技术体系、发展历程、虚拟机家族,以及动手编译JDK,了解这部分内容能对学习JVM提供良好的指引。
第二部分(第2~5章)自动内存管理
详细讲解了Java的内存区域与内存溢出、垃圾收集器与内存分配策略、虚拟机性能监控与故障排除等与自动内存管理相关的内容,以及10余个经典的性能优化案例和优化方法;
第三部分(第6~9章)虚拟机执行子系统
深入分析了虚拟机执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎,以及多个类加载及其执行子系统的实战案例;
第四部分(第10~11章)程序编译与代码优化
作译者
---------------------------深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)---------------------------
周志明 著:周志明
资深Java技术、机器学习和企业级开发技术专家,现任远光软件研究院院长,人工智能博士在读,著有知名畅销书《深入理解Java虚拟机:JVM高级特性与最佳实践》。
开源技术的积极倡导者和推动者,对计算机科学和相关的多个领域都有深刻的见解,尤其是人工智能、Java开发和敏捷开发等领域。曾受邀在InfoQ和IBM DeveloperWorks等网站撰写技术专栏。
著作颇丰,著有《深入理解Java虚拟机》《深入理解OSGi》,翻译了《Java虚拟机规范》等著作。其中《深入理解Java虚拟机》第1版出版于2011年,已经出至第2版,不仅销量好,而且口碑更好,累计印刷超过30次,仍长销不衰,是中文计算机图书领域公认的、难得一见的佳作。
---------------------------Java虚拟机规范(Java SE 8版)---------------------------
蒂姆·林霍尔姆(Tim Lindholm),资深Java虚拟机高级架构师,Java编程语言的主要贡献者之一,曾是Sun公司杰出工程师,目前主要负责移动设备上的Java应用。在到Sun公司工作之前,他曾经在美国阿贡国家实验室和Quintus公司从事与虚拟机和运行时系统相关的工作。
弗兰克·耶林(Frank Yellin),曾是Sun公司高级工程师,Java项目元老级成员。最近十余年中,他都从事着解释型及编译型语言的运行时系统方面的工作。在到Sun公司工作之前,他在Lucid公司从事Common Lisp编译器相关的工作。
吉拉德·布拉查(Gilad Bracha),Newspeak编程语言的创建者,曾是Sun公司杰出工程师。在到Sun公司工作之前,他在Animorphic Smalltalk System公司从事Strongtalk语言相关的工作。
亚历克斯·巴克利(Alex Buckley),Oracle公司Java编程语言和Java虚拟机规范负责人。
目录
---------------------------深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)---------------------------
前言
致谢
第一部分 走近Java
第1章 走近Java 2
1.1 概述 2
1.2 Java技术体系 3
1.3 Java发展史 4
1.4 Java虚拟机家族 12
1.4.1 虚拟机始祖:Sun Classic/Exact VM 12
1.4.2 武林盟主:HotSpot VM 13
1.4.3 小家碧玉:Mobile/Embedded VM 14
1.4.4 天下第二:BEA JRockit/IBM J9 VM 15
1.4.5 软硬合璧:BEA Liquid VM/Azul VM 16
1.4.6 挑战者:Apache Harmony/Google Android Dalvik VM 17
译者序
---------------------------Java虚拟机规范(Java SE 8版)---------------------------
译者序
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版)》,并保留了上一版的部分译者注,在此谨对四位译者深表感谢。同时感谢机械工业出版社华章公司诸位编辑与工作人员的帮助。
本书的风格和术语尽量与上一版相符,有时会酌情稍作调整。欢迎大家发邮件至eastarstormlee@gmail.com,或访问github.com/jeffreybaoshenlee/zh-translation-errata-jvmspec8/issues,给我以批评和指正。该网址还列有《中英文词汇对照表》,以供参考。
爱飞翔
前言
---------------------------深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)---------------------------
Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架(如Spring、MyBatis等)构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关Java虚拟机的资料却显得异常贫乏。
这种状况很大程度上是由Java开发技术本身的一个重要优点导致的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机千差万别,而Java虚拟机则在千差万别的物理机上面建立了统一的运行平台,实现了在任意一台Java虚拟机上编译的程序,都能在任何其他Java虚拟机上正常运行。这一极大的优势使得Java应用的开发比传统C/C++应用的开发更高效快捷,程序员可以把主要精力放在具体业务逻辑,而不是放在保障物理硬件的兼容性上。通常情况下,一个程序员只要了解了必要的Java类库API、Java语法,学习适当的第三方开发框架,就已经基本满足日常开发的需要了。虚拟机会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。因此,了解虚拟机的运作并不是普通开发人员必备的,或者说首要学习的知识。
然而,凡事都具备两面性。随着Java技术的不断发展,它已被应用于越来越多的领域之中。其中一些领域,如互联网、能源、金融、通信等,对程序的性能、稳定性和扩展性方面会有极高的要求。一段程序很可能在10个人同时使用时完全正常,但是在10 000个人同时使用时就会缓慢、死锁甚至崩溃。毫无疑问,要满足10 000个人同时使用,需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至有可能对程序运行状况没有任何改善。这里面有Java虚拟机的原因:为了达到“所有硬件提供一致的虚拟平台”的目的,牺牲了一些硬件相关的性能特性。更重要的是人为原因:如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。
其实,目前商用的高性能Java虚拟机都提供了相当多的优化参数和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。如果只是为了入门学习,让程序在自己的机器上正常工作,那么这些特性可以说是可有可无的;但是,如果用于生产开发,尤其是大规模的、企业级的生产开发,就迫切需要开发人员中至少有一部分人对虚拟机的特性及调节方法具有很清晰的认识。所以在Java开发体系中,对架构师、系统调优师、高级程序员等角色的需求一直都非常大。学习虚拟机中各种自动运作特性的原理也成为Java程序员成长路上最终必然会接触到的一课。通过本书,读者可以以一个相对轻松的方式学到虚拟机的运作原理。
本书面向的读者
(1)使用Java技术体系的中、高级开发人员
Java虚拟机作为中、高级开发人员修炼的必要知识,有着较高的学习门槛,本书可作为学习虚拟机的教材。
(2)系统调优师
系统调优师是最近几年才兴起并迅速流行起来的职业,本书中的大量案例、代码和调优实战将会对系统调优师的日常工作有直接的参考作用。
(3)系统架构师
保障系统的性能、并发和伸缩等能力是系统架构师的主要职责之一,而这部分与虚拟机的运作密不可分,本书可以作为他们制定应用系统底层框架的参考资料。
如何阅读本书
本书一共分为五个部分:走近Java、自动内存管理、虚拟机执行子系统、程序编译与代码优化、高效并发。各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴趣的专题开始阅读,但是每个部分各个章节间则有先后顺序。
这里并没有假定所有读者都在Java领域具备特别专业的技术水平,因此会在保证逻辑完整、描述准确的前提下,尽量用通俗的语言和案例去讲述虚拟机中与开发关系最为密切的内容。但是,本书毕竟是在探讨虚拟机的工作原理,不可避免地需要读者有一定的技术基础,而且本书的读者定位是中、高级程序员群体,对于一些常用的开发框架、Java类库API和Java语法等基础知识点,将假设读者已有所了解。
媒体评论
---------------------------深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)---------------------------
该书是国内近10年少见的原创计算机著作,它帮助国内数十万Java开发工程师和架构师加深了对JVM的认知,提升了Java水平,不可多得。
—— 陈斌易宝支付 CTO
当年看到本书的第1版时如获至宝,反复读了很多遍,让我对Java有了深入了解。书中内容深入浅出,原理和实践都讲得很透彻。第3版在内容上有很多更新,强烈推荐给所有技术从业者。
—— 张新波同盾科技联合创始人兼副总裁
本书是讲解JVM原理的经典著作,详细介绍了内存管理、多线程、编译过程、执行子系统、高并发优化等关键技术,第3版中新增了大量最新的Java技术,值得再仔细阅读。
—— 陈运文国家万人计划专家、达观数据CEO
JVM是Java的核心和基础,深入理解它,不仅有助于提升Java程序的性能,还能帮助我们更深入地理解底层语言的运行机制。希望本书能帮助更多Java工程师提升功力。
—— 郭炜易观国际CTO
本书对Java内核体系进行了系统梳理,详细讲解了Java中的关键组件和体系,如Java的内存管理、JVM系统的全局体系、性能调优、高并发等,让读者可以非常全面地了解JVM的运行机制和调优原理。
—— 罗李滴滴大数据架构部负责人、Apache Alluxio PMC&Committer
只有掌握JVM的原理,才能够在高并发、大容量和低延时的极端场景下做好架构和编码,这对程序员的要求极为严苛,本书为广大Java程序员和架构师提供了非常棒的指导。
—— 赵成蘑菇街技术总监
本书值得所有Java工程师仔细研读,在它的基础上再去深入挖掘,必定能对Java开发和相关系统的设计有真正的理解,完成从应用开发到系统设计的关键一步。
—— 张力柯腾讯游戏Turing Lab副总监