This is a follow-up post to my last one, where I was wondering which language will be Java’s successor as mainstream language on the JVM. I also asked the same question on quora.com, where I am going to maintain my opinion on this topic and also hope to get some input from other people in the community. So, if this interests you or you have an opinion to share, you can comment and/or follow this question on quora. I already stated in my last post that my current favorite is Scala. Here’s why.
I like that
- it compiles to byte code and runs on the JVM
- it has the best interoperability with Java code that I know of
- it has functional programming features including actors that give you a higher level of abstraction, which enables you to program in a more declarative way
- its syntax is familiar (more so than Clojure’s), yet much more concise than Java
- it feels almost like a dynamic language although it is statically typed (powered by type inference)
I don’t like that
- it offers different ways to do the same thing (swiss army knife syndrome)
- the IDE support is not as good as for Java
- [Update: 10.09.2011] also see ‘Yes, Virginia, Scala is hard’ by David Pollak
My current favorite is Scala, because I am not looking for something entirely different to Java, but rather for a better Java with functional programming features and for that Scala seems to be the best choice to me.
Here’s some resources that I found useful when I started with Scala:
- Excellent introduction by Daniel Spiewak from a Java developer’s perspective: Scala for Java refugees
- IBM developerWorks Scala series: The busy Java developer’s guide to Scala
- Scala language features overview presentation by Jonas Bonér at Oredev, Nov 2009