“Java is Dead”, “Java is Dying”, “Java is Obsolete” and other variations on the meme of Java mortality appear frequently on line in the IT “press”. These are click-bait, intended to draw your attention to a headline, or get some cheap SEO. For the more complex and nuanced truth about trends in Java usage – look beyond opinions for evidence.
If you get past the headlines, many of the opinion-based articles and postings are not actually about Java in general, they focus on one or another problematic element of the Java ecosystem. This ecosystem is a large and complex set of standards and APIs that addresses multiple problem domains at multiple levels of abstraction. Not all parts of it have advanced consistently through the years. The desktop UI, “Swing”, has effectively been replaced by “JavaFX”, which has not proven popular, in part because development for any desktop UI has declined in favor of mobile and web UIs. But one area where Java has truly expired is browser programming. The original applet model became unpopular due to unmet logistical and security needs. The Java “plug-in” for browsers has only a few legacy users and Oracle is deprecating it in the next release. Java EE has lost some mind share, partly because it has not sufficiently addressed micro services or cloud deployment. However, 3rd party solutions, such as Spring, are meeting the needs of Java developers in these areas.
The pace of development for new Java releases was impacted by the huge effort that went into modularization for Java 9. After years of delay, it was recently delayed again. And while it has diverted effort from many other worthy proposals, it is a capability that will make a difference for very few Java developers. After modularization is finally accomplished the pace of Java innovation should pick up. Meanwhile, other languages, and their ecosystems, have continued to evolve. The net effect is that, in the enterprise, while Java continues to be the dominant choice for systems with long and medium-term life cycles, other languages are being used with increasing frequency in prototypes and in projects with shorter life cycles.
Java is dominant in mobile applications due to its usage in the Android environment. Java is still used by a huge number of developers across a spectrum from embedded to enterprise applications. Java is thriving in a world with many more alternatives than ever before. It’s use in systems of record will make it highly relevant for decades into the future.
Java is dead? Long live Java!