There are some big differences in the basic concepts of the two frameworks:
- Grails uses the Groovy language, which is a dynamic language very similar to Java but more powerful. If you like dynamic languages, this is a big plus, but it's something new to learn. While it's very easy to use Java classes from Groovy and vice versa, the core classes (model, controller, services) have to be Groovy code because they rely on language features not available in Java. Roo, on the other hand, is pure Java.
- Roo generates code up front, which can be modified and used independent of the Roo framework (there are no mandatory runtime Roo components. Grails projects, on the other hand, cannot work without a pretty heavy Grails runtime.
There are also some major similarities:
- Both frameworks create application skeletons, package and run the application through a command line
- Both have a plugin API that allows easy integration with other frameworks, tools or libraries