I posted a very similar review some time ago on [...] and very recently on www.amazon.com
I was pleased to have a copy of this book to review. It is by no means a beginners' book, moving at too fast a 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 from Vol II. 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 probably not relevant to people who come straight to Java. I am happy to ignore those C++ points, though I know they annoy some other people. 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. Otherwise I would have awarded it 5*. I disagree with anybody who complains this is not a good tutorial; it is not intended as a tutorial, but is a good resource to get you up to speed in Java.
This is an excellent book for learning Java, although some programming experience is needed - it's probably not suitable for an absolute beginner. All the example code used in the book is available to be downloaded, so you run it without having to manually type it in, and the programs are well written and well explained. Definitely worth the money! :)
Good book. Easy to understand. Plenty of explanations and useful information. I tried to learn Java watching online tutorials and felt that there is lack of information. A book is old trusted way learn things properly. Highly recommended.