Sonntag, 14. März 2010


Artikel

 
Oktober 2009 | Artikel

Einstieg in Spring Roo RC2 Fortsetzung, Teil 4

Teil 1   Teil 2   Teil 3   Teil 4   

Das Leben nach diesem Tutorial

Was ist denn zum Beispiel, wenn wir später merken, dass wir eine Eigenschaft in der Domänenklasse vergessen haben? Sowas kommt natürlich in den besten Familien vor, ist mit Roo aber kein Problem. Entweder wird es per Roo Shell hinzugefügt oder einfach manuell in die Klasse eingefügt und danach Roo gestartet. Es werden dann automatisch alle Abhängigkeiten mitgeändert.

Und was ist mit diesen Roo-Annotationen? Einige von Roo generierte Klassen enthalten spezielle Annotationen. Diese werden aber nur zum Kompilieren benötigt und sind während der Laufzeit nicht mehr sichtbar. Über die Annotationen lässt sich der generierte Code jedoch an die eigenen Bedürfnisse anpassen. So kann beispielsweise in der Annotation @RooWebScaffold eingestellt werden, dass nicht alle CRUD Operationen angeboten werden sollen.

Und wenn man Roo ganz los werden will? Auch das ist kein Problem, mit den Eclipse AspectJ Developer Tools lassen sich die generierten Methoden aus den .aj-Dateien in die eigentlichen Klassen verschieben. Danach noch die Annotation löschen und es gibt keine Spuren mehr von Roo.

Fazit

Mit Spring Roo lässt sich auch mit bekannten Technologien und ein paar wenigen neuen Befehlen in kürzester Zeit eine Webanwendung erstellen. Natürlich bieten Programmiersprachen wie Scala oder Groovy und deren Frameworks ähnliche Funktionen, aber Roo will diese gar nicht alle versuchen zu ersetzen. Es spricht viel mehr eine andere Zielgruppe an: Entwickler, die bereits Erfahrung mit Java und evtl. sogar Spring haben, und jetzt nicht eine neue Technologie lernen wollen, sondern mit wenig Aufwand ihre Produktivität steigern möchten.

Dabei werden die Entitäten als zentrales Datenmodell genutzt, auf dessen Basis dann zum Beispiel die Webschicht entsteht. Derzeit ist das Team damit beschäftigt, die Entwicklung von Roo-Plugins zu vereinfachen. Dadurch könnte man immer wiederkehrende Aufgaben in einem Projekt als Plug-in schreiben. So ist zum Beispiel eine eigene Annotation denkbar, die Roo dazu veranlasst, die equals() und hashCode() Methoden nach den Projektvorgaben zu erstellen. So kann man Roo nach eigenen Vorstellungen weiterentwickeln und anpassen. Man macht sich dabei zunutze, dass das Datenmodell frei von diesen Belangen ist, die durch Plug-ins abgedeckt werden können. Durch den oben beschrieben Upgrade-Mechanismus kann man die Plug-ins zentral weiterentwickeln und neue Versionen bei den Projekten automatisch anwenden lassen. Auch das interaktive Erstellen von neuen Projekten nach Firmenvorgaben könnte man über diesen Weg lösen.

Das wahre Potential geht also über die gebotene Funktionalität zum schnellen Erstellen von Webanwendungen hinaus: Roo ist ein Art Framework, das völlig neue Möglichkeiten der Codegenerierung eröffnet.

Mike Wiesner ist Senior Consultant bei SpringSource Deutschland und Spring Security Committer. Er beschäftigt sich seit den Anfängen von Java EE mit der Enterprise-Java-Softwareentwicklung und war in diesem Bereich bereits bei zahlreichen Projekten beteiligt. Er ist regelmäßiger Sprecher auf Konferenzen wie JAX, Devoxx und der OOP.
  1. http://www.springsource.org/roo
  2. http://maven.apache.org/
  3. http://www.springsource.com/products/sts
  4. http://www.eclipse.org/ajdt/
  5. http://hsqldb.org/
  6. http://www.eclipse.org/aspectj/doc/released/progguide/language-interType.html
  7. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/pt05.html
  8. http://de.wikipedia.org/wiki/CRUD
  9. http://static.springsource.org/spring-security
  10. http://tiles.apache.org/
  11. http://contraptionsforprogramming.blogspot.com/2009/05/push-in-refactoring-for-ajdt.html

Teil 1   Teil 2   Teil 3   Teil 4