| JezUK Ltd - The Coffee Grounds - June 2010 |
| << May 2010 | July 2010 >> |

Just had a copper knock on my door and ask if I know who owns the Discovery blocking the road. Unhelpfully, I don't. It looks like the handbrake has failed and it's rolled back across the road, before coming to rest against the other car.

Of course, it's only a disguise. Real clone troopers don't have curly red hair.
Working away yesterday gently wrestling Apache Ivy and Sonatype Nexus, there was an almighty thump on my window. This is not a usual occurance on the ground floor, but when you're three floors up it's unheard of. I was, as you might imagine, slightly startled.
Recovering myself, I realised it must have been a bird strike. Flicking the blind aside reveals a dazed and confused blackbird fledgling, trying to gathering himself.

So what is this scripting language?
It's Groovy.
Yes, but what's it called?
It's Groovy.
I've been working on a small application to help automate application deployments. We have some existing infrastructure built with Ant, but it's rather clunky, some of how it works is non-obvious, and it still requires more manual intervention that I'd like.
For some time, my friend Russel has been extrolling the virtures of Gant as a build tool. Gant is a wrapper, written in Groovy, for Ant which allows Ant tasks and Groovy scripts to be combined together in one big happy build script. I'd never really understood why you'd want access to a general purpose language in your build scripts, largely because I'd never needed to. Now that I was thinking of deployments as a 'build-like' operation (even though it really isn't), the appeal was obvious. I grabbed Gant and used it to bootstrap my application.
Groovy is a dynamic language for the JVM. Unlike many other dynamic languages on the JVM, especially those that originated elsewhere, Groovy takes a 'Java+' approach. Groovy looks like Java with extra bits, which makes it very approachable. You can start quite gently, writing code that looks just like Java and become groovier over time - looser typing, list and map literals, fewer semicolons, closures, and so on. Groovy does all the normal things you'd expect from a modern dynamic language (REPL available but can also be compiled, metaobject protocol, closures, duck typing, and so on). In addition, it operates seamlessly with Java code and libraries, in both directions. Seamless is a much overused term, but here it is entirely accurate. Groovy can freely use Java classes, and Groovy can be compiled to classes which can be called from Java.
It's pretty good fun, and I'm enjoying working with it. Right now, having previously used Jython and Javascript, Groovy would be my first-choice for a dynamic language on the JVM.
| << May 2010 | July 2010 >> |