Monday, 28 March 2011

JVM Language Futures - Groovy++, Mirah, Gosu ...

Interesting times, with so much happening in the JVM language space.  It's amusing, too, to see static typing making a comeback via some of the very same projects which helped to champion the cause of dynamic languages and duck-typing.

The three I've noticed all look promising and merit a bit of investigation.  In order of importance (IMO):

  1. Mirah.  From Charles Nutter, who created JRuby, so this one has probably the best pedigree.  I don't much like Ruby syntax, but I absolutely agree with the guiding principles.
  2. Groovy++.  I really like Groovy (and Grails). The Groovy++ project goals overlap to a degree with Mirah, mostly in terms of static typing and achieving native Java runtime performance.
  3. Gosu. This one is interesting because it was created by a company team to meet their particular needs and not primarily to invent a new language.

These three languages have quite different starting points but appear to share broadly similar goals. Essentially, they are trying to obtain as many of the benefits of a dynamic language as possible (leaner code, less ceremony) while at the same time carrying as few of the disadvantages as possible (no types = poor tool support, dynamic method dispatch = relatively slow). That's a difficult sweet-spot to hit.

Although I ranked these three in terms of importance, I actually think Groovy++ may have the best chance of getting into production code first because it's more mature than Mirah and has the great benefit of being an extension to something which already exists and is successful and established.  I'd love to see Groovy++ adopted officially and absorbed into the main Groovy roadmap.  Being able to add static typing just where you want (and leaving it out where you don't), getting traits into the language and getting better runtime performance are surely strong arguments in favour.