When it comes to technology, one thing is for sure: there will always be battles, winners and losers. The programming world is no exception. Programming languages come and go, some of them persist and thrive while others become obsolete with time. Programmers are willing to defend their languages strongly, and sometimes unreasonably. Programming after all is not just about algorithms and calculations, it is a philosophy and programmers fiercely stand by their ideologies. There is an affective relation between the developer and the programming language, a mix of nostalgia, accomplishment, pride and gratitude. I love Java. It was the first programming language I learned almost seven years ago. It was a great gateway to the world of software making, and a language I still use nowadays. But what is Java after all? And was it able to withstand the test of time?
So what is Java anyway?
Java is one of the most famous and widely-used programming languages. Born in the mid-90s, the language has re-invented itself more than once, and was able to have a far-reaching impact on the software development scene. There was a time when Java was cool, forward-thinking, futuristic and mainstream. No one questioned the future of the platform; Java seemed to be here to stay. The language served as a great introduction to whoever wanted to get into programming. Developers shying away from the complexity of C/C++ found in Java a more accessible approach for their work. And certainly, the promise of "write once, run everywhere" lured many into the ecosystem. Big names embraced the technology, and Java was powering a vast array of products on various platforms.
Trouble in bytecode land
But it all began to crumble down. JME, the version of Java destined for mobile devices, is a thing of the past, a relic of a time when primitive mobile apps were en vogue. Java applets, the supposedly cool apps running directly in the browser, are long forgotten (or not, considering the latest zero-day Java vulnerabilities), plagued by security and reliability issues. On the desktop, Java is far from popular, with a limited number of swing-based apps that seem stuck in a different era. The server side is probably the last stronghold of Java, the place where the platform is still regarded as an attractive and viable option. But even there, Java has to compete with newer platforms and frameworks that promise greater productivity and appeal to newer generations of developers.
It seems as if the language itself is not updating fast enough. Every new version of Java is bringing enhancements to the runtime (garbage collection, memory footprint...), but the language is still lacking features that other languages take for granted nowadays. And even when such features are announced, they remain controversial and their implementation seems stalling. Depending on whom you ask, Java might not need these features after all, and it would be a much wiser decision to keep the Java syntax concise and elegant. After all, other JVM languages already have a lot of these features. But the overall impression is that Java is stuck in the past, and that the people behind it lack proper vision and management of the language features.
Bye bye Sun... Hello Oracle
Java has always been the property of Sun Microsystems which failed to properly monetize the platform. Enter Oracle, the separated-at-birth twin of Microsoft. The company relied heavily on the Java ecosystem, and saw in acquiring Sun, and consequently Java, a great way to
control preserve this ecosystem. If Oracle is known for anything other than databases is its love for profit making. While that is totally legitimate, it does not necessarily ring well with developers. To be fair, Oracle are managing Java much better than Sun by focusing on projects like OpenJDK and JavaFX which could revitalize interest in Java. However, Oracle have also caused some possibly unrepairable damage by going after Android, the one platform that was keeping Java 'hip'. By suing Google, Oracle has shaken the community's faith in the openness of Java. The industry would be more reluctant to 'fork' Java, and those who tried where left in the dust, or the attic.
On the longer run, being run by a big firm might benefit Java, but the platform has lost so many battles that its future has become uncertain if not shaky. But one thing is certain, Java has lost the glimmer of its early days, and the newer generations of developers seem to have moved on. In this generation gap conflict, Java is fighting to keep whatever territory it can still claim, and the prospects don't seem very positive. Java won't be going away any time soon, but it is no longer the language of the hobbyist/hacker. On a more positive note, the Java language might be a has-been, but the JVM is alive and thriving. Interest in languages targeting the JVM is certainly increasing and that could pump some much-needed innovation and new blood into the ecosystem.