Scala

NOTE: Currently, we use Java as our main development language.

Scala is a strongly typed object oriented and functional programming language that runs on top of the Java Virtual Machine. It can thus call Java code, and be called from Java code.

The Scala homepage.

The Scala by Example tutorial is rather long, but introduces the language relatively well. There are shorter tutorials also on the website to get a quick feel of the language.

Why Scala?

 * Scala supports advanced programming constructs like closures, for-comprehensions, and treating functions as objects. This allows shorter and clearer code to be written, and thus reduces programming effort and amount of bugs.
 * It runs on top of the JVM, so we can use the existing set of libraries developed for Java.
 * It is statically typed, so unlike some other JVM based languages, it will catch more errors at compile time.
 * It also seems to be well designed (it's created by professional language designers).
 * It also seems to show some signs of growing more popular, so it could be a next gen language after Java and C#.

Why not Scala?

 * Scala doesn't have that much adoption yet, so not many people know Scala. This is probably the biggest downside with selecting a non-mainstream language.
 * Scala doesn't have as good tool support as Java or C#. There are some plugins in early development (see below), and there are plugins for build systems like Maven.
 * Scala is a new language, so it is still evolving and changing. There may be some backward incompatible changes, as well as various oddities.
 * Darkstar (SGS) ManagedObjects should avoid inner classes and anonymous functions, as they complicate persistency. As far as I know, Scala converts closures and such to anonymous inner classes.

Tool Support
There are currently Eclipse and IntelliJ IDEA plugins for Scala, although they are not yet fully functional IDE:s.