首页>参考读物>计算机科学与技术>软件与程序设计

Java技术手册(原书第7版)
作者 : [英] 本杰明·J.埃文斯(Benjamin J.Evans) [美]大卫·弗拉纳根(David Flanagan)著
译者 : 张世武 李想 译
出版日期 : 2021-08-30
ISBN : 978-7-111-68990-4
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 392
开本 : 16
原书名 : Java in a Nutshell: A Desktop Quick Reference, Seventh Edition
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

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

图书特色

图书前言

这是一本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实现的替代方案。
相关书籍
O’Reilly出版了一系列Java编程书籍,其中有几本与本书配套。如下所示:
Patrick Niemeyer和Daniel Leuck合著的Learning Java
这是一本全面的Java教程,包含XML和客户端Java编程。
Richard Warburton编写的Java 8 Lambdas
这本书详细介绍了Java 8引入的lambda表达式,而且介绍了使用Java早期版本的程序员可能不熟悉的函数式编程。
Bert Bates和Kathy Sierra合著的Head First Java
这本书使用独特的方式介绍Java。习惯形象化思维的开发者往往觉得这本书是对传统Java书籍的补充。
O’Reilly出版的所有Java书籍都可以在http://java.oreilly.com/找到。
排版约定
本书使用了下述排版约定。
斜体(Italic)
表示命令、电子邮箱地址、网址、FTP站点、文件及目录名。
等宽字体(Constant width)
表示Java代码,也表示编程时输入的字面量,例如关键字、数据类型、常量、方法名、变量、类名和接口名。
等宽斜体(Constant width italic)
表示函数的参数名称,一般还表示占位符,表明要换成程序中真正使用的值。有时还用来指代概念区域或代码行,例如statement。
这个图标表示提示或建议。
这个图标表示一般性说明。
这个图标表示警告或提醒。
O’Reilly在线学习平台(O’Reilly Online Learning)
近40年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和创新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问在线培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量教材和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书英文版配套网站https://bit.ly/java_nutshell_7e列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
Meghan Blanchette是本书第6版的编辑,她十分注重细节、性格开朗、专业扎实,在撰写本书过程中的每个重要时刻都为我们提供了额外的动力。
特别感谢Jim Gough、 Richard Warburton、 John Oliver、 Trisha Gee和Stephen Colebourne。
Martijn Verburg始终是我们的好朋友和商业伙伴,我们经常征求他的意见,他为我们提供了很多有用的建议。
Benjamin要特别感谢每一个给他反馈和帮助他提升写作能力的人。特别感谢Caroline Kvitka、 Victor Grazi、 Tori Weildt和Simon Ritter提出的有用建议。如果他没有采纳他们的出色建议,当然应该责怪他自己。

上架指导

计算机\程序设计

封底文字

本书不仅可以帮助有经验的Java程序员充分掌握Java 9到Java 11,也为新的开发者提供了学习的路径。书中用大量示例演示了如何充分利用现代的Java API和开发的最佳实践。本版彻底修订了关于Java平台模块系统的内容。
全书分为两部分:第一部分对Java编程语言和Java平台的核心运行时方面进行了快速、清晰的介绍,第二部分介绍了Java发行版附带的新工具。
通过学习本书,你可以:
■ 快速了解语言细节的新进展,包括Java 9到Java 11的更改。
■ 使用Java基本句法学习面向对象编程。
■ 探索泛型、枚举、注解及lambda表达式。
■ 理解面向对象程序设计的基础技术。
■ 详解并发与内存管理,以及它们的紧密关联。
■ 使用Java集合处理常见的数据格式。
■ 使用JShell探究在新的交互式环境中的Java编程。
■ 熟练使用OpenJDK中的开发工具。
“本书是当前Java编程的权威指南,我几乎每天都使用它以提醒自己思考使用某些特性和结构的原因,来让自己成为更有效率的程序员。”
—— Martjin Verburg
jClarity CEO兼伦敦Java社区领导者
Benjamin J. Evans是一位企业家、顾问,也是一位教育家。他是jClarity的联合创始人,
jClarity是一家专注于软件性能工具的初创公司。他著有多本书籍,包括Optimizing Java,还获得过Java Champion和JavaOne Rockstar奖,并且经常发表性能、体系结构和并发等主题的演讲。
David Flanagan是Mozilla的软件工程师,为O''Reilly撰写了若干著作,包括《JavaScript权威指南》《Ruby编程语言》,以及本版的先前版本。

作者简介

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

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

译者序

Java语言从1995年5月23日问世以来,已有26年了。在这段时光中互联网领域蓬勃发展,众多编程语言兴起又没落,但是Java始终长盛不衰,可以说一直是最受欢迎的语言。Java的成功,译者认为最大的因素是它拥有一个强大的社区,这让Java能够不断吸收各种语言的长处,从而实现自我革新、与时俱进。从Java的发展历程,我们能够看到Java逐渐吸收了一些函数式编程的特性,也兼具了一些动态语言的特性。也正是这种发展思路,让Java在网络服务开发、移动端开发、大数据以及人工智能领域都有深刻而广泛的应用。
本书共分为两部分,第一部分介绍了Java开发环境、基本句法、面向对象编程、类型系统、内存管理以及并发机制,第二部分介绍了Java原生的核心库以及一些中高级开发者常用的技术,包括文档约定、集合类、数据格式、文件和I/O操作、类加载、反射、模块化以及平台工具。本书既适合新手Java程序员入门,也适合有多年Java开发经验的工程师阅读。
本书的翻译工作经过了精心组织,在翻译时我们不仅结合了自己多年的Java实践经验,还参考了众多知名企业的业界专业人士的意见。本书的译者都拥有超过10年的Java开发经验。其中,张世武负责第1、2、3、8、10、11章的翻译及校对,李想负责第4、5、6、7、9、12、13章的翻译和校对及全书统稿。在本书翻译过程中,我们讨论了多次,力求达到信、达、雅。但由于本书涉及很多新概念,有的业界尚无统一术语,且译者水平有限,译稿中难免会出现一些问题,欢迎广大读者及业内同行批评指正。
在翻译本书的过程中,译者得到了来自蚂蚁金服人工智能团队多位同事的帮助。通过与这些资深工程师进行探讨,很多概念得以厘清,很多表述得到了恰当的中文表达。这里特别感谢王义、桂正科、林昊、朱仲书、李建强等经验丰富又对技术充满极大热忱的工程师。同时,还要感谢译者的家人,他们的支持与宽容为我们的翻译工作创造了宽松的环境。

译者

图书目录

序1
前言3
第一部分 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
作者简介384
封面简介384

教学资源推荐
作者: Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman
作者: 王珊珊 臧洌 张志航 编著
参考读物推荐
作者: David Buser, John Kauffman
作者: 王国辉 李伟 等编著