This is my first week of a 3 weeks vacation. It is really hot in Munich why I am currently enjoying swimming, biking and visiting beer gardens more than software engineering.
Nonetheless, I am currently educating myself in a new programming language. Scala by Martin Odersky combines a pure object-oriented langauge with functional features. And it runs on the JVM. An earlier version of Scala does also support the .NET CLR.
What I like most is the proper integration of functional features. Closures, for comprehensions, nested functions, pattern matching are notable examples. While Scala is statically typed (it is not a dynamic language), it offers type inference for variables, arguments and results.
In addition, it provides some cool extensions to Java: all types are objects, no static members, support of covariance and contravariance, to name a few. Traits are available instead of interfaces – they can behave like interfaces but also allow implementations of methods. With traits the problem of multiple inheritance (mind the diamond configuration) can be avoided. This is possible by introducing inheritance linearization and a kind of virtual super.
With all of these features Scala code can be much more compact than Java - and it interoperates well with Java components.
Well, I am really kinda enthusiastic. If you ask me, Scala could be a strong competitor for Java and C#. But of course, there is not a big company backing Scala such as Sun or Microsoft. Thus, the community will decide.
Loving the JVM but preferring other languages than Java? No more excuses, Dave!