【前言】
这是一本Java案头参考书,适合放在键盘旁,编程时随时翻阅。本书第一部分快速准确地介绍了Java编程语言和Java平台的核心运行时概念。第二部分通过重要的核心API示例来解释关键概念。本书虽然涵盖Java 11,但考虑到有些行业还没有开始使用这个版本,所以只要有需要,我们就会特别注明Java 8、Java 9或者Java 10引入的特性。本书全面使用Java 11句法,包括var关键字和lambda表达式。
【第7版的变化】
本书第6版涵盖了Java 8,而第7版囊括了Java 11。然而,随着Java 9的出现,Java的发布过程发生了很大的变化,因此本书英文版在Java 9问世一年后才出版。Java 11也是自Java 8以来Java第一个长期支持(LTS)的版本,因此许多行业看起来会直接从Java 8跳到Java 11。
在第7版中,我们试图更新技术指南的概念。现代Java开发人员需要知道的不仅仅是句法和API。随着Java环境愈加成熟,并发、面向对象设计、内存和Java类型系统等内容都变得越来越重要,甚至在主流开发人员中也是如此。
由于大多数Java开发者可能只对Java的最新版本感兴趣,所以在第7版中我们通常只在Java 8及其之后的新特性出现时才加以强调。
Java模块系统(随Java 9发布)至少对部分开发者来说可能还是全新的,它代表了一个重大的变化。
【本书内容】
第一部分(前6章)介绍了Java语言和Java平台,这些内容一定要仔细阅读。本书偏向Oracle/OpenJDK(Open Java Development Kit)对Java的实现,但又不局限于此,使用其他Java环境的开发者仍然能看到很多对其他环境的介绍。第一部分包括如下内容:
第1章
这一章概述Java语言和Java平台,说明Java的重要特性和优势,包括Java程序的生命周期。最后会介绍Java的安全性,并回应一些针对Java的批评。
第2章
这一章详细介绍Java编程语言,包括Java 8的改动。这一章内容很多,也很详细,不过阅读前不需要读者有大量编程经验。有经验的Java程序员可以把这一章当成语言参考。有大量C和C++开发经验的程序员阅读这一章之后,也能快速了解Java的句法。只有少量编程经验的初学者经过认真阅读,应该也能学会Java编程,不过最好再结合其他资料一起学习(例如Bert Bates和Kathy Sierra合著的Head First Java,O’Reilly出版)。
第3章
这一章介绍如何利用第2章介绍的Java基本句法,使用Java中的类和对象编写简单的面向对象程序。这一章不要求读者有面向对象编程经验。新手程序员可以将其当成教程,有经验的Java程序员则可以将其当作参考。
第4章
这一章以前面对Java面向对象编程的说明为基础,介绍Java类型系统的其他方面,例如泛型、枚举类型和注解。全面了解类型系统之后,我们就可以讨论Java 8最大的变化—lambda表达式了。
第5章
这一章概述设计可靠的面向对象程序所需的一些基本技术,还会简单介绍一些设计模式及其在软件工程中的用处。
第6章
这一章讨论Java虚拟机代替程序员管理内存的方式,以及内存、可见性与Java并发编程和线程之间错综复杂的关系。
前6章主要介绍如何使用Java语言,也介绍了Java平台最重要的一些概念。本书第二部分则告诉读者如何在Java环境中完成实际的编程任务。这部分包含大量示例,以攻略方式撰写。第二部分包括如下内容:
第7章
这一章介绍Java编程中重要且运用广泛的重要约定,还会介绍如何使用特定格式的文档注释来让Java代码进行自我文档化。
第8章
这一章介绍Java的标准集合库,包含几乎对每个Java程序都很重要的数据结构,例如List、Map和Set。此外,还会详细介绍新引入的Stream抽象,以及lambda表达式和集合之间的关系。
第9章
这一章说明如何有效地使用Java处理常见的数据类型,例如文本、数字和时间相关的信息(日期和时间)。
第10章
这一章涵盖几种不同的文件访问方式,包括Java旧版本中的经典方式和现代的异步方式。这一章最后还会简单介绍如何使用Java平台的核心API进行网络连接。
第11章
这一章介绍Java隐含的元编程功能—首先介绍Java类型元数据的概念,然后介绍类加载,以及Java的安全模型和动态类型加载之间的关系。这一章还会介绍几个类加载程序和相对较新的方法句柄特性。
第12章
这一章介绍Java平台模块化(JPMS),它是Java 9引入的主要特性,还将介绍它带来的广泛变化。
第13章
Oracle提供的JDK(和OpenJDK)包含很多有用的Java开发工具,其中最重要的是Java解释器和编译器。这一章会介绍这些工具,以及jshell交互环境,还有使用模块化Java的新工具。
附录A
本附录介绍了Nashorn,它是一个运行在Java虚拟机上的JavaScript实现。Nashorn随Java 8发布,并提供了其他JavaScript实现的替代方案。