||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Java, advanced programming
Title: Hardcore Java
Author: Robert Simmons, Jr
Verdict: Interesting at times but ultimately disappointing
A fairly common question on some of the comp.lang.java.* newsgroups is "where do I go next? I've read Eckel/Head First Java/Deitel and Deitel/the Sun tutorial/whatever and I want to move up a level. What do I read" The usual answer is to point to Joshua Bloch's Effective Java or else to a book on a specialist topic: JDO, JDBC, EJB, JSP etc. What's been missing is something in the middle, a book that goes beyond the syntax and the basics of Java programming but something that remains generic enough to cover the language rather than something focused on a niche technology. It's this middle-ground that author Robert Simmons Jr has clearly identified and has aimed Hardcore Java at.
Unfortunately while the intention is good, the implementation is patchy to say the least.
The book opens with a quick Java review, focusing on a mixture of core issues (everything is an object), syntax (ternary operators, for example), access (public, private, protected) and common programming mistakes. It's not a bad start, though there is nothing here that you wouldn't find in any of the better introductions to Java.
From there we move into what we should presume are the more advanced topics. The first of this looks at the use of the final keyword. There's some good advice here, particularly as it drums in the mantra that it's better to let the compiler find errors than the users. However, it's something of a surprise to find that it takes 30 pages to get this message across.
There are similar issues in some of the other chapters. Either material is dragged out, or else the topics are more suitable for the novice programmer. For example there's a chapter on collections. This includes basic material such as the difference between identity and equality. Really, is this advanced material or fundamental basics that is covered by any good introduction? Where is the material on using collections to decouple classes? Where is the material on using collections for efficient memoization? As developers looking for 'hardcore Java' these are what we would have expected but they are missing completely. And having a section of how to choose a collection type is plain crazy in a book that pitches itself at the intermediate to advanced programmer.
This is typical of the book. The chapter on Data Modelling stretches to around 20 pages, but around half of these are on requirements analysis, natural language modelling etc. While these are interesting of themselves, they aren't specific to Java and are better suited in a book on analysis and design. In this case they feel like padding rather than core content.
Some of the other chapters do fare better. The chapter on constants was good, with some good discussion, good code and little in the way of extraneous material. Unfortunately this wasn't typical of most of the rest of the book.
Finally, the book closes with a look at what we've got to look forward to in JDK 1.5. Why? It feels like more padding rather than anything to do with the 'secrets of the Java masters' that we're promised on the cover. And we won't make a big deal of the back cover blurb that promises us that we'll 'master the art of writing and maintaining bulletproof and error-prone code'.
There is a need for a good book on advanced Java programming, it's what we were eagerly looking forward to, unfortunately this book disappoints. It's a shame, there is some interesting material here but overall the book failed to live up to its promise.