Und in der Tat vermittelt Grails 2.0 dem Entwickler - aber auch dem Anwender - ein völlig neues "Fahrgefühl".
Angenehm für Entwickler
Die Konsole wurde vollständig umgebaut und hat nicht nur eine TAB- Vervollständigung, sondern auch eine aktive, farbige, einzeilige Ausgabe und formatierte Fehlerausgaben. Dazu kommen noch einige neue Befehle wie zum Beispiel das Anlegen von Controllern mit dynamischem Scaffolding oder "Open test-reports". Abbildung 1 gibt einen Eindruck.
IntelliJIdea 11 und Eclipse STS verstehen beide die neuen Grails 2.0 Features, lediglich die abgefangene Konsolenausgabe bleibt weiterhin mehrzeilig.
Aus der Konsole heraus lässt sich der Server schnell starten und auch wieder stoppen - oder bei laufendem Server weitere Kommandos absetzen, was die Arbeit weiter erleichtert. Im Entwicklungsmodus ist es kaum je noch notwendig, den Server neu zu starten. Der Neulade-Mechanismus wurde vollständig überholt und stützt sich jetzt auf JVM-Agents.
Abbildung 2 zeigt die Konsolenausgabe bei fehlschlagenden Unit-Tests aus Listing 3.
Nicht nur sind die Fehler jetzt direkt ohne Umwege über die Fehlerreports sichtbar, sie werden auch gemäß den power-assert Konventionen aufbereitet.
Schön für Anwender
Die Standard-Sichten von Grails, wie sie beim statischen und dynamischen Scaffolding erzeugt werden, verwenden jetzt alle HTML 5 mit jQuery als voreingestellter JavaScript Library.Damit einher geht nicht nur eine generelle Verschönerung der Darstellung, sondern auch eine verbesserte Visualisierung der vom Anwender erwarteten Aktionen, Unterstützung bei der Eingabe, Feedback während des Tippens und clientseitige, syntaktische Validierung.
Abbildung 3 zeigt die Eingabemaske mittels dynamischen Scaffold für eine Domänenklasse Person wie in Listing 1. Man beachte das Rendering der obligatorischen Eingabefelder.
Listing 1
package grails2class Person {String firstNameString lastNameDate birthdaystatic constraints = {firstName blank:falselastName blank:false}String toString() { "$firstName $lastName"}}
Selbst im Fehlerfall ist die Standarddarstellung deutlich angenehmer und nützlicher geworden. Der Fehler in Abbildung 4 stammt aus Zeile 7 der Methode "falsch" der Klasse PersonController aus Listing 2. Viel mehr kann man von einer technischen Fehlermeldung nicht erwarten.
Listing 2
package grails2class PersonController {static scaffold = truedef falsch() {render text: no_such_property}}
Nicht zuletzt werden sich die Anwender über die Performance- Verbesserungen freuen, die einerseits auf einem schnelleren GSP-Rendering beruhen, andererseits auf dem schlauen Verpacken, Komprimieren, Versionieren und clientseitigen Caching von statischen Ressourcen wie CSS, JavaScript und Bildern.
Es gibt aber nicht nur Neuigkeiten an der Oberfläche für Entwickler und Anwender. Im Kern von Grails hat sich auch einiges getan.




