Author/s : Cay S Horstmann, Gary Cornell
Publisher : Prentice-Hall
Category : Advanced Java Review by : Campbell Ritchie
Rating : 8 horseshoes
I was pleased to have a copy of this book to review. It is by no means a beginners' book, moving at a fast pace, and often referring to later chapters or VolII, and using a rather "compressed" form of code in its examples. Users of previous editions will recognise the writing style, updated seamlessly so one cannot see the join between "old" and "new". Unlike in some books, there is no "project" running through it, nor end-of-chapter exercises. Again reflection appears unusually early position in this book. It has ~220 more pages than my 2005 edition, but part of that increase comes from moving the threading chapter into VolI.
It is an object-oriented book, but assumes readers already know what objects are. It describes aliases, returning mutable references and pass-by-value. Also warnings about potential security hazards and pitfalls.
Much of the book consists of a detailed description of different features of the platform. It has probably the clearest description of Java generics I have seen. The threading chapter is also up to date, with Locks before synchronized.
This book takes it for granted than the reader already know the working of data structures, Singletons, Immutable classes or invariants, so they are not described. Many differences from C++ are mentioned; although many C++ programmers already know Java, those are potential points of confusion. These differences are less relevant to people who come straight to Java.
I disagree with a few things: throwing an unchecked Exception to enable an overridden method to compile, Scanner#nextLine reads the next line.
One thing I was disappointed by: the book has only few references.
A good resource to get you up to speed in Java. When VolII comes out it will probably also be a very comprehensive resource.
Disclosure: I received a copy of this book from the publisher in exchange for writing this review on behalf of CodeRanch.
For what edition is this review? I have 8th edition, for Java 6SE, and am thinking, but not sure, that this must be for a 9th edition for Java 7. In the 8th edition, the chapter on threads is also in the first volume, so that line in the review made me think twice about my assumption.
One of the great benefits of this series, surviving for so many editions, is that the code examples run as advertised. Another is that the information is well organized for use as a reference.
I found myself (then a beginner) overwhelmed by the early introduction to reflection. Even the explanations for Interfaces were a bit daunting, that being a new programming concept for me. This led to a reading of "Head First Java" to get some of the basic concepts down. But I definitely head to Core Java almost as often as the online tutorials for info when I need a reference or a working code example to use as a template.