This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
  • Diomidis Spinellis. Book review: Java in a nutshell (2nd ed.): A desktop quick reference. ACM Computing Reviews, 39(8):397, August 1998. Green Open Access

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

Copyright © 1998 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or

Book review: Java in a nutshell (2nd ed.): a desktop quick reference

Diomidis Spinellis
University of the Aegean

Flanagan, David
Java in a nutshell (2nd ed.): a desktop quick reference
O’ Reilly & Associates, Inc., Sebastopol, CA, 1997,
610 pp., $19.95, ISBN 1-56592-262-X

"Java in a Nutshell" is a comprehensive advanced tutorial and reference book covering most parts of the Java language version 1.1. The book is divided into five parts. The first part is a Java crash course for C and C++ programmers. It presents in a concise way the language elements and structure and the Java object model. The second part introduces Java 1.1, an important new release of Java, which provides new language features and roughly doubles the number of standard classes and packages. Java’s tight integration of standard libraries with the language proper makes it possible to code applications providing sophisticated user interaction in a standard and portable way. The book’s third part details by means of examples the new application programming interface (API) elements introduced by Java 1.1. A separate chapter is dedicated to applets (Java applications that run within a Web browser), event handling, the new features of the abstract windowing toolkit (AWT), object serialization (a technology allowing objects to be mapped outside an application’s memory space), Java beans (Java’s software component model), internationalization, and reflection (the language’s new introspection capabilities). The last two parts of the book form the reference part covering the language and the API elements respectively. The book does not cover programming interfaces addressing database connectivity, remote method invocation, and security; according to the author these will be covered in a separate volume.

With a 70 line Java program presented on page 11 the book is clearly aimed at programmers who have some experience with C or Java. Both audiences will appreciate the material that is specially targeted at them. A chapter detailing the ways Java differs from C will allow C programmers to quickly jump onto the Java bandwagon, while a separate chapter describing the changes brought by Java 1.1 will update Java programmers to the current state of the art. The strength of the book, lies however in its reference section. The language and the API are both completely and succinctly documented. With the amount of material on Java available on line — including the book publisher’s own Java 1.1 quick reference — one might ask for the reason of purchasing a book covering the same material. The answer is simple: the book’s content, organization, and presentation provide an improved alternative to online material for the many situations where online access may not be practical.

New editions of computing books brought out in response to technology changes often merely consist of a change of the title and cover page with an additional chapter tacked onto the end of the previous edition. Refreshingly, Flanagan’s new edition manages to seamlessly integrate the Java 1.1 changes into the reference text of the previous edition while still providing enough context to allow seasoned Java 1.0 programmers to locate the important changes. In addition, the third part contains explanations and many examples on the new Java 1.1 features. Unfortunately, due to the amount of new material that had to be introduced, the expository material and many examples found in the book’s previous edition covering Java 1.0 had to be removed. This loss is mitigated by the availability of all examples from the first and the second edition of the book ON the Web. The examples are made available in source and compiled form so that interested readers can either download them to experiment with them, or directly experience their functionality from the environment of their Web browser.

The presentation of the reference material is exemplary. Typeface variety is put into good use for distinguishing the language identifiers, while a well-drawn class hierarchy chart provides an overview of each package. The book provides two well-organized indices: one providing a complete listing of all classes, methods, and fields, and one containing all other entries. The book’s few and minor typographical mistakes are documented on the Web. Sadly, the only bibliographical references provided consist of a listing of the publisher’s own Java-related book collection.

The breadth and depth of technologies covered by Java make it impossible to cover all of them in the space of a single book as it was possible for languages such as C. From language’s inception we saw a multitude of separate specialized volumes; currently Sun Microsystems’ Java Series comprises 13 books. "Java in a Nutshell" manages to provide the nearest approximation to a single volume reference of Java.