深入理解Java 7 ——核心技术与最佳实践
我最早开始接触Java语言是在大学的时候。当时除了用Java开发一些小程序之外,就是用Struts框架开发Web应用。在后来的实习和工作中,我对Java的使用和理解更加深入,逐渐涉及Java相关的各种不同技术。使用Java语言的一个深刻体会是:Java语言虽然上手容易,但是要真正掌握并不容易。
Java语言对开发人员屏蔽了一些与底层实现相关的细节,但是仍然有很多内容对开发人员来说是很复杂的,这些内容恰好是容易出现错误的地方。我在工作中就经常遇到与类加载器和垃圾回收相关的问题。在解决这些问题的过程中,我积累了一些经验,遇到类似的问题可以很快地找到问题的根源。同时,在解决这些实际问题的过程中,我意识到虽然可以解决某些具体的问题,但是并没有真正理解这些问题的解决办法背后所蕴含的基本原理,仍然还只是处于一个“知其然,不知其所以然”的状态。于是我开始阅读Java相关的基础资料,包括Java语言规范、Java虚拟机规范、Java类库的源代码和其他在线资料等。在阅读的基础上,编写小程序进行测试和试验。通过阅读和实践,我对Java平台中的一些基本概念有了更加深入的理解。从2010年开始,我对积累的相关知识进行了整理,在InfoQ中文站的“Java深度历险”专栏上发表出来,受到了一定的关注。
2011年7月,在时隔数年之后,Java的一个重大版本Java SE 7发布了。在这个新的版本中,Java平台增加了很多新的特性。在Java虚拟机方面,invokedynamic指令的加入使虚拟机上的动态语言的性能得到很大的提升。这使得开发人员可以享受到动态语言带来的在提高生产效率方面的好处。在Java语言方面,语言本身的进一步简化,使开发人员编写代码的效率更高。在Java类库方面,新的IO库和同步实用工具类为开发人员提供了更多实用的功能。从另外一个角度来说,Java SE 7是Oracle公司收购Sun公司之后发布的第一个Java版本,从侧面反映出了Oracle公司对Java社区的领导力,可以继续推动Java平台向前发展。这可以打消企业和社区对于Oracle公司领导力的顾虑。Java SE 7的发布也证明了基于JCP和OpenJDK的社区驱动模式可以很好地推动Java向前发展。
随着新版本的发布,肯定会有越来越多的开发人员想尝试使用Java SE 7中的新特性,毕竟开发者社区对这个新版本期待了太长的时间。在Java程序中使用这些新特性,可以提高代码质量,提升工作效率。Java平台的每个版本都致力于提高Java程序的运行性能。随着新版本的发布,企业都应该考虑把Java程序的运行平台升级到最新的Java SE 7,这样可以享受到性能提升所带来的好处。对于新的Java程序开发,推荐使用Java SE 7作为标准的运行平台。本书将Java SE 7中的新特性介绍和对Java平台的深入探讨结合起来,让读者既可以了解最新版本的Java平台的新特性,又可以对Java平台的底层细节有更加深入的理解。
读者对象及如何阅读本书
本书面向的主要读者是具备一定Java基础的开发人员和在校学生。本书中不涉及Java的基本语法,因此不适合Java初学者阅读。如果只对Java SE 7中的新特性感兴趣,可以阅读第1章到第6章;如果对Java中的特定主题感兴趣,可以根据目录有选择地阅读。另外,第1章到第6章虽然以Java SE 7的新特性介绍为主,但是其中也穿插了对相关内容的深入探讨。
本书可分为三大部分:
第一部分为Java SE 7新特性介绍,从第1章到第6章。这部分详细地介绍了Java SE 7中新增的重要特性。在对新特性的介绍中,也包含了对Java平台相关内容的详细介绍。
第二部分为Java SE 7的深入探讨,从第7章到第13章。这部分着重讲解了Java平台上的底层实现,并对一些重要的特性进行了深入探讨。这个部分所涉及的内容包括Java虚拟机、Java源代码和字节代码操作、Java类加载器、对象生命周期、多线程与并发编程实践、Java泛型和Java安全。
第三部分为Java SE 8的内容展望,即第14章。这部分简要介绍了Java SE 8中将要增加的新特性。
本书还通过两个附录对OpenJDK(附录A)和Java语言的历史(附录B)进行了简要的介绍。