Ein schöner Gedanke, und manche Frameworks/Konzepte sind ihn in ebensolcher Schönheit gestorben.
Spring Roo versucht anders zu sein. Aber der Reihe nach.
Spring Roo ist ein Rapid Application Development Tool (RAD) und liegt aktuell in der Version 1.1.0 vor. Es versucht den für eine Web-Anwendung zu schreibenden Code sowie die zugehörige Konfiguration auf ein Minimum zu reduzieren, ohne dabei an Funktionalität einzubüßen. Das kennt man im Grunde von Rails oder Grails.
Das Fundament von Roo besteht im wesentlichen aus
- dem Spring-Ökosystem (Framework, Security, Annotations, tc Server, etc.)
- Hibernate plus weiterer OR-Mapper und entsprechend unterstützter Datenbanken
- einer Roo Shell (wichtig!)
- AspectJ (noch wichtiger!)
- Roo Add-ons und Annotations
- Integration in Spring STS
Wenn man aktuell Spring-basierte Web-Anwendungen bauen will, dann sind diverse Dinge zu programmieren, die man eigentlich geschenkt bekommen möchte, da sie sich eh immer wieder wiederholen, z. B.:
- get-/set-Methoden für Properties
- DAOs mit Standard-CRUD- und Finder-Operationen
- GUIs mit Standard CRUD-Benutzerelementen (z. B. Listen mit Paginierung)
Durch die Verwendung von Roo-Kommandos bleibt einem auch der wesentliche Teil der Spring-Konfiguration erspart.
Zusätzliche Add-ons (die man auch selber schreiben kann) erleichtern massiv den Umgang mit Technologien/Bibliotheken, wie z. B.:
- REST
- JSON
- AJAX (Dojo ist Default)
- Spring Web Flow
- Spring Security
- i18n
Sehr elegant: Änderungen im Code werden automatisch in die laufgende Anwendung übernommen. Darüber hinaus werden DB-Änderungen nach Aufruf eines Roo-Shell-Kommandos EBENFALLS übernommen. Dies betrifft sämtliche Schichten von der Domainklasse bis hin zur GUI!
Durch die FinCon-Brille betrachtet ist Spring Roo hochinteressant:
- Die Tools scheinen ausgereift
- Der Tool Stack unter Roo ist uns (fast) komplett bekannt
- In einzelnen Bereichen reduziert sich der Programmieraufwand erheblich
- Sinnvolle gefüllte Testklassen werden automatisch mitgeneriert
- Der Build-Redeploy-Roundtrip sollte sich erheblich verkürzen
Aus meiner Sicht gibt es aber folgendes zu bedenken: Als Client-Technologie kommen out-of-the-box JSP (!) plus Roo-eigene Taglibs zum Einsatz. Einzige genannte Alternative: GWT. Dies entspricht NICHT unserem Tool Stack, welcher sich bei aktuellen (Neu-)Entwicklungen auf JSF konzentriert.
Diese "Kröte" könnte man aber schlucken:
- JSPs sind bei vielen unserer Entwickler bekannt.
- Im Fokus steht das Entwickeln von JEE-konformen Web-Anwendungen. Wenn Schnelligkeit in der Entwicklung eine deutlich höhere Priorität gegenüber den verwendeten Bibliotheken hat, dann ist besonders bei neuen Anwendungen die Wahl der (UI-)Waffe egal.
Klingt ja höchst interessant. Die Frage ist nur warum der Standard JSF nicht berücksichtigt wird. Vor allem da die Technologien JSP und GWT unterschiedlicher nicht sein könnten.
AntwortenLöschenBei der Evaluierung sollte auch nach einer JST Integration ausschau gehalten werden.
Gruß,
ich
Hier kann man sich den Spring-Roo-Vortrag online reinziehen: http://www.infoq.com/presentations/Introducing-Spring-Roo
AntwortenLöschenIch hatte auch etwas mit Spring Roo rumgespielt. Durch die FinCon-Brille betrachtet: Roo konzentriert sich auf die Abbildung und Bearbeitung von einzelnen Entitäten. Was wir bräuchten ist mehr die Möglichkeit zur Abbildung von Prozessen/Workflows. Denn unsere Anwendungen bilden hauptsächlich Workflows ab.
Ich habe auch in dem Talk gesessen und glaube das Jörn alles Wichtige wiedergegeben hat. Danke für die ausführliche Zusammenfassung!
AntwortenLöschenEine Randnotiz die ich mir noch gemacht habe:
Roo vereint 18 andere Frameworks!!!