Zum Inhalt springen
Der Guide für ein smartes Leben.
Sicherheit & Internet:Internet:Web-Entwicklung

Grails, die PHP-Alternative

Der Entwicklung von Webanwendungen mit Java haftet der Ruf an, schwerfällig und zeitraubend zu sein. Das Grails-Webframework wurde mit dem Ziel gestartet, mit diesen Problemen aufzuräumen.

Autoren: Redaktion pcmagazin und Timo Haberkern • 22.4.2009 • ca. 3:35 Min

PHP-Alternativen
PHP-Alternativen
© Archiv

Für nahezu jede Programmiersprache existiert heute mindestens ein Web- framework im Stile von Ruby on Rails, das verspricht, besonders effizient und produktiv zu sein. Erstaunlicherweise hat es ausgerechnet im Java-Lager lange gedauert, bis ein solches Framework zur Verfügung stand. Zwar exis...

Für nahezu jede Programmiersprache existiert heute mindestens ein Web- framework im Stile von Ruby on Rails, das verspricht, besonders effizient und produktiv zu sein. Erstaunlicherweise hat es ausgerechnet im Java-Lager lange gedauert, bis ein solches Framework zur Verfügung stand.

Zwar existieren dort bereits seit Jahren sehr leistungsstarke Lösungen, die funktional eigentlich sehr mächtig sind, im Gegenzug jedoch dazu führen, dass die Produktivität durch zu viel Quellcode und Konfigurationsarbeiten leidet.

Nicht umsonst eilt der Entwicklung von Webanwendungen mit Java der Ruf voraus, schwerfällig und zeitraubend zu sein. Einige Webframeworks schickten sich an, diesen Umstand zu beheben. Grails () ist eines von ihnen.

Die Entwicklung von Grails begann im Jahr 2005. Anfänglich trug das Projekt noch den Namen Groovy on Rails, was den Schluss nahelegt, dass Ruby on Rails auch in diesem Fall für die Entwicklung Pate stand.

Im Laufe der letzten drei Jahre entstand ein stabiles und funktional ausgereiftes Framework, das keinen Vergleich zu anderen scheuen muss. Grails basiert auf der Java-Skriptsprache Groovy ().

Die Verwendung von Groovy als Programmiersprache bringt viele Vorteile. Einer der großen Pluspunkte von Groovy ist, dass es binärkompatibel mit Java ist.

Für die virtuelle Maschine von Java besteht zum Ausführungszeitraum kein Unterschied zwischen Groovy und Java. Wer möchte, kann innerhalb eines Projektes beliebig Java- und Groovy-Quellcode mischen, sogar innerhalb einer Datei.

Basisarbeit

Die Aufgaben moderner Frameworks sind vielfältig. Daher ist es kaum verwunderlich, dass die Grails-Entwickler des Öfteren auf bekannte und bereits bewährte Lösungen zurückgegriffen haben. Dies ist mit einer der Gründe, warum Grails schon als junges Projekt sehr stabil war und seit der Version 1.0.0 problemlos produktiv eingesetzt werden kann.

Wer sich mit dem Unterbau von Grails beschäftigt, der wird bekannte Bib- liotheken wie Hibernate für den Zugriff auf Datenbanken, Quartz für zeitgesteuerte Aufgaben oder Spring für die Infrastruktur entdecken. Die Installation des Frameworks ist mit wenigen Schritten erledigt. Dazu genügt in der Regel der Download der aktuellsten Version und das anschließende Entpacken in ein beliebiges Verzeichnis.

Nach dem Hinzufügen des Installationsverzeichnisses zur Pfad-Umgebungsvariable ist alles für den ersten Einsatz eingerichtet. Gails ist ein sogenanntes MVC-Framework. Hinter diesem Kürzel verbirgt sich das Model-View-Controller- Entwurfsmuster.

Der Grundgedanke hinter diesem Pattern ist die strikte Trennung zwischen den Aufgabenbereichen einer Anwendung. Folgende Bereiche lassen sich hierbei unterscheiden:

Model: In der Model-Schicht ist die Datenlogik einer Anwendung untergebracht. Alle Klassen, die für den Zugriff auf Daten einer Datenbank verantwortlich sind, werden dieser Schicht zugeordnet. • View: Die Anzeigelogik einer Anwendung gehört zur View-Schicht. Ruby unterstützt die Ausgabe-Webseiten durch diverse Helferskripte, die ganze HTML-Konstrukte erzeugen können. • Controller: Diese Schicht ist das Bindeglied zwischen den beiden anderen Schichten. In einem Controller ist die Steuerungslogik zusammengefasst. In der Regel veranlasst der Controller, dass Daten durch die Model-Klassen aus der Datenbank gelesen werden und gibt diese an die View-Schicht zur Anzeige weiter.

Diese Art der Trennung von Aufgaben einer Anwendung in einzelne, voneinander unabhängige Teile, hat mehrere Vorteile. So steigt dadurch beispielsweise die Übersichtlichkeit und damit auch die Wartungsfreundlichkeit des Quellcodes.

Des Weiteren ist es einfacher, einzelne Bereiche durch neue Implementierungen auszutauschen. Wenn künftig die Daten nicht mehr aus einer Datenbank, sondern per Webservice geladen werden sollen, so genügt es in der Regel, die Model- Klassen anzupassen, der Controller und der View bleiben davon unberührt.

Welcher Controller aufgerufen wird, entscheidet das Framework selbstständig anhand der aufgerufenen URL. Hierfür ist der Dispatcher verantwortlich, der aufgrund definierter Regeln automatisch zum passenden Controller weiterleitet. Eine Anwendung besteht aus mehreren Controller-Klassen.

Kommandozeile

Wie bei so vielen anderen modernen Web- frameworks spielt auch bei Grails die Kommandozeile eine wichtige Rolle während der Entwicklung. Über sie werden viele Aufgaben automatisiert und dadurch erheblich vereinfacht.

Das Grails-Kommandozeilentool begleitet Entwickler vom Start bis zum Deployment einer Anwendung. Der Aufruf des folgenden Kommandozeilenbefehls in einem für das Projekt vorgesehenen Verzeichnis erzeugt beispielsweise die Basisinfrastruktur einer Grails-Anwendung.

$> grails create-app

Nach Eingabe eines Projektnamens startet der Grails-Projektgenerator. Das Ergebnis ist eine Verzeichnisstruktur, in der sich automatisch generierte Dateien für Konfiguration und Front-Controller befinden.

Model

Mit der wichtigste Bestandteil einer Anwendung sind die Klassen für den Zugriff auf eine Datenbank. Je nach Größe und Umfang der Datenbank ist die Programmierung dieser Klassen eine Menge Arbeit. Mit Unterstützung von Groovy wird dies aber zum Kinderspiel. Dazu ist keine aufwendige Programmierung oder Konfiguration notwendig.

Der Grundstein wird durch Aufruf eines Kommandozeilenbefehls gelegt, wie dies im folgenden Beispiel für die Erstellung der Datenbankklasse User der Fall ist.

$> grails create-domain-class User

Datenbankzugriffsklassen sind im Sprachgebrauch von Grails sogenannte Domänen- Klassen und dementsprechend im Verzeichnis domain der Anwendung zu finden. Das Ergebnis des Kommandos ist vergleichsweise unspektakulär. Grails hat in diesem Fall eine neue und leere Klasse angelegt.

Das folgende Listing zeigt eine um mehrere Felder erweiterte Datenbankklasse.

class User {
String firstname
String lastname
String username
Integer age
Date birthday
}