深入理解java虚拟机 (一) 第二版

前言:

Java是目前用户最多、使用范围最广的软件开发技术之一。Java 的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、 Java编程语言及许多第三方Java框架(如Spring、Struts 等)构成。在国内,有关Java API Java语言语法及第三方框”架的技术资料和书籍非常丰富, 相比之下,有关Java虚拟机的资料却显得异常贫乏。.这种状况在很大程度上是由Java开发技术本身的一-个重要优点导致的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机器的情况千差万别,而Java虚拟机则在差万别的物理机上建立了统= -的运行平台,实现了在任意- - 台虚拟机上编译的程序都能在任何一台虚拟机上正常运行。这-极大优势使得Java应用的开发比传统CLC++应用的开发更高效和快捷,程序员可以把主要精力集中在具体业务逻辑上,而不是物理硬件的兼容性上。在一般情况下, 一个程序员只要了解了必要的Java API、Java 语法,以及学习适当的第三方开发框架,就已经基本能满足日常开发的需要了,虚拟机会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。因此,了解虚拟机的运作并不是一-般开发人员必须掌握的知识。然而,凡事都具备两面性。随着Java技术的不断发展,它被应用于越来越多的领域之中。其中-些领域,如电力、金融、通信等,对程序的性能、稳定性和可扩展性方面都有极高的要求。程序很可能在10个人同时使用时完全正常,但是在10 000个人同时使用时就会缓慢、死锁,甚至崩溃。毫无疑问,要满足10 000个人同时使用需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件效能无法等比例地提升程序的运作性能和并发能力,甚至可能对程运作状况完全没有任何改善。这里面有Java虚拟机的原因:为了达到给所有硬件提供-致的虚拟平台的目的,牺牲了- -些与硬件相关的性能特性。更重要的是人为原因:如果开发大员不了解虚拟机- -些技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。其实,目前商用的高性能Java虚拟桃都提供了相当多的优化特性和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。如果只是为了人门学习,让程序在自己的机器上正常运行,那么这些特性可以说是可有可无的;如果用于生产开发,尤其是企业级生产开发,就迫切需要开发人员中至少有一部分人对虚拟机的特性及调节方法具有很清晰的认识,所以在Java开发体系中,对架构师、系统调优师、高级程序员等角色的需求一直都非常大。学习虚拟机中各种自动运作特性的原理也成为了Java 程序员成长道路上必然会接触到的- -课。本书可以使读者以-一种相对轻松的方式学习虚拟机的运作原理,对Java程序员的成长也有较大的帮助。

第2版与第1版的区别

JDK 1.7在2011 年7月28日正式发布,相对于2006年发布的JDK 1.6,新版的JDK有了许多新的特性和改进。本书的第2版也相应地进行了修改和升级,把讲解的技术平台从JDK 1.6提升至JDK 1.7。例如,增加了对JDK 1.7中最新的G1收集器,以及JDK 1.7中JSR-292 knvokeDynamic (对非Java语言的调用支持)的分析讲解等内容。在第1版出版后,笔者收到了许多热心读者的反馈见,部分读者提出OpenJDK开源已久,第厂版却很少有直接分析OpenJDK源码的内容,有点“视宝山而不见”的感觉。因此,在本书第2版中,笔者特别加强了对这部分内容的讲解,其中在第1章中就介绍了如何分析、调试OpenJDK源码等。在本书后续章节中,不少关于功能点的讲解都直接使用OpenJDK中的HotSpot源码或者JIT编译器生成的本地代码作为论据。如何把Java虚拟机原理中许多理论性很强的知识、特性应用于实践开发,是本书贯穿始终的指。由于笔者希望在本书第2版中进一步加强知识的实践性,因此增加了许多对处理JVM常见问题技能的讲解,包括如何分析GC日志、如何分析JIT编译器代码优化过程和生成代码等。并且,在第1版的基础上,第2版中进一步增加了若干处理JVM问题的实践案例供读者参考。另外,本书第2版还修正了第1版中多处错的、有歧义的和不完整的描述。有关勘误信息,可以参考第1版的勘误页面(tp://icyfenix.iteye.com/blog/1119214)。

本书面向的读者

(1)使用Java技术体系的中、高级开发人员
Java虚拟机作为中、高级开发人员必须修炼的知识,有着较高的学习门槛,本书可作为学习虚拟机的优秀教材。
(2)系统调优师
系统调优师是近几年才兴起的职业,本书中的大量案例、代码和调优实战将会对系统调优师的日常工作有直接的帮助。
(3)系统架构师
保障系统的性能、并发和伸缩等能力是系统架构师的主要职责之-一,而这部分与嘘拟机的运作密不可分,本书可以作为他们制定应用系统底层框架的参考资料。
 

发布了298 篇原创文章 · 获赞 107 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/ywl470812087/article/details/105023764