Author: Cay S. Horstmann & Gary Cornell
Publisher: Prentice Hall; 8 ed.,2007
Aimed at: All Java programmers
Pros: Well written classic text, intelligent discussion
Cons: Omits some popular technologies
Reviewed by: Alex Armstrong
This is a 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.
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 275 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 examples - 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.
If you are looking for a well written account of core Java simply buy a copy - unless of course you want to wait for the next edition to go with the next version of Java.