Whatever you think about the merits of Groovy as a language, a serious contender on the JVM, or a complete mess, you couldn't hope to find a better advocate for Groovy than this book.
One of the secrets of GinA's success is that it assumes the reader is already proficient with Java development, including Swing, Ant and JUnit. It would also help to know about XML, SQL, HTML, JSP and a vague idea of how MVC applies to web apps. You don't need to be an expert in these areas, though. If you've sufficient knowledge to decode the preceeding alphabet soup of initialisations, you'll be ok.
The reward for possessing this background knowledge is that GinA doesn't waste time with trivial examples, and barrels through Groovy the language in the first part, leveraging your existing knowledge of Java to highlight the important differences in Groovy. In particular, the advantages of interpolating strings, simple hash and array construction syntax, optional typing and metaprogramming are stressed. The big win in Groovy over Java is the use of closures and their used in a block-based approach to iteration, which is as well motivated here as the material in, say, The Pickaxe is for Ruby.
The second part of the book provides examples of the Groovy library. It begins with an excellent chapter on Groovy's Builders, which provide a very neat, uncluttered syntax for putting together hierarchical structures. An obvious application is XML, and by extension Ant scripts, which appears to have some major advantages compared to the challenging readability of vanilla Ant. Even more impressive is the SwingBuilder example, which builds a GUI with the minimum of fuss and a complete lack of anonymous inner classes.
Beyond the Builders, there are also compelling chapters on templating HTML and server side Groovy (Groovlets), writing DAOs and DTOs in Groovy to simplify database programming, and a chapter on XML, which even manages to find the space to introduce Groovy for SOAP, XML-RPC and REST web services.
The final part of the book describes some non-core libraries and other applications of Groovy. The chapter on Groovy extensions to JUnit is interesting, although perhaps this is one place where it assumes too little on behalf of the reader. I would have assumed that the average developer sufficiently motivated to pick up a book on Groovy knows enough about unit testing and JUnit that more space could have been given to the advanced topics. Particularly appealing is the idea of testing Java code with dynamically typed Groovy unit tests, which would make mocking and stubbing more palatable; I would have liked more on that subject.
Another noteworthy chapter is the last one, which introduces the web app framework Grails. This has a different style to the other chapters, being a dialogue between two of the authors as they build a simple app. This reader admits to finding it a little bit naff, but it does usefully demonstrate the grails way (which is a lot like Rails).
If you have the slightest interest in Groovy, alternatives to Java on the JVM, or dynamic languages, GinA makes the perfect case for Groovy as a first class integration language for all the bits of Java where you really wish you were working with something like Perl, Ruby or Python. It's well-written, with good examples, clear explanations, and it's relentlessly practical, never forgetting its target audience. It's all the more impressive given lead author Dierk Konig's comment in the preface that English is not his first language. Kudos to him and his co-authors for what they've delivered.
One can only wish that every language had its GinA. Outstanding.