Blog archive

Java at 20 Years, Part 2: Still Top Dog After all these Years

More on This Topic:

It has been 20 years since the first version of Java was released to the public, and according to the TIOBE Programming Community Index for May, it's still the most popular kid in school. As I mentioned in an earlier post, Oracle is marking the anniversary with a Web site with lots of links to articles and video clips. Definitely worth a visit.

I've been talking to Java mavens about why, despite licensing controversies, seemingly endless security challenges and the rise of languages like Node.js, Python, Google Go and JavaScript (which apparently also turned 20 this month), Java continues to win so many hearts and minds.

RedMonk analyst Stephen O'Grady said the design of the language offered key development advantages over closer-to-the-metal languages like C or C++, which ensured Java's initial relevance. But the key to Java's longevity has been the widespread industry support it has enjoyed. "By serving as common ground between large industry competitors and a sea of enterprise applications," he said, "Java reached the critical mass that granted it a role of importance and kept it evolving along the way."

O'Grady also agrees with Kim Polese, whom I interviewed in Part 1, that the adoption of Java syntax for the Android platform was a key step in ensuring the language's relevance for an entirely new class of developer.

"The development of Java, which began its life as set-top box OS, has been tremendously important for the technology industry," he added. "It has been an enterprise standard for decades, is the common denominator among many Big Data platforms and is unofficially the language used to write huge numbers of mobile applications. That's a solid track record." (If you're not reading O'Grady's tecosystems blog, you should be.)

IDC analyst Al Hilwa pointed to Java's ability to address both server and cloud back-ends and desktop, mobile and embedded devices as critical to the language's longevity. He also cited the maturity and scale of the language after continuous improvement, and a good system of governance.

"Java offered one of the first machine abstracted technologies that minimize the sacrifice to performance," Hilwa added. "This abstraction allowed the technology to be portable and also much easier to develop high quality code compared to technologies like C/C++, which are much closer to the machine. That an ecosystem developed quickly around Java in the mid to late 1990's by a number of large vendors, most notably IBM and Oracle, essentially closed the deal and elevated it above any alternatives."

Eclipse Foundation executive director Mike Milinkovich looked back to the support of inner classes in Java 1.1 as a milestone in the evolution of Java, followed by lambdas in Java 8, and the inclusion of the invokeDynamic bytecode in Java 7. But the most significant change for Java, he hastened to add, is probably the most anticipated since lambdas: modularity, which is coming in Java 9. Those other developments "pale in comparison," Milinkovich said. "That is, in my mind, the biggest change to both the language and the platform since its inception."

I also asked about the importance of the development of the Java Platform, and Milinkovich made a fascinating comparison.

"A lot of people hate it when I say this, but Java is this generation's COBOL" he said. "I mean that in an entirely positive way. Java is the programming language that runs an entire generation of enterprise and industrial infrastructure. And just like COBOL, that means that it will be around for many decades to come. But what is even more fun is that innovation and invention continues both in the Java platform and language, and on top of Java in the ecosystem. The combination of being firmly entrenched as the de facto infrastructure language, but with continuing innovation, makes Java the language and platform that matters now and for many years to come."

I touched base with the ever insightful Wayne Citrin, CTO of JNBridge, who argued that the most significant change in Java was the shift in emphasis to the server-side after Sun realized that the original client-side emphasis (set-top boxes, applets in browsers, rich-UI applications) wasn't getting enough traction. "While client-side Java is still worked on," he said, "and new features are being introduced, most attention—and the effort of developers—has long been on the server side."

But he also pointed to managed code and runtimes. "Managed code and runtimes have been one of the most important developments of the last 25 years," Citrin said, "and Java was the first really popular language with a true managed runtime. It showed that managed runtimes were practical for real-life applications. I know there's a move in some quarters back to native runtimes, but I think this is an accommodation to some specialized areas, such as gaming and underpowered mobile devices, but this is a temporary situation, and I suspect those areas will eventually start using managed runtimes, again, too, since they're so much easier to develop for."

I also checked in with jClarity CEO Martijn Verburg, who sees the Java Virtual Machine (JVM) as the secret behind the enduring power of Java. "Even when it waned in popularity for the couple of years, the JVM is so compelling that developers have stuck with it, and now, of course, the language is finding its mojo again," he said.

I asked Verburg what he saw as the most significant change in the language/platform in the past 20 years, and he pointed to Generics, which he said had both a good and not-so-good impact. "It guided developers towards increased type safety for objects as well as primitives," he said, "which vastly improved the safety of much code that came out of enterprise Java shops. However, due to the mismatch with the primitive type system, there have always been significant cracks in the Generics implementation, which will still take one to two more iterations of Java to fix."

Verburg also sent me his "media quote," which I think is worth sharing, because it summarizes the state of Java well: "Java directly or indirectly touches just about every human on this planet. It is the glue that allows mobile health and banking in remote areas of the world, entertains millions with games such as Minecraft, and drives the economic engine of our global markets."

In case I haven't said it already, Happy Birthday Java.

Posted by John K. Waters on May 26, 2015