Looking ahead: JVM Programming Languages
In this article I take a look ahead at the future of four programming languages; Java, Scala, Clojure and Kotlin. All four of these languages are designed to run on the Java Virtual Machine ( JVM ), which is supported on practically every computer operating system. Most recently, JVM programming languages have become popular choices for building cloud applications.
Status: waiting patiently
Maybe the most exciting change for the Java programming language comes from Project Jigsaw, it is one of the biggest changes that the JRE has undergone in years. Unfortunately it has been delayed and we will need to wait until 2017 for it. Unfortunately this also means that Java 9 has been delayed as well. I don’t expect much change in the Java landscape until the Java 9 release. Right now the project to watch is the OpenJDK project. Historically it’s been a bit like mystery-meat where you are never quite sure which Java features are rolled into each build. Now, however, Google will be looking to use OpenJDK for their popular Android mobile OS. This could bring some much needed direction and rigor to the project. Will this lead to any long-term ‘forking’ of the Java ecosystem?…I highly doubt it. Oracle has done a good job in continuing to steward new features into the Java platform and even with a release slip of a year…the Java community doesn’t tend to move particularly fast to merit a radical split.
The radical thinking by Martin Odersky and team is a gamble that could lead to an impressive future for the Scala language.
Status: so you say you want a revolution?
Kotlin is the ‘Thomas the tank engine’ of languages in that it just wants to be ‘useful’.
Status: trying to cross the chasm
Speaking of niche languages, Clojure has been the new, up and coming JVM based language for quite some time. There is a well known gap where niche adoption gives way to broad acceptance, unfortunately Clojure has been trying to overcome that gap for some time and still has been largely unsuccessful. It’s starting to look like that gap might be a chasm. Cursive a much needed development environment still remains an IntelliJ plugin. On the positive side, the Clojure development team continues to release yearly updates with new features. To me, there is still a lot to like about the Clojure platform, however with many languages occupying this niche space, a flexible but less tool-heavy Clojure could simply get drowned out of consideration in the future.
The Groovy language was abandoned by Pivotal and now is incubator status with the Apache project.
Status: safety above all else
Speaking of languages with advanced tooling, by far the most exciting language to watch right now is Kotlin. Created by Jetbrains, the company responsible for the industry leading IntelliJ IDE, Kotlin is the ‘Thomas the tank engine’ of languages in that it just wants to be ‘useful’. The exciting thing about Kotlin is that it offers many improvements over stock Java and it could quickly become the go to alternative for Java veterans. This is especially likely due to the uncertainty around the future of Scala. Also since Kotlin was developed by a development tool company all of the supporting components are already in place (ie build tools, analysis tools, testing and documentation). With version 1.0 fully released, I expect to see it used on more serious projects and for the overall adoption rate to increase significantly this year.
I left a couple favorite JVM languages off the list. This is because I expect very little change from these projects in the next year. The Groovy language was abandoned by Pivotal and now is incubator status with the Apache project. While Groovy is a mature project, it will take the Apache project some time to get this project moving forward again. Another project that I absolutely adore is the JRuby project. It’s a testament to the options you get from embracing open source as it’s a sanctuary from MRI versus other LLVM forks (ie Rubinius). However for serious long term production development I see Ruby users switching to Clojure instead of using JRuby (Clojures poor development environment by Java standards is still far better than what the Ruby community has to work with).
Copyright (c) Matthew Jackowski, 2016. Photo: © Africa Studio – Fotolia.com.