Java is done and it’s time to move on

Oskar uit de Bos
3 min readJul 13, 2020

--

Let’s face it. Java is an ancient language that is struggling to stay relevant but is not suited for containerized microservices due to its big resource footprint and limited concurrency. Java is trying to catch-up, but was clearly late to the party. So late in fact that everyone already left for the afterparty. Where Java wasn’t invited to. The language feels old with its terribly verbose syntax. And engineers no longer care about learning Java.

The timeless meme from KC Green’s 2013 webcomic “On Fire” applies well here

Big technology companies like Netflix still use Java in their system, but they also use Node, Python, Ruby and Go. It’s a similar story over at Uber. It’s common for modern distributed microservice architectures to leverage multiple languages, also called polyglot, and pick those languages based on their unique ability to address a particular challenge that the system has to deal with. In a distributed world, there is much less need for a general-purpose language like Java that tries to do everything, lacks focus and doesn’t have a clear purpose or identity.

When it comes to building containerized microservices, Java offers no clear benefits over competing languages. None. So how about we stop pretending everything is fine, acknowledge that Java is done and move on?

Those who cling to the Java are destined to become the next generation of Cobol or Assembly engineer. Working in an The IT Crowd like basement, dealing with legacy systems that have mountains of soul crushing technical debt. It might be good fit. After all, Java engineers still run Java 8 in production. Hardly bleeding edge. Many Java engineers are convinced that moving from Java to Golang is just about the need for a new toy and believe that JavaScript and Python are just hypes. And the fact that the Java community was still promoting a fundamentally broken programming model like JSF less than a year ago is just unbelievable. That’s basement material right there. No doubt.

Let’s talk about where to move on to. Languages for non-basement dwelling engineers that want work on projects that push the boundaries of cloud technology. Languages like Golang, Python, Rust, Node and Scala. Languages that, unlike Java, are not designed for the flawed object-oriented-programming paradigm and building large monoliths. These languages are designed from the ground up to solve current challenges. They have focus, excel in specific areas, are opinionated in their design and thrive in cloud-native environments. And most importantly, they are languages that engineers want to learn.

I hope that you recognized that this is an exaggerated, satiric way of describing the current state of Java and its community of engineers. Java is not dead. Initiatives like fibers, Quarkes, and GraalVM native images give Java a fresh breath of air and a fighting change.

But I wonder if it will be enough.

Java is a twenty-four-year-old language with an emphasis on backwards compatibility and originally designed for object-oriented programming. That is a lot of history and a lot of baggage to deal with.

And while being positioned as a general-purpose language was a good thing twenty-four years ago, in complex distributed systems where polyglot reigns supreme being really good at one thing beats being ok-ish at a lot of things.

Finally, there is a declining interested in learning Java, while languages like Python and Go continue there upward trajectory.

So, despite all the good efforts this could very well be the beginning of the end for Java. We can only speculate.

But, one thing is clear.

There are so many awesome programming languages out there. You are selling yourself short by not exploring them. Understanding multiple languages gives you a broader understanding of software engineering and different ways to solve a problem. My believe is that learning one language does not teach someone programming, it teaches them that language.

--

--

Oskar uit de Bos
Oskar uit de Bos

Written by Oskar uit de Bos

Engineering Manager at Albert Heijn, empowering teams to build services and applications used to run over 1100 Albert Heijn stores in the Netherlands!

Responses (5)