Einsatz und Grenzen von Spring Roo

Seite 3: Enterprise-Funktionen

Inhaltsverzeichnis

Neben der Entwicklung von Webanwendungen lassen sich mit Spring Roo weitere Funktionen umsetzen. Für die Persistierung unterstützt Roo, neben objektrelationalen JPA-Implementierungen wie EclipseLink oder Hibernate, Java Data Objects (JDO) und das für Googles App Engine benötigte DataNucleus.

Eine besonders gute Integration findet sich in den diversen Spring-Frameworks wieder. Spring Roo ist ideal auf Spring MVC, Spring WebFlow, Spring Integration, Spring Batch und Spring Security abgestimmt. Messaging via JMS oder E-Mail-Versand kann man mit einem einzigen Kommando in die Anwendung integrieren. Weitere Frameworks, die gut mit Spring Roo zusammenarbeiten, sind das Logging-Framework log4j, das Test-Framework JUnit, Selenium für das GUI-Testing und die Suchplattform Solr. Im Zeitalter des Web 2.0 ist wohl auch eine Social-Media-Integration unverzichtbar. Daher lassen sich Twitter und bekannte Videoportale wie YouTube oder Vimeo ebenso einfach einbinden.

Binnen Minuten kann Roo durch Database Reverse Engineering ein Datenmodell mit den Entitäten und deren Beziehungen für eine existierende, relationale Datenbank generieren. Dafür ist nur ein einziges Kommando in der Roo-Shell notwendig: reverse engineer --schema crud_app --package crudapp.domain. Man muss nur das Datenbankschema (hier: crud_app) und das gewünschte Package für die generierten Entitäten (hier: crudapp.domain) angeben. Auch lassen sich entweder alle Tabellen des Schemas oder nur die benötigten Tabellen einbeziehen. Wie bei selbst erzeugten Entitäten kann Roo danach mit einem weiteren Kommando die CRUD-Oberfläche erzeugen.

Cloud Computing ist ein omnipräsentes Zukunftsthema der Branche. Frameworks, Tools und Best Practices sind hier verfügbar. Genauso einfach wie bei einen klassischen Webanwendung können Entwickler mit Spring Roo eine Anwendung für die Cloud realisieren. Spring Roo unterstützt das Deployment über VMwares "Platform-as-a-Service"-Konzept Cloud Foundry oder in Googles App Engine (GAE).

Die Entwicklung für die GAE unterscheidet sich kaum von einer klassischen Webanwendung. Zuerst ist ein kostenloser Account einzurichten. Anschließend muss man die Persistierung auf den Provider DataNucleus umstellen, da dieser das API von JPA auf das Google-eigene NoSQL-Persistenz-Angebot BigTable mappt. Dabei wird auch die GAE-weit eindeutige Application-ID der eigenen Anwendung eingegeben. Mit dem Maven-Kommando mvn gwt:compile gae:deploy kann die Anwendung dann in der Cloud eingesetzt werden. Soweit die Theorie. In der Praxis entstehen bei steigender Komplexität jedoch weitere Probleme, zum Beispiel mit den Datenbank-Funktionen. Die muss man dann mit Workarounds lösen.

Für die erst kürzlich veröffentlichte Cloud Foundry steht ein offizielles Add-on von Spring bereit. Cloud Foundry ist weniger restriktiv für Entwickler als die GAE: Neben Redis, MongoDB und RabbitMQ lassen sich mit PostgreSQL und MySQL auch zwei relationale Datenbanken verwenden. Diverse Roo-Kommandos für das Deployment, Starten, Stoppen, Auflisten et cetera von Anwendungen, stehen zur Verfügung. Als Open Source sind für die Cloud Foundry im Gegensatz zu Konkurrenten wie der GAE auch eigene Anpassungen beziehungsweise Erweiterungen erlaubt.

Für welche Zwecke lässt Spring Roo sich nun sinnvoll einsetzen und wann sollte man besser auf seinen Einsatz verzichten? Positiv fällt auf, dass sich innerhalb weniger Minuten mit Spring Roo eine funktionsfähige CRUD-Webanwendung erstellen lässt, die Daten erzeugen, lesen, aktualisieren und löschen kann. Die Software hat gegenüber anderen, durchaus ebenfalls guten, funktionsfähigen CRUD-Frameworks wie OpenXava oder dem Roma Meta Framework einen bedeutenden Vorteil: Neben der Unterstützung durch einen etablierten Hersteller verfügt Spring Roo bereits über eine große Community. Zwar erreicht Spring Roo nicht die Fähigkeiten und Effizienz eines Web-Frameworks mit dynamischer Programmiersprache wie Grails – sofern mit Java programmiert werden soll, gibt es aber keine bessere Alternative.

Neben der schnellen Erzeugung von CRUD-Anwendungen eignet sich Spring Roo auch gut für das Erlernen neuer Verfahren. Innerhalb weniger Sekunden ist eine Beispielanwendung erzeugt, die garantiert richtig konfiguriert und lauffähig ist. Natürlich können Entwickler den Quellcode und die Konfigurationsdateien im Anschluss analysieren, damit "herumspielen" und zusätzliche Features ausprobieren.

Spring-Technologien wie Spring MVC oder Spring Security werden ebenfalls unterstützt. Auch Java-EE-Spezifikationen wie JPA oder Bean Validation kann man Dank diverser Implementierungen integrieren und benutzen. Viele weitere Add-ons sind verfügbar oder in Arbeit. Diese sind zwar noch häufig nicht "production ready", also für den Produktiveinsatz geeignet, zum Verstehen und Lernen einer Technik reichen Sie jedoch aus.