While I initially was somewhat neutral about the latest offering from Spring – Spring Roo – my opinion is changing. While I’m still not overly fond of the project speedup features (IMHO that belongs into the IDE and not into a separate platform – and I don’t want to see a console for that) I am extremely impressed by the work Ben Alex seems to have done on the internal models underlying Roo.
From what I understood from the SpringOne presentation there is an underlying meta model that allows extensions for Roo very easily and contains all kinds of information about the underlying project, classes, methods, properties, etc. Additionally the model seems to contain operations for changing your artifacts and even provides a kind of transactional undo support for file system and file content operations.
That IMHO sounds like a really powerful and unique feature that easily could be used to implement very powerful refactoring operations that go much farther than currently available recfactoring operations. A glimpse of that was given when Roo dependencies were easily factored out of an existing project in order to be able to operate it in the future without any dependencies on Roo.
I believe that with a little imagination one could build extremely powerful refactorings that work project wide and on the project concept level (e.g. moving an implementation from controller hierarchies to annotations, adding AspectJ based architecture alerts to projects, far extended test case generation beyond the impressive features that already were included and more).
Hopefully the plugin concept of Roo will further this – here I see a real winning chance for an architectural support framework that provides complex Spring-related optimizations. Thumbs up to Ben for the intersting presentations and the even more enthusiastic exchanges after the talks… cool technology with a lot of potential.