重磅推荐
【产品特色】


【编辑推荐】

本书不仅可以帮助有经验的Java程序员充分掌握Java 9到Java 11,也为新的开发者提供了学习的路径。书中用大量示例演示了如何充分利用现代的Java API和开发的实践。本版彻底修订了关于Java平台模块系统的内容。
全书分为两部分:部分对Java编程语言和Java平台的核心运行时方面进行了快速、清晰的介绍,第二部分介绍了Java发行版附带的新工具。

通过学习本书,你可以:
■ 快速了解语言细节的新进展,包括Java 9到Java 11的更改。
■ 使用Java基本句法学习面向对象编程。
■ 探索泛型、枚举、注解及lambda表达式。
■ 理解面向对象程序设计的基础技术。
■ 详解并发与内存管理,以及它们的紧密关联。
■ 使用Java集合处理常见的数据格式。
■ 使用JShell探究在新的交互式环境中的Java编程。
■ 熟练使用OpenJDK中的开发工具。


【内容简介】

本书共分为两部分:

第1部分介绍了Java开发环境、基本句法、面向对象编程、类型系统、内存管理以及并发机制;

第2部分介绍了Java原生的核心库以及一些中高级开发者常用的技术,包括文档约定、集合类、数据格式、文件和I/O操作、类加载、反射、模块化以及平台工具。

本书既适合新手Java程序员入门,也适合有多年Java开发经验的工程师阅读。


【作者简介】

本杰明-J-埃文斯(Benjamin J. Evans)是一位企业家、顾问,也是一位教育家。他是jClarity的联合创始人,jClarity是一家专注于软件性能工具的初创公司。他著有多本书籍,包括Optimizing Java,还获得过Java Champion和JavaOne Rockstar奖,并且经常发表性能、体系结构和并发等主题的演讲。

大卫-弗拉纳根(David Flanagan)是Mozilla的软件工程师,为O'Reilly撰写了若干著作,包括《JavaScript权威指南》《Ruby编程语言》,以及本版的先前版本。


【媒体评论】

“本书是当前Java编程的权威指南,我几乎每天都使用它以提醒自己思考使用某些特性和结构的原因,来让自己成为更有效率的程序员。”
—— Martjin Verburg
jClarity CEO兼伦敦Java社区领导者


【目录】

【部分 Java介绍9】

第1章 Java环境介绍11

1.1 Java语言、JVM和生态系统11

1.2 Java和JVM简史16

1.3 Java程序的生命周期17

1.4 Java的安全性19

1.5 Java和其他语言的比较20

1.6 回应对Java的一些批评21

第2章 Java的基本句法24

2.1 Java程序概览25

2.2 词法结构25

2.3 基本数据类型29

2.4 表达式和运算符36

2.5 语句52

2.6 方法69

2.7 类和对象75

2.8 数组79

2.9 引用类型86

2.10 包和Java命名空间90

2.11 Java源文件的结构94

2.12 定义并运行Java程序95

2.13 小结96

第3章 Java面向对象编程97

3.1 类简介97

3.2 字段和方法99

3.3 创建和初始化对象105

3.4 子类与继承109

3.5 数据隐藏和封装120

3.6 抽象类和方法127

3.7 修饰符小结131

第4章 Java类型系统133

4.1 接口133

4.2 Java泛型141

4.3 枚举和注解153

4.4 lambda表达式157

4.5 嵌套类型164

4.6 无法表示的类型和var174

4.7 小结175

第5章 Java的面向对象设计177

5.1 Java的值177

5.2 java.lang.Object类的重要方法178

5.3 面向对象设计概要182

5.4 带有lambda表达式的面向对象设计192

5.5 异常和异常处理195

5.6 Java编程的安全性197

第6章 Java实现内存管理和并发编程的方式199

6.1 Java内存管理的基本概念199

6.2 JVM优化垃圾回收的方式203

6.3 HotSpot堆205

6.4 终结机制208

6.5 Java对并发编程的支持211

6.6 使用线程221

6.7 小结223

【第二部分 使用Java平台225】

第7章 编程和文档约定227

7.1 命名和大小写约定227

7.2 实用的命名方式229

7.3 Java文档注释230

7.4 doclet238

7.5 可移植程序的约定239

第8章 使用Java集合242

8.1 集合API简介242

8.2 Java流和lambda表达式261

8.3 小结268

第9章 处理常见的数据格式269

9.1 文本269

9.2 数字和数学运算276

9.3 在Java 8中处理日期和时间281

9.4 小结287

第10章 文件处理和I/O288

10.1 经典的Java I/O288

10.2 现代的Java I/O294

10.3 NIO中的通道和缓冲区297

10.4 异步I/O300

10.5 网络303

第11章 类加载、反射和方法句柄309

11.1 类文件、类对象和元数据309

11.2 类加载的各个阶段311

11.3 安全的编程和类加载314

11.4 应用类加载知识315

11.5 反射318

11.6 方法句柄323

第12章 Java平台模块化327

12.1 为什么要模块化328

12.2 自行开发模块331

12.3 模块化的问题340

12.4 小结342

第13章 平台工具344

13.1 命令行工具344

13.2 介绍JShell360

13.3 小结363

附录A 附加工具365


【前言】

【前言】

这是一本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实现的替代方案。


【书摘与插画】


返回顶部