There are three criteria by which I rank IT books: simplicity, comprehensiveness and factor of inspiration. Simplicity is how successful the book is in clarifying tough issues. In other words, simplicity is when the authors say: “look how easy it is”, not “look how clever we are”. By comprehensiveness I mean how complete particular book on explaining its subject is. And by factor of inspiration I mean how well it convinces me to use that technology and with how many arguments it leaves me to convince others to learn it too. “Groovy in Action” from Manning wins on a field of simplicity but it’s a little bit incomplete and fails to inspire its reader. Now, I'll try to explain my stance in few words.
Drawbacks first. Groovy's advantages are not evident for an average developer. Most of them heard that it is a cool language that can do clever tricks but their enthusiasm in most of the time is killed by quick thought -- “Groovy's for geeks and all these tricks I can do in pure Java”. The fact that most Java code will run in Groovy only enhances this felling. When an average developer takes a Groovy book he/she should be overwhelmed by new opportunities that groovy brings to his/hers everyday coding, be struck by sheer pleasure of using stunning one-liners and beg for more. Did anybody hear an IT “evangelist” (Suns or Adobes for instance)? A great book about an emerging language should be inspiring its readers just like “evangelists” do. One takes a Groovy book to get to know what is all that fuss about, and after finishing the book one should feel ashamed to code in something different than Groovy. An average book should at least try to inspire its readers. “Groovy in Action” does not. Too bad.
When it comes to exhaustiveness it is much better. The book is divided in three parts: first one is about language itself, second about class library and last one is about most typical cases where Groovy can be applied. Reading third chapter before others may let you feel “Groovy in Action” a little bit more inspiring. In my opinion, all topics are very well covered; the book tells you how things look in groovy and even sometimes how they're implemented (“For the geeks” sections). When this is necessary the book covers topics beyond a scope of Groovy, explaining for example different approaches to particular subject and how Groovy provides a simple way to apply each of them. In one place though, the authors made an impolite thing – in “Advanced OO features”, “Interfaces” section. Instead of explaining how to make Groovys interfaces more dynamic, they say that it is a cool feature but “See the Groovy wiki for more details”. Rude.
“Groovy in Action” is very methodical. Just like in a good elaboration every chapter has a preface and summary and all topics are explained using well prepared examples. The examples are the strongest part of the book -- all assumptions are checked using assertions and they are said to had been run before printing so one can trust that they're faultless. Explanations are fine-grained so even inexperienced developers can read it with understanding.
This book is for those who know for sure that they need to learn Groovy. Those who are not convinced should look for some other source of inspiration.