Teil 3: Grails, die PHP-Alternative
- Grails, die PHP-Alternative
- Teil 2: Grails, die PHP-Alternative
- Teil 3: Grails, die PHP-Alternative
In GSP-Dateien kann auf die Daten des Controllers zugegriffen werden. Das folgende Listing zeigt ein Beispiel hierfür....
In GSP-Dateien kann auf die Daten des Controllers zugegriffen werden. Das folgende Listing zeigt ein Beispiel hierfür.
<table><thead><tr><g:sortableColumn
property="id" title="Id" /></tr></thead><tbody><g:each in="${taskInstanceList}"
status="i" var="taskInstance"><tr class="${(i % 2) == 0 ?
'odd' : 'even'}"><td><g:link action="show"
id="${taskInstance.id}">
${fieldValue(bean:taskInstan
ce, field:'id')}</g:link></td></tr></g:each></tbody></table>
Im diesem Beispiel kam gleich auch eine weitere Besonderheit von GSP zum Einsatz. Grails stellt eine eigene Taglib zur Verfügung, die verschiedene Tags enthält, welche innerhalb von GSP verwendet werden können. Dazu gehören Iteratoren (zum Beispiel g:each), Filter-Funktionen oder Generatoren.
Besonders die Generatoren haben es in sich, mit ihnen lassen sich viele alltägliche Arbeiten wie beispielsweise die Erzeugung von Links, Formularen, Validierung und ganze Javascript-Konstrukte zur Erzeugung von AJAX-Anfragen mit einem einzigen Befehl erzeugen.
Scaffolding
Zwar ist die Erstellung von Views durch die eingebauten Funktionen von Grails einfach und geht schnell von der Hand, dennoch wird man oft feststellen, dass man häufig Masken implementiert, welche die vier Grundoperationen auf einen Datenbestand abdecken.
Die Rede ist hier von den sogenannten CRUD-Operationen (Create, Retrieve, Update und Delete). Diese Operationen werden in der Regel für den Großteil der Model-Klassen implementiert. Dabei unterscheiden sich die Masken häufig nur durch die Felder, die für die jeweilige Klasse erfasst werden müssen.
Die Arbeit ähnelt sich also von Maske zu Maske. Es liegt nahe, die Erstellung der Masken für die CRUD-Operationen zu automatisieren. Grails bringt genau hierzu Werkzeuge mit, welche die Seiten dafür erzeugen. Auch hier spielt die Kommandozeile eine gewichtige Rolle.
Der Aufruf des folgenden Kommandos genügt, um sowohl die Controller-Klassen wie auch die View-Templates für eine angegebene Model-Klasse zu erstellen.
$> grails generate-all User
Die Masken können direkt nach dem Erstellen per Kommandozeile im Browser aufgerufen und genutzt werden. Alle Operationen sind anschließend fertig implementiert. Zwar sind die in der von Grails automatisch erzeugten Benutzeroberfläche für die CRUD-Operationen generierten Masken noch in einem recht rohen Zustand. Mit ein wenig zusätzlichem HTML-Code und einigen CSS-Stilen wird daraus aber schnell eine optisch ansprechende Seite.
Server
Grails-Anwendungen sind einfach zu deployen, da sie prinzipiell auf jedem Java-Webcontainer lauffähig sind. Grails erzeugt über einen Kommandozeilenbefehl aus der Gesamtanwendung eine WAR-Datei.
$> grails war
Dieses im Java-Bereich für Webanwendungen übliche Format macht die Installation der Anwendung auf dem Server sehr einfach.
In der Regel genügt es, diese Datei in ein vom Server speziell dafür vorgesehenes Verzeichnis zu kopieren, den Rest übernimmt die Server-Software von ganz allein. Dieses Vorgehen funktioniert bei allen gängigen Java-Application-Servern, wie beispielsweise Jboss, Glassfish oder Geronimo.
Wer nicht gleich die ganz großen Geschütze auffahren möchte, der kann auch problemlos Tomcat oder Jetty als Standalone-Webcontainer einsetzen.
Erweiterbar
Ein Framework kann selbstverständlich nicht alle Funktionen mitbringen, die sich Entwickler für ihre Projekte wünschen, dazu sind die Anforderungen zu vielfältig und unterschiedlich.
Auch Grails ist hier keine Ausnahme und konzentriert sich auf die Kernfunktionen eines Webframeworks. Wer ausgefallenere Anforderungen besitzt, der wird trotzdem nicht im Regen stehen gelassen. Grails bringt von Haus aus einen Plug-in-Mechanismus mit, über den die Funktionen des Frameworks erweitert werden können. Mittlerweile hat sich eine ganz ansehnliche Sammlung an Erweiterungen gebildet.
Darunter beispielsweise Bibliotheken zur Realisierung einer Volltextsuche von Datenbankinhalten, zum Versenden von E-Mails, zur Sicherung von Anwendungen über Acegi, Single Sign On und vieles andere mehr. Hier lohnt sich immer ein Blick in das Plug-in-Repository () von Grails, bevor man beginnt, etwas Eigenes zu entwickeln.
Die Installation von Plug-ins funktioniert ebenfalls über das Kommandozeilentool, hier etwa die Searchable-Erweiterung:
$> grails install-plugin searchable
Das Grails-Framework erledigt nach Aufruf des Befehls den Rest ganz automatisch. Es lädt die notwendigen Dateien aus dem Internet herunter, entpackt diese und installiert sie in den Verzeichnissen des Projektes.Alternativ können Plug-ins auch global für alle Projekte in das Installationsverzeichnis von Grails installiert werden. Dies funktioniert allerdings erst ab der Version 1.1.
Toolunterstützung
Trotz aller Hilfsmittel ist es durchaus wichtig, Entwicklern eine gut funktionierende Toolkette zur Verfügung zu stellen, damit diese effektiv arbeiten können. Dazu gehören unter anderem auch Entwicklungsumgebungen, die das Framework und die zugrunde liegende Programmiersprache Groovy unterstützen.
Leider ist der Support in den gängigen Entwicklungsumgebungen sehr durchwachsen und unterschiedlich gut ausgeprägt. Folgende IDEs bieten einen guten Groovy-Support:
• Eclipse: Die Unterstützung für Eclipse war mit eine der ersten Integrationen in eine Entwicklungsumgebung überhaupt. Das Eclipse-Plug-in () ist aber leider nicht immer ganz auf Höhe der Zeit und manchmal auch etwas widerspenstig. • Textmate: Der bei Mac-OSX-Besitzern sehr beliebte Editor Textmate () kann durch ein Grails-Bundle erweitert werden, sodass die Grails-Entwicklung deutlich vereinfacht wird. • Netbeans: Die aktuelle Version 6.5 von Netbeans besitzt ebenfalls eine Groovy/Grails-Unterstützung. Seit der aktuellen Version lässt sich damit durchaus produktiv arbeiten. • Dazu muss kein separates Plug-in installiert werden. Alles Notwendige ist in der Java-EE-Edition der Entwicklungsumgebung integriert. • Intelli J Idea: Den im Moment wohl besten verfügbaren Grovy- und Grails-Support bietet die kostenpflichtige Intelli- J-Entwiclungsumgebung von Jetbrains. Dort sind beispielsweise auch Werkzeuge zur grafischen Bearbeitung von Domain-Klassen und Refactoring-Funktionen enthalten.
Fazit
Grails hat schon lange unter Beweis gestellt, dass es ein Framework ist, mit dem auch sehr große Anwendungen und Webseiten erstellt werden können und das für den produktiven Einsatz reif ist. Das Paradepferd für eine mit Grails entwickelte Seite ist hier eindeutig das Social Network Linkedin ().
Durch den vor Kurzem durchgeführten Kauf der Grails-Entwickler-Firma G-2-One durch Springsource besteht zudem die Hoffnung, dass die Entwicklung von Grails zukünftig schneller voranschreitet und auch die Unterstützung freier Entwicklungsumgebungen wie Eclipse verbessert wird.