Skip to content

Brilliant Coding Blog

Be Brilliant

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.

White laptop with cup of coffee isolated on white

Java

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.

Scala

Status: so you say you want a revolution?

While Java has held steady, the Scala language has been anything BUT steady. The main company supporting the Scala language, formerly known as ‘Typesafe’ changed their name to ‘Lightbend’ and appear to have a new ‘prime’ directive targeting the replacement of enterprise monoliths .  Even more radical is the shift for the next Scala version to refocus on DOT which would enable Scala to build not only for the JRE…but also for Javascript engines like V8.  This radical approach by Martin Odersky and team is a gamble that could lead to an impressive future for the Scala language.  However, currently, this path is continuing to cause a rift with established Java veterans.  With so much uncertainty about the language direction, I expect Scala to fall back into a very niche usage, primarily by startups and data scientists.

Kotlin is the ‘Thomas the tank engine’ of languages in that it just wants to be ‘useful’.

Clojure

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.

KOTLIN

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.

Final thoughts

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.

Looking ahead: JVM Programming Languages