内容简介
本书完整而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及字节码验证的规则。
作者简介
从1999年4月出版《Java虚拟机规范(第2版)》至今,已经14年过去了,虽然此规范在JDK5发布的时候做了较大的更新,但却始终没有发布完整的规范。2011年6月28日,最新的《Java虚拟机规范》终于完成并在7月份正式发布。对于想了解Java虚拟机的程序员来说,本书是必须阅读的;想深入了解Java语言细节的程序员阅读本书也有极大好处,但是《Java虚拟机规范》、《Java语言规范》发布十余年,一直没有中文译本,这令国内不少对Java虚拟机感兴趣但英语能力较弱的程序员只能望书兴叹。
2011年年初,本书还处于草稿状态时,我就开始关注本书,并陆续对其中第1、2、6、7章进行了翻译,到2011年9月时完成了200余页的译稿。这时候又在国内著名Java社区ItEye中结识了另外三名译者薛笛、吴璞渊和冶秀刚,我们在随后的两个多月的时间里共同完成了其余章节的翻译和校对。在2013年,机械工业出版社获得了这本书的版权,并且采用了我们翻译的版本出版,因此有了这本中文版图书。
本书并非某一款虚拟机实现的说明书,它是一份保证各个公司的Java虚拟机实现具备统一外部接口的契约文档,书中的概念和细节描述曾经与Sun公司早期虚拟机的实现高度吻合,但是随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述的内容产生了越来越大的差距。作者也在书中不同地方反复强调:虚拟机规范中所提及的“Java虚拟机”皆为虚拟机的概念模型而非具体实现。实现只要保证与概念模型最终等效即可,而具体实现的方式无需受概念模型束缚。因此,通过《Java虚拟机规范》分析程序的执行语义问题(虚拟机会做什么)是十分合适且具权威性的,但分析程序的执行行为问题(虚拟机是怎样做的、性能如何)则意义不大,如果需要对具体虚拟机实现进行调优、性能分析等,我推荐在本书基础上继续阅读《Java Performance》和《Oracle JRockit:The Definitive Guide》等书。
在翻译过程中,我们尽最大努力保证作品的准确性和可读性,力求在保证语义准确的前提下,尽可能使用通俗易懂的方式向给各位读者介绍Java虚拟机的约束与运作原理。为实现此目标,我们在翻译专有技术名词、偏僻词时用括号保留了原文,并专门在多处读者理解起来可能有困难的地方,添加了“译者注”加以解释。