For your projects, did you have a favorable experience with Groovy? How big was the project? Were there issues with the language? Did you consider Jython, JRuby or Clojure?
My team recently implemented a small AtomPub service using Grails (and by implication, Groovy). Overall, it was a nice experience. We briefly considered pure Java and JRuby as alternatives, but not Jython or Clojure. The team went with Groovy because it was somewhat more familiar-seeming than JRuby, but offered more flexibility than Java.
Here are some of the issues we encountered:
- Less tool support than most of us were used to (how big a deal this is depends on the individual developer you're asking)
- Gruesome stack traces (this may have been more Grails' fault than Groovy's)
- With an entire team learning the language on the fly, it was difficult to arrive at a consistent, well-liked style
- Less-than-ideal documentation for Grails (again, not Groovy's fault); the docs were changing rapidly, so the situation may have improved by now
I'm currently working on a small exploratory project using Grails. I had no previous experience using Groovy, only Java.
So far, I am quite impressed how quickly I can hack up something usable, and Groovy's features, especially Gpath expressions, play a big part in that. I've encountered a few bugs in Grails, but no fundamental problems on the Groovy side.
The main disadvantage of Groovy is (for me) that it's considerably less convenient to debug than Java - stack traces are bloated by the reflection magic that happens underneath Groovy's hood, and error messages can be cryptic - but that may in large part be due to my lack of experience.
I've done a small/medium size project in Grails (and of course Groovy) and enjoyed it. There were definite hurdles along the way. They included:
- Lack of good debugging tools (I settled on using Netbeans because of its mostly native support for Grails, but it lacked a debugger... ugh)
- Bugs in the web-flow features. Grails 1.1 has a newer version of Spring's web-flow which solved a lot of these problems.
- Weak jquery plugin support. I love jQuery, but it wasn't quite as well supported as prototype (and whatever the other javascript library that is supported out of the box). Nevertheless, AJAXy stuff was a pleasure to write using templates.
- Difficulty dealing with enums and many-to-many relationships in GORM. Grails 1.1 will go a long way in address these problems.
Overall, I really enjoyed my experienced and learned a lot in a short amount of time. Grails 1.1 is a major upgrade that will make this framework enterprise ready. I'm really just waiting on good debugging tools. I guess I could stop being so cheap and just buy IntelliJ. I hear it's the best for Grails.
Coming from a Java background, the road to Grails seemed much more manageable than starting over with a whole new language and set of tools for Rails.
Andrew