I've been using Groovy for a few months and so I'm no expert.
Here's some thoughts so far:
1. Love the POGOs with their automatic getters/setters/constructors.
2. closure syntax for loops is very nice.
3. The map syntax is great, being able to reference a url parameter like this :
para.id4. There's another level - builders, mixins, that I've only fleetingly seen but decided not ready yet.
5. People love to create DSLs but I'm not convinced of their worth everywhere. You need to know the DSL which is only slightly easier than learning the underlying library it tries to simplify. HTTPClient, take note.
6. Had a strange bug yesterday, I was reading json with JSonSlurper, a value representing seconds since epoch was automatically being cast to Integer, which turns out is too narrow because I multipy it by 1000 to get milliseconds (to pass to Date's constructor) but was getting the wrong Date. It was losing precision without complaining.
7. The mock testing situation is not quite good enough. MockFor and StubFor are not good enough. Everyone says use Spock but that's another library to learn.
I do feel at times that I am on the cutting edge as I program. I don't feel that with Java as its so stable in day to day use.
One use case that I think will be a killer is to create a Groovy library over the Amazon Web Services Java SDK. Thats going to be fun!
Overall, I like the syntax sugar and the Java-compatibility over everything else by a mile. I am slightly concerned if it will perform at runtime but I guess I'll have to test that.
Rakesh
Overall, its nicer than Java on a day to day level.