The intended audience is novice programmers upwards. Before I read this book I knew almost nothing about Java and I have reviewed it from that point of view. It has 5 sections covering basic language, OO concepts, GUI programs, Advanced topics and Web technologies.
It covers the basic language features in a workmanlike fashion but occasionally gets too verbose. For example it is not really necessary to list every single method for the String class taking up 3 pages of text. Lists of class methods can easily be put into an Appendix.
For a programmer from a traditional background it would have been useful to have more explanation of the topics that are different from normal programming. For example: Interfaces and events.
While discussing the collection classes the use of the "import" command mysteriously creeps into the code examples. There is no commentary and no mention of it in the index either (maybe it was generated from the text). We are left to guess its meaning. This is not an isolated instance as earlier the same thing happens to the comment syntax - it just appears in some code. And later I am left wondering what the "package" command does.
The book does contain many complete examples of how to tackle various topics and for this alone it may prove beneficial for some readers.
The two authors have contrasting writing styles and seem to have written different chapters. I have never noticed this before in works by more than one author but in this case the combined effort does not quite knit together as well as it should.
There is a website reference from where you can download the code examples but there is no list of errata (I noticed quite a few). It would also have been helpful to have more complete instructions on installing and using the SDK, which you must download from the Sun website if you want to try anything out.
I wanted to like this book but it tries to offer something for everyone and that is its main downfall. It is not quite good enough for the complete novice and is probably not sufficiently focused for the proficient Java programmer.
Most books have some form of misprint but one particularly amusing malapropism was: "...the three tenants of OO programming are..."