Erfahrungen mit Grails
Produktivität
Wir haben mehrere Internet-Anwendungen mit Grails entwickelt. Interne Analysen haben dabei gezeigt, dass die Entwicklung der ersten Grails-Anwendung etwas aufwändiger war als es in Java der Fall gewesen wäre (6% mehr Aufwand). Wir führen das auf das initiale Erlernen der Technologie zurück, sowie einige Kinderkrankheiten in Grails. Inzwischen sind wir mit Grails aber produktiver als mit Java - ca. um 20%.
Zum einen haben wir heute geringere Lernaufwände. Wir konnten das letzte Projekt nicht vollständig mit Grails-erfahrenen Entwicklern bestücken. Allerdings war ein erfahrener Grails-Entwickler dabei und hat als Mentor fungiert - ein Verfahren, dass gut funktioniert hat. Darüber hinaus sind die meisten Kinderkrankheiten in Grails heute beseitigt.
Die Programmiersprache Groovy
Mit Java-Kenntnissen sind die ersten Schritte mit Groovy sehr einfach. Die Groovy-Syntax ist Java sehr ähnlich. Java-Code lässt sich daher auch mit sehr wenig Aufwand in Groovy-Code transformieren. Damit nutzt der Code noch lange nicht alle Groovy-Features und ist aus Groovy-Sicht auch unnötig kompliziert. Aber immerhin läuft schon mal was. Jetzt kann man sich schrittweise daran machen, die fortgeschrittenen Groovy-Konzepte zu verstehen und anzuwenden. Code im Groovy-Style ist deutlich kompakter und ausdrucksstärker als Java-Code: Mit Groovy brauchten wir weniger Code, der auch noch besser lesbar war.
In einfachen aber realitätsnahen Beispielen haben wir bzgl. des reinen Codes eine Ersparnis von 25-30% festgestellt bzgl. auf Lines of Code (LoC). Noch interessanter als der reine LoC-Vergleich ist allerdings eine Betrachtung der Kontrollstrukturen. In Groovy-Code findet man nur einen Bruchteil der Schleifenkonstrukte (for, while), die man in vergleichbaren Java-Anwendungen hätte.
Entwicklungsumgebung
Die Unterstützung für Groovy in Entwicklungsumgebungen ist bisher nicht so ausgefeilt wie man das von Java gewohnt ist. Immerhin bieten IntelliJ Idea, Eclipse und Netbeans Groovy/Grails-Plugins, die kontinuierlich verbessert werden. Die umfangreichste Unterstützung findet sich heute in IntelliJ Idea - inkl. Syntax-Highlighting, Auto-Vervollständigung, Cross-Referencing und einiger Refactorings.
Konvention statt Konfiguration
Am Anfang ist das Arbeiten mit Konventionen statt Konfiguration gewöhnungsbedürftig und man muss auch erstmal verstehen, wie die Konventionen funktionieren. Dann sieht man aber schnell den Vorteil: man kann auf hunderte oder tausende Zeilen von Konfigurationscode verzichten. Und wenn man doch mal von den Konventionen abweichen muss, ist das möglich: letztlich basiert ja alles auf Spring und man kann auch manuell konfigurieren.
Technologien
Die Verwendung etablierter Java-Technologien bringt viele Vorteile mit sich. Allerdings versteckt Grails diese nicht vollständig. Insbesondere in Fehlersituationen wird man mit den grundlegenden Technologien wie Hibernate oder Spring konfrontiert. Und dann sind grundsätzliche Kenntnisse dieser Technologien auf jeden Fall hilfreich.
AJAX
Die Verwendung von AJAX mit Grails ist sehr einfach und klar.
REST
Der REST-Architekturstil ließ sich in unseren Projekten mit Grails besonders leicht umsetzen. Die Konfiguration der REST-URLs ist mit der URL-Mappings-DSL ganz einfach und Grails bringt Hilfsklassen mit, um Objekte nach XML oder JSON und zurück zu wandeln.
So bietet eine unserer Anwendungen eine REST-Schnittstelle, damit sie von einem anderen System des Kunden mit Daten befüllt werden kann.
Unit-Tests und testgetriebene Entwicklung
Groovy und Grails bringen bereits von Haus aus Unterstützung für Unittests mit. In den frühen Grails-Versionen dauerte die Ausführung der Tests relativ lange, so dass insbesondere testgetriebene Entwicklung behindert wurde. Inzwischen ist dieses Problem durch den "interactive mode" von Grails deutlich entschärft worden.
Agile Entwicklung
Grails eignet sich sehr gut für agile Projekte: Man kann sehr schnell erste Versionen der Anwendung zeigen und diese schrittweise weiterentwickeln. Die Entwicklung geht sogar so schnell, dass man für Teilbereiche direkt den Fachexperten neben sich sitzen haben kann - z.B. wenn es um die Gestaltung der Oberflächen geht.
Fazit
Wie bei jeder neuen Technologie fallen am Anfang Lernaufwände an. Ist diese Investition aber einmal getätigt, kann man mit Grails produktiver Webanwendungen entwickeln als in Java. Dabei können Entwickler und der Betrieb viel von ihrem Java-Wissen im Grails-Umfeld wiederverwenden. So muss man sich auch keine Sorgen machen, dass irgendeine Aufgabe in Grails nicht lösbar wäre. Wenn sie in Java lösbar ist, ist sie auch mit Grails lösbar.
Trotz der oben genannten Herausforderungen können wir Grails für die Entwicklung von Webanwendungen uneingeschränkt empfehlen.









