I’m having a great time this weekend at No Fluff Just Stuff in St. Louis. I’ve been vaguely aware of Groovy for a long time and my early impressions were that from a language point of view it seemed kind of thrown together and not really the result of a consistent vision.
But I went to a couple Groovy talks this weekend from Jeff Brown and Matt Secoske about Groovy and realy enjoyed looked at Java through this different lense. And generally, I was impressed at the way Groovy hangs together. There are a lot of aspects that reinforce each other. For example, if you didn’t have duck typing, closure support would be messy because you would have to specify all the type information (just like the Java closure proposals).
I also thought it was interesting to see how many of the Java 7 proposed features (short instance creation, closures, properties, xml support, bigdecimal operator overloading) already have some equivalent in Groovy and how having the combination of those features can really give you a whole that is really quite a bit more readable and easy to write. I’m not sure yet if that makes me want to have those features in Java too or if we should just say that these feature sets will have better instantiations in other languages (be it JRuby, Jython, Scala, Groovy, etc) and the historical and backward-compatibility burden in Java is just too much too support it cleanly. I need to think about that one some more.
Another thing that occurred to me is that it would be fantastic to have integrated Terracotta clustering support when creating POGOs (plain old Groovy objects), just like it’s great to have support for clustered POJOs. I’m not sure how nasty it would be to actually make the Terracotta bytecode manipulation work with Groovy bytecode manipulation in happy and compatible ways. Seems like specification of locking in Terracotta might be a lot tougher given the dynamicity of Groovy (or any of the other dynamic JVM languages) but maybe I’m wrong. So, if you’re looking for a fun but reasonably hard project, this would be a great one (and Terracotta would be happy to host your work in our forge).