There has been a lot of talk lately about Java’s decline. In this article, I’ll clarify and sort things out. Java has been through some turmoil, such as the stewardship transfer from Sun to Oracle, the JCP process concerns and serious security issues. The recent concerns are mostly about Java falling behind in the innovation race. Let’s examine Java from multiple angles to get a good sense of where things are.
Java Is the Most Popular Language
If you look at the Tiobe index, Java has been firmly in the lead for many years (sometimes C raises its head for a while). While, you shouldn’t take the numbers literally (Java is currently at 18.23% and C is in 2nd place with 10.95%) the ranking does have a strong correlation with any reasonable definition of popularity. What does it mean to be the most popular language? It means Java has a large pool of seasoned developers and it’s a safe bet to start new projects using Java. It also means that there is a large ecosystem of certification, training, support and auxiliary services. It is also a popular teaching language in universities, so fresh cadres of students with experience in Java come out of the system every year. But, there is a definite trend of fewer available Java-related jobs–that trend is real, but slowly evolving. Given the volume of large-scale, Java-based enterprise systems, there will likely be a need for Java developers for decades.
Great IDE Support
Java has several very good and mature IDEs. Eclipse and NetBeans are excellent free and open source projects and the non-free IntelliJ Idea is considered the best-of-kind. While some developers prefer text-based editors or environments such as Emacs, Vim, or even Atom, many other developers feel comfortable only with a good IDE. This is especially important in larger projects.
Java Is More Than 20 Years Old
The age shows. Java was designed to address issues with C++ and open the door to network programming. Many design and implementation choices made at the time, such as the applets, exceptions and generics didn’t fare so well. Various trends like functional programming became mainstream only in recent years. Java’s verbosity is also considered a serious con.
The bottom line is that Java is not sexy anymore. Most innovative and groundbreaking projects will not go for Java as their programming language of choice. That means that in the blogosphere, the representation of Java vs. newer and cooler languages is not as strong.
Java in the Enterprise
The only real competitor is Microsoft .NET. For a long time, .NET was a viable option for Windows only. The Mono project allowed building C#/.NET on Linux for a while but wasn’t as trusted. Microsoft’s new focus with .NET Core on Linux may change the picture in the future.
Java the Language vs. Java the Virtual Machine
As mentioned before, the Java language is somewhat outdated, but Java is also a virtual machine specification. Many new and cool languages run on the JVM. For example, Scala has been adopted by large players such as Twitter and has been used to implement hot technologies like Apache Spark. There are many benefits for a language to target the JVM because it can benefit from the Java ecosystem.
Android is another interesting beast. It uses Java as its API language although it uses the Dalvik VM and doesn’t provide a full-fledged Java SE standard library. Still, if you want to develop apps for Android you had better know some Java. There are other options like Xamarin, but much of the documentation and code are in Java.
Java the language is not standing still. There is innovation in the language space too. Java 8 introduced functional programming support. Java 9 promises a whole restructuring towards modular approach.
Java, as of 2016, is as strong as can be expected from a 20+ year-old language and runtime environment. It is supported by a large corporation and is the dominant language in the enterprise and in mobile applications. Modern languages target the JVM and provide seamless interoperability with existing Java libraries. Java, the language, continues to evolve. If you’re looking for the bleeding edge, Java might not be your best bet. However, if you’re an existing Java developer don’t worry about your marketability. If you’re so inclined start branching into other JVM languages.