This is another book aimed at students learning to program, like Java for Students reviewed by Francis in the March '98 issue. It aims to teach Java from scratch, as a first programming language. The authors have chosen to use a light-hearted approach to their material, with leadenly punning sub-headings - for example a section about Container objects is called 'Containing Your Enthusiasm' - and use of an example which posits the existence of a coffee shop owned by an elephant who wants a flashy web site. There may be those who enjoy this gee-whiz style, but if I were a student, I'd find it patronising, especially as the actual writing when it addresses technical matters is as dull as most more sober texts.
Another effect of the chosen approach is that the book is padded out with a lot of supposedly amusing HTML source, which has little real interest or value. Each time a new concept is introduced a new applet is listed as an example, which means a new HTML page to contain the applet - typically having some jokey text content as well. I would have liked to have seen a more organic, OO approach by which a simple applet might grow in complexity through the book, by the introduction of new classes that build on what has gone before. (Fortunately the CD which accompanies the book has all theJava and HTML source on it, so at least the reader isn't expected to re-type all this verbosity.) On the positive side, many concepts are individually explained quite well and the Java 1.1 event-handling model is used rather than that of 1.0.2 (though there is no reference to any other 1.1 feature, which is just about acceptable in an elementary level text).
The most damning aspect of this book is that of programming style.
ifstatements terminated by a semi-colon rather than explicitly using a block, litter the code examples, along with public variables and other major sins. In the latter case, they do explain why private access is a good idea, but not until page 451, by which time the reader has had plenty of time to develop bad habits. Also, despite the title, there is little communication of what OO programming is about; inheritance, whether of interface or implementation is not discussed until page 487. As you might have guessed, the first half of the book is taken up with nitty-gritty issues such as loop constructs and some toy AWT programming. In my view, to learn OOP properly you should start with classes and objects, with the minimum of procedural syntax needed to get the ideas across. Introduction of the
switchstatement before discussing polymorphism tends to lead to a notion of the former as the natural way to solve problems of variation of behaviour and the latter as something exotic.
In summary, I couldn't really recommend this book as anything but a doorstop. Oh and the CD makes an excellent novelty coaster.