This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Spring have Grails (based on dynamic Groovy) and Roo (based on Java AOP)
Do you have any insight into how these frameworks compare and contrast. I know what Grails has to offer but not sure how Roo measures up. It would be useful to know if there are any scenarios where one is better than the other, or how there feature's stack up.
Apologies if this is off topic, but it is a burning questions at the moment.
The only knowledge I have of Roo is what I have heard others say. At the recent SpringOne 2GX conference the Roo sessions were very well attended and many of the Java/Spring developers were quite impressed with it. As I understand it, Roo applies many of the principles and design decisions of Grails, Rails, etc. but in Java. AOP is used to provide some of the features that Groovy or Ruby provide with metaprogramming.
I have heard it said by a few people that SpringSource is positioning Roo as the productivity tool for organizations that won't allow Groovy. Sadly, there still are many of those out there. So, I'm glad Roo is available to ease the pain of those oppressed Java devs. I know the people behind Roo are incredibly sharp and I have no doubt that it is a good product. I just haven't had the need or desire to use a Java only tool. JSF cured me of that.
If one has the freedom to use either Roo or Grails, I haven't heard any reasons why one would choose Roo. I don't know for certain, but I doubt that it has features as powerful and productive as GORM or custom GSP tags. Someone please correct me if I'm wrong.
I know there are some Grails developers who are also working with Roo. Maybe one of them can post a more detailed comparison.
The two products don't compete with each other. I can use both if I want. What I love about Roo is the ease of starting a project, and it doesn't have to be web based. But the creation on the directory and Maven structures/build. The ability to create your domain objects fast, and keep the class clean without getters and setters in the actual class.
Also cool is how Roo is a console that can be constantly running and if you change a file outside of the Roo console, the console knows about it and acts accordingly.