Das Buch "The Definitive Guide to Grails (2nd)" ist das fünfte und neueste Buch aus dem Apress-Verlag zum Thema Groovy/Grails. Es stammt aus der Feder des Grails-Gründers Graeme Rocher und des Grails-Committers Jeff Brown. Informationen aus erster Hand sind somit garantiert. Das Buch ist nicht als Überarbeitung der ersten Ausgabe zu verstehen, sondern wurde komplett neu geschrieben. Die neueste Grails-Version-1.1.x bildet die Grundlage des Buchs. Als Beispielanwendung wird die so genannte gTune-Applikation entwickelt. Hierbei handelt es sich um den kleineren Bruder von Apple’s Musikshop. Die 17 Kapitel sind meist so aufgebaut, dass zunächst die Konzepte und Hintergründe erklärt werden und anschließend die gTune-Applikation weiterentwickelt wird, um das Gelernte praxisnah zu vertiefen. Diese Vorgehensweise geht auf und lädt den Leser zum Mitprogrammieren ein.
Das Buch hat den Anspruch, alle wesentlichen Aspekte und Features von Grails in gebührender Tiefe zu beleuchten. Die ersten beiden Kapitel haben einen einführenden Charakter und zeigen dem Grails-Neuling, wie elegant und vor allem wie schnell datenbankbasierte Webanwendungen geschrieben werden können. Den vier wesentlichen Artefakten einer Grails-Applikation, den Domain-Klassen, Controllern, Views und Services, wird je ein eigenes Kapitel spendiert. Zum Thema Domain-Klassen und Persistenz gibt es ein weiterführendes Kapitel "GORM". Hier werden ausführlich die Fähigkeiten von Grails beschrieben, die es durch den Einsatz von Hibernate erhält. Auch aktuelle Fallstricke, wie beispielsweise das mögliche Ignorieren von Constraints aufgrund des Hibernate Dirty Checkings, werden nicht ausgelassen. Die heute in nahezu jeder komplexeren Webanwendung vorzufindenden Themen, URL Rewriting, Internationalisierung (I18N), Ajax und der Einsatz von Web-Flows zum Bauen von statusbehafteten Wizards, werden in vier weiteren Kapiteln behandelt. Grails zieht seine Stärke unter anderem aus seinen vielen Plug-ins und dem gelungenen Plug-in-System, das in Kapitel 13 zum Thema wird. Im Abschnitt „Integrating Grails“ werden die Build-Systeme und Deployments beschrieben sowie diskutiert, welche IDEs und Continuous-Integration-Systeme besonders gut mit Grails können. " Webservices" und "Security" wurden jeweils auch mit einem ausführlichen Kapitel bedacht.
Da das Grails-Fundament im Wesentlichen aus den Frameworks Spring und Hibernate besteht, wird in zwei Kapiteln gezeigt, wie im Bedarfsfall die Frameworks auch direkt und uneingeschränkt aus der eigenen Applikation genutzt werden können. Ein eigenes Kapitel zum Thema "Testing" gibt es nicht, aber ganz im Sinne von Test-driven Development wird im jeweiligen Kontext gezeigt, wie bestimmte Artefakte und Funktionen getestet werden.
Hat die zugrunde liegende Programmiersprache Groovy in der ersten Ausgabe des Buchs noch ein eigenes Kapitel verdient, wurde nun eine kurze Zusammenfassung mit den größten Unterschieden zu Java in den Anhang ausgelagert. Die Informationen reichen durchaus, um in der eigenen Applikation vernünftigen Groovy-Code zu schreiben. Wer tiefer in Groovy einsteigen möchte, sollte sich ein zusätzliches Groovy-Buch anschaffen.
Als kleine Kritik kann erwähnt werden, dass man dem Buch hier und da anmerkt, dass die Autoren sehr beschäftigte Menschen sind und daher die ein oder andere Unstimmigkeit zu finden ist. So fehlt beispielsweise ein Abschnitt über den Layoutmanager SiteMesh (obwohl an einer Stelle darauf verwiesen wird). Listing-Verweise sind teilweise ein wenig durcheinander und im Ajax-Kapitel geht es um die Integration einer Amazon-Schnittstelle, was über das eigentliche Thema hinausgeht und an anderer Stelle vielleicht besser gepasst hätte. Da das Buch noch vor dem Erscheinen der endgültigen Version 1.1 auf den Markt kam, fehlen vereinzelt auch Beschreibungen zu brandneuen Features wie z. B. das Abfangen von doppelten Submits eines Formulars.
Zusammengefasst ist DGG2 aber ein tolles und gut zu lesendes Buch. Es enthält viele ausführliche Informationen zu Grails und dürfte als Standardwerk bezeichnet werden. Dieses Buch darf auf keinem Schreibtisch eines Grails-Entwicklers fehlen.




