Overall, this book is easy to read and covers a good selection of topics. In doing so it meets its stated aim of 'providing an introduction to the major technologies you are likely to meet as a practicing programmer'.
The first of the five major sections deals with OO design and shows some novice OO design errors. For example, the matter of encapsulation is dealt with by stating that data members should not be made publicly available but accessed via Get/Set methods. Rightly understood, OO encapsulation is far more than this. No mention is made of design patterns when discussing OO design. This first major section deserves to be skipped by novice and more advanced OO designers alike.The other four major sections seem well balanced and cover their topics well.
However, the book is already a little dated. For example, in the chapter on 'Distributed Objects' SOAP is not even mentioned. It could be argued that SOAP is not a purely Java concept but then neither is CORBA which does get mentioned. One of the code samples from another chapter elicits a deprecated warning from the Java compiler I used (JDK 1.3.0).
Not all of the code samples will compile. The compilation issues can be solved easily but their presence indicates that the code samples haven't even been compiled, let alone tested.
In summary, whilst the book is very readable and covers most of the topics you would meet in programming using the Java language; I find it difficult to recommend it as a must-have due to its slightly dated content, poor section on OO design and some source code samples which do not compile.