Java 系列
出版社:Addison-Wesley
电话/传真:617-955-3700; 617-942-3077
网址:http://www.aw.com/devpress/
评论人:Kirk Petersen
如果您最近去过书店的计算机专区,您会看到数量惊人的 Java 相关书籍。许多书店都设有专门的 Java 专区,就像它们设有编程语言和互联网专区一样。更令人难以置信的是,第一本 Java 书籍仅仅在一年前才出现。
Java 系列是由 Java 团队成员撰写的九本书的合集。本系列由 Addison-Wesley 出版社出版。
由于 Java 系列 来自实际软件的编写者,因此它是关于 Java 编程语言、虚拟机和 API 的官方信息来源。如果您想要 Java 相关问题的权威答案,这些书是您应该查找的地方。
本评论涵盖了 Java 系列 中的五本书。前四本是 Java 虚拟机规范、Java 语言规范 和 Java 应用程序编程接口(两卷)。这些是描述整个 Java 技术的参考资料。还包括对 Java 并发编程 的评论,它不像其他参考书那样具有权威性,但当然也值得在本系列中占有一席之地。
书名:Java 虚拟机规范
作者:Tim Lindholm 和 Frank Yellin
价格:$36.75
ISBN:0-201-63452-X
人们常常忘记或不知道 Java 不仅仅是一种编程语言。实际上,Java 最重要的部分可能是虚拟机。它提供了二进制可移植性,这使得 Java 在网络环境中如此重要,如果没有互联网,Java 又会是什么样子呢?这就是为什么我选择从 Java 虚拟机规范 开始。
看待 JVM 的一种方式是将其视为另一个 32 位 CPU。它具有许多相同的组件,包括指令集、寄存器以及对类似数据类型集执行常见操作的能力。在许多方面,Java 虚拟机规范 就像您从主要 CPU 制造商处获得的参考手册一样——它包含指令参考和其他参考资料。
然而,正如 JVM 不完全像大多数 CPU 一样,Java 虚拟机规范 也不完全像大多数 CPU 参考手册。这是一本写得很好的书,不仅仅是指令集参考和数据类型解释。这本书(不包括指令集参考)可以通读并欣赏。例如,第 7 章提供了一个非常有趣的教程,名为“为 JVM 编译”。这不仅对编译器编写者有用,而且还可以让任何 Java 程序员深入了解他们的代码的真正作用。实际上,这本书对这些信息的呈现非常出色,以至于它可能会鼓励那些原本不会这样做的人编写有用的字节码实用程序。
本书以简短而不引人注目的引言开始。它包括一页 Java 历史、一页虚拟机介绍和一个非常简短的章节摘要。
第 2 章的标题是“Java 概念”,它总结了 Java 编程语言的特性。下一章详细介绍了 Java 虚拟机的结构。定义了数据类型、寄存器、堆栈和许多类似的概念。类文件格式和指令集在第 3 章末尾介绍。
在第 4 章中,定义了类文件格式。像大多数文件格式描述一样,给出了伪代码数据结构,显示了数据在文件中的排列方式。这种结构中的每个字段都以易于理解和彻底的方式进行描述。
常量池解析是第 5 章的主题。常量池类似于传统语言中的符号表。在 Java 中,常量池允许指令集使用一对字节而不是全名来引用对象。除了描述常量池的原因外,本章还解释了常量池如何在加载、链接和初始化类文件的过程中使用。
Java 虚拟机的指令集在第 6 章中找到。简短的介绍之后是 180 页组织良好的字节码描述。
第 7 章概述了将源代码编译为 JVM 的过程。这是通过 Java 源代码和相应的 JVM 字节码示例完成的。然后,作者描述了编译器如何以及为何生成它所生成的字节码。本章中的许多示例描述了从编译简单的 for 循环到抛出和处理异常的所有内容。
Java 虚拟机规范 是一本非常有用的书,非常值得一读。虽然它从根本上来说是一本参考书,但它却非常容易阅读。因此,我向任何想更多了解 Java 底层工作原理的人推荐它。
书名:Java 语言规范
作者:James Gosling、Bill Joy 和 Guy Steele
价格:$36.75
ISBN:0-201-63451-1
Java 语言规范 定义了 Java 编程语言。对于那些试图学习 Java 编程语言的人来说,您应该知道这本书不是一本教程。它是一本参考书,其中包含 Java 编程语言的每一个可能的细节。
除了定义语言结构外,Java 语言规范 还包含许多代码示例,有助于说明特定的规则。这些非常有用,特别是由于描述通常倾向于语法精确性而不是人类理解。
引言包括对 Java 的快速描述和章节摘要。紧随其后的是简短的章节,描述了本书其余部分用于解释 Java 语言的语法。
Java 的词法结构在第 3 章中描述。它首先介绍了一些关于 Java 如何使用 Unicode 的注释,然后深入到源代码文件的底层解析。这包括诸如空格、标识符、关键字等的定义。本章以各种类型的字面量、分隔符和运算符的定义结束。
“类型、值和变量”(第 4 章)定义了 Java 中可用的各种类型。首先讨论了原始类型,包括整数、浮点和布尔类型的范围和运算,然后定义了引用类型。由于引用处理对象,因此概述了一些更原始的对象,包括类 Object 和类 String。本章以 Java 中七种不同类型的变量的摘要结束。
“转换和提升”(第 5 章)定义了可以更改变量类型的方式。定义了原始类型和引用类型的转换,以及唯一的字符串转换。
第 6 章定义了 Java 中名称的概念。名称用于引用包、类、对象的成员和变量。还定义了作用域、继承和访问控制的概念,只要它们在命名中使用。
在 Java 中,类可以根据其功能组织成组。这些组称为包,在第 7 章中定义。本章包括包的命名和存储约定。
类和接口在第 8 章和第 9 章中描述。这些章节很好地描述了从修饰类和接口的关键字到继承和重载的工作原理的所有方面。
第 10 章描述了数组在 Java 中的工作方式。本章首先断言数组是对象,但属于不同的类型。本章描述了数组与其他对象的相似之处和不同之处。
异常在第 11 章中定义。本章首先基本描述了语言结构如何与 Throwable 对象交互。它继续讨论异常的原因,本章末尾描述了程序员将面临的所有异常。
第 12 章以有趣的方式定义了语言如何与 Java 虚拟机交互。它首先描述了虚拟机启动时所做的事情。它继续描述类的加载和链接,最后描述了虚拟机如何退出。
本书最有趣的章节可能是第 13 章。它描述了旧类文件应在哪些方面与新类文件保持兼容。作者给出了许多代码示例,这些代码应该是二进制兼容的,以及如何确保它们是二进制兼容的。
第 14 章和第 15 章描述了 Java 语言更传统的方面。定义了语句,然后概述了语句的执行方式。
在 Java 中,必须先为局部变量赋值才能使用它。这称为“明确赋值”,是第 16 章的主题。它阅读起来非常缓慢,并且很可能最好用作参考。
线程和锁在第 17 章中介绍,首先描述了当多个 Java 代码线程同时执行时,情况有何不同。本章以使多线程代码变得困难的一些情况以及可以解决这些问题的相应 Java 结构结束。
Java 采用了 C++ 中存在的两种注释样式,并添加了第三种。这种新的注释样式允许将类接口、层次结构和程序员文档转换为网页。第 18 章给出了描述和示例。
第 19 章列出了 LALR(1) 语法——可能对编译器编写者非常感兴趣。
最后,本书以 API 参考结束,涵盖了 java.lang、java.util 和 java.io 包。这些是所有 Java 环境中必须存在的核心包。与 Java API 相比,此处对它们的介绍更详细。
Java 语言规范 是一本很好的语言参考书。但是,我不认为大多数人需要一本如此具体的书。我主要向编译器编写者或任何其他构建基于语言的工具的人推荐它。
书名:Java 应用程序编程接口,第 I & II 卷
作者:James Gosling、Frank Yellin 和 Java 团队
价格:每本 $38.75
ISBN:0-201-63453-8, 0-201-63453-7
Java API 是一本参考书,描述了 Java 开发工具包中包含的类。它相当简单,不包含非常详细的描述。
本书分为两卷单独出售。第一卷包含“类层次结构图”、“java.lang 包”、“java.io 包”、“java.util 包”和“java.net 包”。第二卷包含“java.awt 包”、“java.awt.image 包”、“java.awt.peer 包”和“java.applet 包”。
我很难推荐 Java API。现在有几本书更划算。类库 基本上是 Java API 的超集,其中包含更多关于类工作方式的信息,并且包含大量代码示例。或者,如果您想省钱,您可能想购买 O'Reilly and Associates 的 Java in a Nutshell。它有一个非常好的,虽然很小的 API 参考,而且仅售 $20。它是我最喜欢的 Java 书籍,并且经过近一年的持续使用,它既好又软。
书名:Java 并发编程
作者:Doug Lea
价格:$23.86
ISBN:0-201-69581-2
虽然市面上有许多 Java 书籍,但我还没有找到很多使用 Java 来教授高级编程概念的书籍。Java 并发编程 就是其中之一。我一直都知道 Java 的并发机制,但这本书教会了我如何将它们用于实际工作。
引言比此处评论的其他四本 Java 书籍的引言要好得多。首先,作者列出了并发的一些优点和局限性。然后给出了本书的目的,随后是典型的章节摘要和对 Java 并发机制的描述。
第 2 章定义了关于并发编程的安全概念;它概述了多个线程可以在同一数据上执行的方法,以便“永远不会发生坏事”。这些方法包括使用不可变对象、同步和包含。
活跃性可以被认为是安全性的对立面。第 3 章描述了活跃性问题以及可用于解决这些问题的方法。
第 4 章涵盖了状态相关操作的概念。作者描述了当达到一组状态时可以采取的许多可能的操作。
并发控制在第 5 章中介绍。介绍了三种并发控制方法。示例使用 Java 显示,但这些概念在任何语言中都很有用。
第 6 章的标题是“线程中的服务”。它解释了如何将常见任务分离到线程中。在这一点上,本书变得非常有趣,因为读者可以看到并发概念如何在实际程序中工作。
第 7 章描述了程序实施的流策略如何影响安全性和活跃性问题。最后,第 8 章概述了协调更多独立对象的方法。
Java 并发编程 是一本非常好的书。很高兴看到一本书深入研究一个尚未被过度炒作的主题(例如 Applet 类)。
如果您在进行多线程编程方面有很多经验,您可能会发现 Java 并发编程 有点太简单和模糊。可能您只需要对 Java 的并发机制进行描述。但是,如果您在制作并发程序方面几乎没有或根本没有经验,那么这本书可以教您很多东西。
整个系列运作良好。正如营销材料所说,它代表了 Java 信息的权威来源。我还没有发现本系列以外的任何书籍在原始信息方面增加了很多内容。
虽然这些书制作精良并提供有价值的信息,但我不能建议每个人都去购买它们。如果您像我一样是预算有限的学生,您可能需要考虑像 Java in a Nutshell (O'Reilly and Associates) 这样的东西。它为试图学习 Java 的 C 程序员提供了教程,并且还提供了良好的 API 参考。查找关于 Java 的廉价信息的其他地方包括 SSC API 参考卡和 JavaSoft 的网页。
另一方面,如果一本 30-40 美元的参考书的价格不会对您的钱包造成影响,并且您需要拥有 Java 信息的官方来源,那么这五本书都是非常划算的交易。
最后一个考虑因素——Java 开发工具包的新版本刚刚发布。它为类库引入了许多更改和新增功能。因此,我建议等待购买包含 JDK 1.1 信息的 API 参考。
