Author: Cay S. Horstmann & Gary Cornell
Publisher: Prentice Hall, 9th ed
Audience: All Java programmers
Reviewed by: Alex Armstrong
This ninth edition is a revised and updated incarnation of classic - but this is no reason not to review it.
The first important point is that this is a not a book for the non-programmer. If you program in another language or have "messed about" with Java then this book forms a good and intelligent introduction to the core of the language with some extra bits tagged on. The latest edition sees the size grow by some 200 pages due to the coverage of the latest Java technologies. The book has been updated to include SE7 topics but there are no new chapters and the structure of the book is unchanged.
It starts with an overview including some history which is now seeming a long way off. It then goes into getting started and using an IDE - Eclipse. The only problem with using Eclipse is that it doesn't have a visual designer for Swing so the first example of a GUI is constructed in code.
The following chapters then deal with the core of the language in a logical order - simple data structures, objects, inheritance, Interfaces and inner classes. By the time you have finished Chapter 6 (around 300 pages) you have covered most of the main features of the language.
From the core language the book moves on to the core user interface. Getting started with Swing, event handling and components provide an introduction to building the UI.
After a brief diversion into deployment - JARs an Applets - the main development of the Java language continues: exceptions, generics, collections and threading. These topics are often considered to be advanced and so you have to wonder what is in the companion volume II - Advanced topics.
The subject matter is fairly standard but it is important to know that the way it is presented is very good. There is lots of intelligent discussion of the how and why and the authors include lots of comments about where the Java designers and implementers went wrong and removed a useful feature or added one that wasn't necessary. This is a simple and direct approach to telling you about Java - it has few tricks or embellishments and simply gets on with the job.
While this is a book only suitable for an existing Java programmer, it is important to keep in mind that it isn't really an advanced book. There are lots of advanced topics - program methodologies for example - that it simply ignores. It also ignores the many Java-based technologies that some advanced programmers consider to be core to their particular use of the language. However as Volume 1 of a two-part series, with this book on the fundamentals and a companion on Advanced Features, it has to draw the line somewhere.
If you are looking for a well written account of core Java simply buy a copy. It is the best of the "big book" introductions to Java.