Looking at Scala and Groovy

When people and companies realize what a dead end Java has gotten into, I want to be prepared for the alternatives. Java will become the dinosaur language like COBOL, but it will not be replaced by a single programming language but with a mix of languages. Several of these languages will, for many reasons, run on the JVM. As I see it, the most promising languages on the JVM today are:

  • Scala
  • Groovy
  • JRuby (Ruby implementation)
  • Jython (Python implementation)
  • Clojure

I have tried some of the LISP-ish Clojure with the aid of a colleague, but it is too esoteric for me. Python and Ruby are nice but “only” new implementations of existing languages. Groovy code can be pretty similar to Java, but it is more “dynamic” and it has closures! (Thanks to the appropriate deity here!)

Scala is described as a “general-purpose, object-oriented, functional language for the JVM”. The hybrid of object-orientation and functional programming is likely to be an advantage for Scala as it is possible for people with little experience with functional programming (like me) to approach it little by little.

In order to give Groovy and Scala a closer look I’ve bought Programming Groovy, by Venkat Subramaniam, and Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners. The latter book comes from Artima, who also provide Scala articles such as Twitter on Scala, How Scala Changed My Programming Style and The Origins of Scala.

A few months ago I wrote a Groovy script that copied bug reports from Trac to Mantis, using Groovy XMLPC to connect to the Trac XML-RPC Plugin and GroovyWS to connect to the SOAP interface for Mantis. The implementation is a topic for a future blog and the code is a bit crappy as it was both a learning experience and a throwaway tool.

Hopefully some small project will turn up so I can try out Scala soon.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.