Author: Jim Waldo
Publisher: O'Reilly, 2010
Aimed at: Java programmers
Pros: Deep discussion of Java and programming principles
Cons: Occasionally runs out of steam
Reviewed by: Mike James
This is a deep and intelligently written book on what makes Java a good language.
The only problem it has is that Java isn't really a controversial language and so you can't really tear into it and discover new gems that have remained hidden from sight. Nor can you really discover nasty bits that set off the good bits and show how they might be better.
Still this book has a good go at the problem.
First I need to say what this book is not. It isn't an introduction to Java, It isn't suitable for the beginner and it isn't going to help you learn Java in any shape or form. It isn't a survey of Java or a complete analysis of its qualities.
It is basically one author's take on what makes Java good and occasionally bad.
The first chapter is on the Type system and I have to say I profoundly disagree with Waldo's, and many other's ideas of how class and interface should be used. This said I really enjoyed reading it and it made me think quite hard about the arguments I would use to prove a different point of view.
Next the author turns his attention to exceptions and the irritating way Java insists that you always handle an exception. By the end of the chapter I was more or less convinced that this was a good thing - but only just. The discussion of exceptions being part of the type system was deep and so was the point about the runtime exception and the way it breaks the rules.
For me the first two chapters were the good parts of Java the Good Parts.
From here the topics were less controversial or more specialised. Chapter 4 discusses packages; Chapter 5 the perennial headache of garbage collection and finalize in particular; Chapter 6 deals with the JVM; Chapter 7 Javadoc - anything that makes documentation easier is a good part. Chapter 8 is on collections; Chapter 9 on remote invocation and Chapter 10 on concurrency. The book closes with a look at the developer ecology - basically the Java tools and IDEs we all know and "love".
The book is very short - around 170 pages - and doesn't take more than a few sittings to read. The first part of the book deeper and more thoughtful than the rest, but it was all good as befits a book with the subtitle "the good parts".
Highly recommended if you are a Java expert or just about to make the transition to be one.