We see this “Is Java dead?” question pop up year after year, and yet, by all external markers, Java is alive, well, and growing. While newer languages grab the headlines, TIOBE ranked Java as its top language of 2015, and currently shows it enjoying 5% growth in use since 2014, more than any other programming language.
Further, the PYPL Index, which ranks languages based on how often language tutorials are searched on Google, shows Java clearly out in front with 23.9% of the total search volume.
While there are a number of timely reasons for a big resurgence in Java over the last two years (the explosion of Android development, the release of Java 8, the growth in the Spring community, especially Spring Boot), market dominance comes only from having a great product. Here’s why we think Java isn’t going anywhere soon.
JVM and the Java Ecosystem
The Java Virtual Machine, or JVM. compiles programs into bytecode, which is then interpreted and run by the JVM. Because the JVM sits above your specific hardware and OS, it allows Java to be run on anything, a Windows machine, a Mac, or an obscure some flavor of Linux.
The big advantage granted by the JVM is in this increased compatibility and the stability it affords. Because your application runs in the VM instead of directly on your hardware, you can program said application once and trust that it is executable on every device with a Java VM implementation. This principle is the basis for Java’s core messaging: “Write once, run everywhere.” And it makes Java applications very resilient to underlying changes in the environment.
Security & Interoperability
The Android environment is a great case study on Java’s innate security and interoperability. Android, which encompasses 89% of the global mobile market, runs on Java. Because Java allows the OS to run in a virtual machine, it doesn’t need to recompile for every device, improving both system stability and usability.
Another benefit of Java displayed perfectly by Android, is its interoperability with other JVM languages like Scala, Groovy, Clojure, JRuby, etc. You get to build your application in the “more dynamic” language of your choice, and still fall back to Java when you need more horsepower.
This huge Android market is also inherently at risk for exploitation. Android + Java allows users to run semi-trusted apps and mitigates its risk by running all apps in a virtual machine. Thus, the only way for an app to exploit the OS kernel would be through a flaw in the VM implementation, which is kept necessarily small, and is protected by a well-defined security surface.
Java in Production, at Scale
Amazon, Google, eBay, and any many other large e-commerce brands use Java for their backend processing. They use it because it’s proven, and scalable. Any language, any backend could manage a handful of users, but Java can deal with 200m or more reliably. Let’s look at a few notable examples:
Apache Hadoop is a Java framework for running applications on large clusters of hardware. It was designed to provide high throughput for applications that manipulate or otherwise handle large data sets. Today, Hadoop is used by companies like Facebook, Amazon, IBM, Joost, and Yahoo to process data, perform analysis, or generate reports.
Hadoop creator Doug Cutting has said: “Java offers a good compromise between developer productivity and runtime performance. Developers benefit from a simple, powerful, type-safe language with a wide range of high-quality libraries.” We’ll put it simply: Big data wouldn’t exist without Hadoop, and Hadoop can’t exist without Java.
Twitter has been a hugely visible recent win for Java and the team at Oracle. Originally written in Ruby on Rails, the rapid rise in popularity Twitter experiences clearly exposed the lack of scalability in RoR. “Fail Whales” (the alerts that indicated the network was overwhelmed) grew in frequency until Twitter began a shift to Java in 2012. Today, Twitter runs on Java + Scala, and the Fail Whale is extinct.
Minecraft is an insanely successful video game. It made millions of dollars for its development team even before its sale to Microsoft for $2.5b in 2014. And Minecraft runs on Java.
The breadth of the Java community helped Minecraft spread to hundreds of thousands of potential would-be modders. At the same time, Minecraft also introduced Java to a whole new generation of developers. A quick Google search on “making mods for Minecraft” will net you 653k results, many of which are resources to teach programming to the under-12 set.
One of these open source tools is Eureka, which they use to track what type of device a user is using to launch Netflix and cross-check against movements and recent activities to ensure the account is “current” and safe.
The Future of Java
Last year, Oracle announced the impending arrival of Java 9, slated for September 2016. This update is scoped to break up the languages multitude of functions into a number of bite-sized components, a change that is intended to make Java quicker and more accessible. Oracle’s overall investment (while often slighted and maligned) have ultimately helped ensure Java can continue to support the many enterprises that rely on, and still react to new trends in development.
Java and the Internet of Things
“I really think Java’s future is in IoT. I’d like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well,” said Mike Milinkovich, Executive Director of the Eclipse Foundation.
Oracle agrees. Per VP of Development Georges Saab, “Java is an excellent tech for IoT. Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that.”
Java + Stormpath
Java might have its detractors, and some of their arguments might even be reasonable, but it has its benefits too, such as outstanding tools for deployment, performance profiling, the JVM, a vast library of libraries, and so much more. At Stormpath, our backend has been 100% Java since day one, and we recently upgraded to Spring Boot. Viva la Java!
Stormpath offers an advanced identity management service with broad Java support that implements in minutes. The Stormpath Java SDK, Servlet plugin, and the family of Spring integrations including: Spring WebMVC, Spring Security WebMVC, Spring Boot WebMVC, and Spring Security Spring Boot WebMVC allow developers quickly and easily build a wide variety of functions they would otherwise have to code themselves, including:
- Sophisticated authorization support, with caching for maximum performance
- Token authentication and revocation with JSON Web Tokens and OAuth 2.0
- Native support for multi-tenant applications, with pre-built partitioning of customer data
- Comprehensive documentation and commitment to customer care, even for free developer accounts
- Check out our Java Product Documentation, download our Build vs. Buy whitepaper, or sign up and get started right now!