For all my professional career, I have been involved in software build systems, starting with Make, Imake, Ant, Maven etc. Currently we use Ant at blue elephant but the build is huge, hard to maintain and totally unmodular. No point, that one could also do it better in Ant or let yourself subjugate on the rigid conventions of Maven. But what I was looking for is to minimize efforts of migration, be flexible to do things a bit adapted but still have the nice convention based build and especially the dependency management of maven.
It turns out that there is indeed a optimal solution for it and it comes with the name Gradle. We are anyhow using a lot of Groovy (see earlier posts), which is for me the optimal scripting language. Gradle is well documented, in contrast to the ever mystic maven, it is non-XML using a Groovy DSL as notation and it can use Ant tasks and scripts, which eases migration a lot. And anyhow, there some things in Ant that are unparelleled elsewhere, like the fileset-based operations and there are tons of Ant tasks out there, like xmltask, scp etc. that it would be dump to re-implement just for the fun of it.

Also there seem to be a lot of enthusiastics for Gradle, like this blog. And there is one fan more, so we will soon see some Gradle in MIDAS probably …

Programming Groovy

About Groovy programming books, usually the “X in Action” is quite good but on the topic of Groovy I have to say that I prefer the book “Programming Groovy” from the pragmatic programmers series. We have both in the company but I experience myself always prefering this one over the Manning book, even though the much appreciated Dirk Koenig is one of the authors of that one.

The pragmatic programming book simply is very nicely layouted, clear structure, good examples and still covers all topics including MOP of basic Groovy programming. My recommendation!

Scripting languages on the JVM

Since I while I’m a fiery fan of Groovy, but as usually you hear form some persons, oh Scala is cool, or Ruby or Python or, or, or. So I wanted to know whether I have developed a certain bias towards Groovy or there is some good reason behind this intuitive selection. So I have in the last time made some effort to look into other scripting languages especially on the JVM. I had some exposure to scripting languages before, first REXX in my old days on VM/CMS or Phython/Jython as one of the first object-oriented scripting languages, Tcl/Tk or of course Unix shell including awk/sed etc.

My personal conclusion to the hype about Scala e.g. is for the time being, that it is a very very large language system which is probably very hard to learn, harder than Groovy and honestly I dislike somehow some of the syntactical elements of Scala, which are somehow just different from the Java/Groovy conventions without some obviously good reason. I’m a fan of functional programming, did some real Lisp on Emacs in my old days at the University of Stuttgart. But the mix of functional and procedural programming paradigms in Scala are somewhat not as cool and urging as in Groovy IMHO. Scala seams to be something of all but nothing really right. For example, take Clojure, a purely Lisp-style functional scripting language. Pure and nice, less braces than Lisp but still somehow simple to learn, a beauty in comparision to Scala. Or the closures in Groovy, really really nice to use, so superior in my eyes.

And Groovy has the absolute top advantage that its Syntax is so close to Java’s and you can quasi 100% integrate Groovy into and onto Java, mix and match. That is exactly what one needs if looking for a application extension and scripting language, no other candidate can do this in the way Groovy does. Inherit from a Java class or vice versa, inject methods from Groovy into existing Java classes to make then feel Groovy, really really cool!

That is why we do in MIDAS provide a API in Groovy on top of our Java GUI. I am working though additionally on a Clojure API wrapper, just for fun though.