I blogged some time ago about JVM languages and it is time for a follow up, as some things have changed and I have changed some of my opinions.
- Java: I have to admit that I didn’t think Oracle will do so well with the Java language and manage to progress it more and better than Sun did for a lot of years. Now with Java 8 features out (lambda expressions, streams, defaults, new date/time api) is more modern and more functional (to the point that I’m not sure need RxJava). If Java 9 will be able to continue the trend and also make Java more modular it may make Java not suck as bad anymore and continue to be the most used JVM language for the foreseeable future and will continue to be the safe choice for many backend and web API developers. However, let’s not kid ourselves, the Java language is old and clunky at times and even if it managed to steal some of the nice features from the newer languages it is trailing and will be trailing the leading languages.
- Scala: Is the new clear leading language on the JVM. I know I hated some things about Scala a couple of years ago and I still think that by allowing to write the same thing in so many ways it makes it more difficult to be widely adopted and feels at times more like an academic language. However, people are getting more and more used to functional contracts in most languages, even in Java through RxJava or Java 8. Scala and scala based libraries and frameworks are leading a lot of the innovation on the JVM. If you are a strong developer and have a team of strong developers Scala is the main choice at the moment for backend and API work, but not yet for mobile apps, like Android, even though things are starting to change there, too.
- Groovy: Looked like a strong contender for a while, but I guess that by being mainly promoted by Spring and with Spring becoming the new JEE (everything in the kitchen sink) it failed to gain traction, just like Spring and Grails (based on Spring). There are very good some build and test tools that are groovy based, like grade and spock, but at the moment I would limit my usage of groovy to these 2 tools.
There you go, my take on JVM languages is trying to say that while Java evolved better than expected it is mainly for developers and organizations that want a safe choice, while strong developers will mot likely gravitate towards Scala.