Neuerungen in der Grails-Plattform

Das ist neu in Grails 2.0

Dierk König

Der mutige Sprung der Versionsnummer kündigt es an: Die neue Version
der Grails-Plattform für Webapplikationen möchte nicht nur eine kleine
Verbesserung sein, sondern sieht sich als bemerkenswerten Entwicklungsschritt.

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.

Für eine Konsole ist aber entscheidend, wie schnell die Befehle ausgeführt
werden, und das ist die nächste Neuerung: Mit „grails“ startet man den
interaktiven Modus, in dem alle Befehle ohne Neustart der JVM
und damit deutlich flüssiger vonstatten gehen.

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 grails2

class Person {
    String firstName
	String lastName
	Date   birthday
	
	static constraints = {
		firstName blank:false
		lastName  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 grails2

class PersonController {
    static scaffold = true
    
    def 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.

Geschrieben von
Dierk König
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.