There are a lot of reasons you could point to for Java’s lengthy popularity. It could be attributed to Java’s cross-platform capabilities, its memory management, or its focus on networked systems. But we’re convinced it was all of these combined with a fourth, major element: stoicism.
While Java has evolved over the years, adding generics, annotations and lambdas, the core of the language has remained ruthlessly the same—and backward compatible. As long as you weren’t mucking about with some crazy Web framework, or using something that constantly evolved (like Enterprise Java Beans), you could rely on your application to run properly and unfettered for a very long time.
In this world of software, where marketing is constantly demanding new features, and management is screaming for products to ship, it can be tough to remember that there is one thing all users of all skill levels can agree on loving: familiarity.
When an application becomes a part of our lives, a piece of our day-to-day work life, we very quickly adapt to it. Our muscles remember the keystrokes, button clicks and taps needed to make the application work. Move one button a few inches to the left, or change the workflow just slightly, and you have invalidated the expectations and skills of all of your users in one compilation.
If your users are thrown off by application UI changes, your developers are just as thrown off by similar changes to their language of choice. Knowing Java is like being an expert seamstress, or an ancient sushi chef: You know your tools, you know how to use them, and with a few flicks of the wrist, you can create art. But if someone went around bending needles or swapping kitchen knives out for other knives, it’d be a lot harder to just sit down and make a quilt or some sushi.
And this is the power of Java. When it’s time to write heavyweight, scalable, enterprise applications, skilled craftspeople reach for their most comfortable tool. Thanks to years of that ruthless backward compatibility, Java is that most comfortable of tools.