Java has been around for a long time, and over the past few years it has undergone significant changes to keep it relevant. It is still the most popular programming language among developers, according to a 2019 report. But it may not hold onto that title forever. While it’s still at the top of lists of programming languages, other languages, like Python, are closing in on it. In fact, it is predicted that in the next few years, Python will surpass Java (and C) as the most popular programming language. And Python is not Java’s only competition. The rise of Kotlin has also taken some of Java’s share away, especially once Google started supporting Kotlin for Android development.
Java happened to be in the right place at the right time, similar to how Python now happens to be in the right place at the right time with the explosion of interest in AI and machine learning. According to Rich Sharples, senior director of product management at Red Hat, when Java was created 25 years ago, it was designed with the network in mind, and had a lot of features for network communications. It also came about around the time that multiprocessor systems were gaining traction and it was one of the first languages to make use of those hardware advances without the developer having to do too much more work. In addition to those features, it also had big backing in the industry, from Sun Microsystems, IBM and Oracle. All of these factors combined to make Java a highly successful language and a top choice for many developers for decades.
The reason that it has stayed so popular is because it still meets the needs of working across networks. And of course, there’s also the fact that it is open source. “Pretty much anything interesting happening in tech is happening around open source. And it was relatively early in mainstream open source as well. So, it’s checked all the boxes from a technical point of view,” he said.
Java was well suited to the environments of its time, but hasn’t really aged well as technologies change. Sharples explained that Java does a lot of “cool dynamic stuff,” but those sorts of capabilities aren’t really needed in technologies like microservices and serverless. According to Sharples, when working in those types of environments, developers tend to just start fresh when they run into an issue. So, all of those dynamic capabilities Java has aren’t really needed anymore. “What you get is a lot of baggage that doesn’t really provide much value in those modern architectures…If you think back, Java was designed to run on big multi-process machines. You could pretty much guarantee that you owned the machine and you could run multiple applications for each JVM (Java Virtual Machine) or app server. That’s just not the world we live in today. So, a lot of those capabilities bring a lot of weight and complexity and offer little value. So, if you look at functions as a service, you don’t see Java mentioned an awful lot.”
But Sharples doesn’t believe Java is going away quite yet. He believes Java will likely still experience growth for many years, or even decades. There are many projects that let Java thrive in today’s environments, such as Oracle’s GraalVM, which allows for interoperability in shared runtimes, and Red Hat’s Quarkus, which is a Kubernetes-native Java framework.
Mike Milinkovich, executive director of the Eclipse Foundation, which oversees Java Enterprise Edition, also believes Java itself is going to evolve to support these technologies. “I think that there are going to be changes to Java that go from the JVM all the way up,” said Milinkovich.
Sharples also believes Oracle has done a pretty good job of “keeping the innovation going without breaking the stability.” Oracle currently has several active projects focused on facilitating innovation for Java:
•Valhalla, focused on introducing value types to Java
•Panama, which is about updating the form function for Java
•Loom, which focuses on scaling Java
•Amber, which is focused on finding ways to simplify the language
•Metropolis, which is trying to see how much of the JVM can be written in Java so that both JVM and Java can evolve faster