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
i like it for the same reasons.
luckily a full-blown IDE is much less of a requirement with Scala because of several reasons: flexible package structure, one file may contain more than 1 type definition (even multiple packages), concise syntax, …
Interesting. Could you elaborate on how a flexible package structure makes good IDE support less necessary?
in Scala, there’s no need to create a deep directory hierarchy following the package hierarchy.
Java IDE’s have optimizations for easier navigation of the source tree (e.g. flatten all packages). that’s one of the many reasons i need an IDE like Eclipse, NetBeans, … for Java projects.
so, with Scala, you have one less reason to want/need an IDE (well, if you take advantage of these features of course).
i know, it’s a small benefit, but it’s one of the many.
don’t know yet if i can completely rule out Eclipse, IntelliJ and the like on big projects. but i believe a good OS, text editor, the Scala tools, SBT and some basic command line skills can get us far enough.
as a sidenote, for several reasons, i’m a little bit fed up lately with the major Java IDE’s.
Yeah sounds like scala is a good choice for you. Oh, and I’m also fed up with netbeans/eclipse…so slow…anybody want to help me build a replacement using clojure? 🙂