Author: Jaroslav Tulach
Audience: Java API creators
Reviewer: Alex Armstrong
A strange topic as not many programmers get the chance to design a public API - but with the influence of the web this is slowly changing. Is this a book you have to read?
Its subtitle is "Confessions of a Java Framework Architect" and much of the material is very Java oriented - well the practical examples are. The "confessions" part of the title suggest that it is a personal book, and indeed it is. How much you like the book does depend on how much you like the writing style and philosophy of the author - who is the founder of the NetBeans Platform. In case you missed it, the NetBeans platform is a framework for creating Swing-based applications - including the well known NetBeans IDE.
Part 1 is called "Theory and Justification". There isn't much theory in it as such; just very general observations and specialization of ideas from general software development.
Part 2 of the book is "Practical Design" and again it's mostly general ideas illustrated with some very specific, and often technical, examples. At best it serves to focus your mind on the task of API creation - otherwise you might just do it without realizing you had choices and responsibilities.
The final part of the book, "Daily Life, is about a range of general skills and tasks such as debugging, the evolution of a system and so on.
Overall this is a book full of personal philosophy well wrapped up in clever prose and similes. A lot of the ideas you will have encountered before in a more general programming context. Here they are specialized towards creating APIs but the specialization is fairly obvious. A lot of the book reads like reminiscences of creating NetBeans coupled with some philosophical musings. On the whole I didn't get much out of it.
The style of the book will be a little strange to some, especially so if you are used to the dry "do-this" approach of many programming books. For example, in discussing the benefits of immutability:
"...Resources are not actually destroyed. In some senses, their potential future states are simply trimmed down. After a thread uses a printer, a piece of paper is filled with characters or pixels. At that point, it's no longer empty; it becomes "damaged." It can never be used again."
When was the last time you saw a semicolon in a programming book! You can't help but speculate that the author would really have preferred to have been a philosopher in the mold of Wittgenstein or a novelist in the style of Proust.
If you don't mind such reflections then perhaps you will like the book more than I did. Most of the time I just found that the style and the "big world picture" got in the way of the message - so why are immutable objects a good idea?
This book does contain some useful information, and it is particularly useful if you are about to build a complex API similar in nature to NetBeans. It has a lot of coverage of best practices and discussions of what you are trying to achieve.
For the general reader and for the casual API creator there isn't much in here that will be useful or easily accessible. You have to be prepared to read a lot of philosophy to reach a few, usually esoteric, practical points.
This is not a must read book for the general Java programmer. It isn't even a must read if you are developing an API and this is possibly a shame because there are good ideas contained within. By all means try it. but i can't promise you will like it - it is all far too subjective an experience.