I've just found out Jboss Forge
I wonder how it compares with Spring Roo
Can anybody highlight the principal coincidences and differences of these two tools?
The tools are similar in the way that they are both command line tools that help setting up and configuring a project, and both have the ability to generate code. There are some major design differences however:
1) Forge is designed to be used on any kind of Maven project. Roo is pretty much tied to Spring. Because Forge is more general you can find or write plugins for any kind of technology that you use in projects. This is also true for Roo, but only technology on top of Spring. You could say that Forge is a (more) generic framework for building plugins that work on Maven projects, while Roo is (just) a Spring tool.
2) Roo is also a programming framework, not only a tool. The code generation makes heavy use of AspectJ to make the code generation almost invisible to the programmer, and gives features that are otherwise only found in frameworks based on dynamic languages (e.g. dynamic finder methods on entities). This can be both a good and a bad thing. It's good because it's powerful and more elegant because you don't "see" the generated code. The bad point is that it gives a massive lock-in on Roo. This is technically not true, because it's just "plain" AspectJ, but it's far from normal Java/Spring code. AspectJ also doesn't work well in all IDEs (Eclipse and IntelliJ are fine). Because of this programming model I would never use Roo. If I want a framework with dynamic language features I use Grails, not something halfway there. Of course this is just my personal opinion.
Code generation in Forge is more of the traditional kind, with all it's flaws, but you will never lock into anything non-standard. The built-in code generation is based on plain Java EE 6.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With