Artikel

 
Mai 2009 | Artikel

Spring Roo: Grails, nur mit Java - oder mehr?

(Link zum Artikel: http://www.it-republik.de/jaxenter/artikel/2298)

Was hinter dem neuen Projekt steckt

Text: Thomas Biskup
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share
Auf der SpringOne in Amsterdam wurde in der Keynote von Rod Johnson Ende April Spring Roo als neues Projekt von SpringSource, dem Hersteller des bekannten Spring-Open-Source-Frameworks, eingeleitet. Was verbirgt sich dahinter?

Oberflächlich betrachtet handelt es sich bei Spring Roo zunächst um eine Art Grails für Entwickler, die in ihren Projekten, aus welchen Gründen auch immer, kein Groovy verwenden dürfen oder können: Roo erlaubt es, sehr schnell Projekte aufzusetzen, unterstützt die Evolution von Domänenobjekten, bietet Scaffolding usw., alles aber auf reiner Java-Basis. Hervorzuheben ist, dass mit Roo generierte und entwickelte Projekte keine Abhängigkeiten zu Spring Roo haben, sondern vollständig autark lauffähig sind – ein wichtiger Vorteil, wenn man Entwicklungen auch ohne Roo weitertreiben oder in andere Umgebungen überführen will. Unterstützt werden zum Beispiel JPA, Hibernate und die verschiedenen Spring-Module.

Schaut man etwas genauer hin, könnte man Roo für eine Art Architektur-Wizard für Spring-Projekte halten: Es fördert die hinlänglich bekannten Best Practices von Spring, indem automatisch entsprechende Klassen- und Interfacehierarchien generiert, die entsprechenden Annotations-, Aspekt- oder XML-basierten Konfigurationen sinnhaft erstellt werden usw. Insbesondere unterstützt Roo dabei auch ein vollständiges Roundtripping und weiß Code-Änderungen wieder in das zugrunde liegende Metamodell zu übernehmen und auch mit diesen zielführend umzugehen. Dies erlaubt einen schnelleren und leichtgängigeren Einstieg in moderne (und damit komplexe) Spring- bzw. JavaEE-Projekte, denn Roo generiert auch viel Nützliches um die eigenen Klassen herum – Methoden zum Zählen, Laden, Speichern und Suchen von Objekten zum Beispiel, erweiterte Debugging-Informationen über toString() und mehr.

Geht man noch tiefer und nutzt z. B. die Vortragspausen auf der SpringOne, um sich mit dem vor Begeisterung glühenden Ben Alex, dem SpringSource Project Lead hinter Spring Roo, zu unterhalten, entdeckt man aber viele weitere interessante Aspekte, die Spring Roo als interessante Basis für vielfältige Erweiterungen erscheinen lassen, u. a.:

  • Es verfügt intern über ein ausgefeiltes Metamodell zur Abbildung der verschiedenen Projektartefakte und ihrer Abhängigkeiten – damit stehen sehr detaillierte Informationen über die Sourcecode-Ebene zur Verfügung, die aber auch für weiterführende Aktionen nutzen können (zum Beispiel im Rahmen von Projektarchitektur-Refactorings als eine Idee).
  • Es verwaltet ein Metadateisystem, das auch transaktionale Veränderungen unterstützt. Intern benötigt Roo dies, um Änderungsoperationen an Artefakten zurücknehmen können, wenn eine späte Änderung aus welchen Gründen auch immer fehlschlägt.
  • Es nutzt ein ausgefeiltes Event-System, um über Änderungen an Artefakten informiert zu werden und dann weiterführende Aktionen anzustoßen.
  • Es stellt ein Plug-in-Konzept bereit, dass laut Ben darauf optimiert ist, leicht Erweiterungen zu Roo implementieren zu können. Hier hofft SpringSource auf eine wachsende Community, die analog zur Grails-Community auch Roo in noch weitere Höhen katapultiert.

Bezüglich der Werkzeueg bietet Spring Roo zunächst ähnlich wie Grails eine ´"kommandozeilenbasierte Benutzeroberfläche". Diese Kommandozeilenorientierung wird allerdings auf Grundlage einer eigenen Shell bereitgestellt, die erheblichen Bedienkomfort und vielfältige Unterstützungsmöglichkeiten für den Roo-Nutzer bietet. Insbesondere gibt es eine sehr starke, kontextsensitive Anleitung des Roo-Anwenders, was von implizit sinnvollen Kontextbezügen über Autovervollsändigung bis auf Parameterebene und sogar hin zum Ausblenden aktuell nicht sinnvoller Befehls- und Parameterkombinationen reicht. Dieser Ansatz ist so leistungsfähig, dass es zukünftig sogar eine ausgegliederte „Spring Shell“ für die Nutzung auf dem selben Paradigma auch in anderen Projekten geben soll – der SpringSource dm Server mit seiner Administrationskonsole ist hier im Spring-Porfolio sicherlich ein erster heißer Kandidat, Grails könnte davon sicher auch profitieren.

Über diese Shell hinausgehend, wird Roo zukünftig aber auch eine zunehmende intensivere Unterstützung innerhalb von Eclipse in Form einer engeren Integration in die SpringSource Toolsuite (STS) erfahren.

Zusammenfassend stellt sich Spring Roo als ein vergleichsweise interessantes Projekt für die reine Java-/Spring-Welt dar: Gelingt auch nur eine annähernde Dynamik wie bei Projekten wie Grails, dürfte sich hier schnell ein interessantes Ökosystem zur Standardisierung und Beschleunigung von Spring-Projekten ergeben. Die Ansätze wirken erheblich ausgereifter und moderner als klassisch Maven-basierte Vorgehensweisen, und insbesondere das Vorhandensein eines Metamodells zu allen betrachteten Artefakten dürfte sich als extrem hilfreich erweisen, um interessante Erweiterungen zu entwickeln. Gerade Refactorings von Roo-basierten Projekten auf Projektartefaktebene erscheinen dem Autor als ein sehr spannendes Thema – die nächsten Wochen und Monate werden zeigen, wohin Roo (was übrigens von "Cangaroo" kommt) hinspringt.

Thomas Biskup ist geschäftsführender Gesellschafter der QuinScape GmbH und verantwortet den Bereich „Enterprise Solutions“, der sich schwerpunktmäßig mit der Umsetzung JavaEE-basierter Geschäftsanwendungen befasst. Sein Arbeitsschwerpunkt liegt dabei neben agilem Projektmanagement auf MDSD mit Spring und leichtgewichtigen Architekturen.
  1. Das Spring-Roo-Projekt
  2. Blogeintrag von Project Lead Ben Alex
  3. Spring Roo hier herunterladen


Anzeige

Kommentare

Gravatar Stefan Schmidt 14.05.2009
um 08:37 Uhr
Vielen Dank for das Interesse an Spring Roo und diesen Blog post ueber die Features.

SpringSource bietet derzeit zwei Systeme an um Developern bei der Entwicklung von 'best-practice' Applicationen zu unterstuetzen: Grails und Roo. Beide Projekte unterstuetzen Entwickler um neue Spring-basierte Applikationen sehr schell zu erzeugen. Grails und Roo unterscheiden sich in einigen Punkten, aber die fundamentalen Unterschiede liegen in der Wahl der Programmiersprache welche der Entwicker waehlt um Domain-, Kontroller- oder Service Objekte zu schreiben (Java oder Groovy). Ein weiterer Unterschied besteht in der Wahl fuer ein System welches in der Entwicklungs Phase agiert (Roo) oder ein System welches waehrend der Server Laufzeit agiert (Grails).

Wie dieser Artikel bereits andeutet, Roo wurde entwickelt mit dem Ziel Laufzeit Abhaengigkeiten zu vermeiden. Da Roo ist ein Werkzeug welches waehrend der Entwicklugsphase genutzt wird, wird eine kleine Bibliothek benoetigt welche Roo-spezifische Annotationen zur Verfuegung stellt. Diese Bibliothek kann einfach entfernt werden wenn dies gewuenscht ist um alle Roo Artefakte aus dem Sourcecode zu entfernen. Diese Bibliothek ist definitiv nicht erforderlich waehrend der Laufzeit einer Applikation welche mit Roo erzeugt wurde.

Vielen Dank for das Interesse an Spring Roo und diesen Blog post ueber Roo und seine Features.

SpringSource bietet derzeit zwei 'Tools' an um Software-Entwicklern bei der Entwicklung von 'best-practice' Anwendungen zu unterstuetzen: Grails und Roo. Beide Tools unterstuetzen Entwickler um neue Spring-basierte Computerprogramme sehr schnell zu erzeugen. Grails und Roo unterscheiden sich in einigen Punkten, aber die fundamentalen Unterschiede liegen in der Wahl der Programmiersprache welche der Entwicker benutzt um Domain-, Controller- oder Service-Objekte zu erzeugen (Java oder Groovy). Ein weiterer fundamentaler Unterschied in der Wahl des Tools besteht darin das Roo waehrend der Entwicklungsphase agiert waehrend Grails waehrend der Server Laufzeit agiert.

Wie dieser Artikel bereits andeutet ist Roo entwickelt worden mit dem Ziel Laufzeitabhaengigkeiten zu vermeiden. Da Roo ein Werkzeug ist welches waehrend der Entwicklugsphase genutzt wird, wird eine kleine Bibliothek benoetigt welche Roo-spezifische Annotationen zur Verfuegung stellt. Diese Bibliothek kann einfach entfernt werden, wenn dies gewuenscht ist, um alle Roo Artifakte aus dem Sourcecode zu entfernen. Die Ausfuehrung des Roo-generieren Computerprogramm ist unabhaengig von dieser Bibliothek.

----------------------
Stefan Schmidt
Systems Engineer
SpringSource - Delivering The World's Leading Enterprise Java Platform
#zitieren
Gravatar mos 06.06.2009
um 14:41 Uhr
Ein kleines Diskussoin zum Thema Roo auf der Grails Mailingliste:
http://www.nabble.com/Spring-Roo-vs-plus-Grails---discuss-td23270902.html
#zitieren
Gravatar Andy 08.06.2009
um 05:40 Uhr
Herr Schmidt! Was wollen Sie eigentlich sagen? Werbung? #zitieren

Anzeige

zurück zum Seitenanfang