Harry Winser

3 Reasons Why I Love Java

I love programming.

I still do, 10 years in.

Those who follow me on Mastodon know I love to complain about code and tech, but they should also know that I only complain because of my love for it.

I love throwing myself at a problem over and over. I love the feel of typing on a keyboard. I love finding the random post on StackOverflow that is the exact issue I have, and discovering I’m not alone. I love attending meet-ups and finding so many people as passionate as I am.

There are so many aspects to love about programming.

With that in mind, this post as a sort of love letter to Java. Java was and still is the language I’ve made a career out of. Java has enabled me to travel, talk at conferences and meetups, rent flats, eat out, buy gifts, buy a house, and generally enjoy living.

This blog is also for those who wonder why people still love Java in 2025. Why it’s still one of the most used languages, and why it’s probably not going to go anywhere for a fair while.

1. Consistency & Stability

Java is a stunningly consistent language and ecosystem. The developers of it care deeply about not making breaking changes, and ensuring that folks can easily upgrade between versions. It’s “slow” to make big changes.

Let look at the build systems, which have been around for a long while now. The two main build systems are old. Maven is almost 21 years old and Gradle is 16 years old. With age comes consistency and stability. Oh and libraries are pretty most always hosted on Maven Central, and have been for years.

With this level of stability and consistency tutorials can remain relevant for years. You can read a tutorial from 2015, and it’ll probably still work today.

Libraries and Frameworks have also been around for a while too, which means there are loads of documentation. And because they’ve all been widely used, it’s likely others will have run into issues before you get to them and will have been fixed.

That’s not to say Java doesn’t change. A lesser known fact is that a new version of Java is released every six months. Every March and September. Any feature that’s ready to be shipped gets shipped. Gone are the days of massive releases like Java 8, which added a load of very useful stuff but a fair bit of stress when updating from Java 7.

When writing a complex system that needs to be maintained for years to come, you can’t go wrong with Java. Stability and consistency matter, and shouldn’t be overlooked because of a “new hotness”.

2. Speed & Compatibility

Java got a lot of flack in the late 90’s and 00’s for being slow. And it certainly deserved it. But since then, it has done a lot to be fast.

Like, really fast.

The JVM, which it runs on (as do other languages), powers a fair number of search engines. Elasticsearch is written in Java. So is Hadoop, which can deal with petabytes worth of data. Then there’s also the companies like Uber, Netflix, and Amazon, that run Java for their major systems. Amazon even releases their own JDK, which it tweaks for internal use.

Java can also be customised for its environment, specifying how much memory it uses and CPU. Standard stuff, but you can decide on what sort of Garbage Collection you’d like to use, as well as how the memory is partitioned between different heaps. This means you can tailor (or really screw up) how it runs depending on your needs.

It also runs everywhere. Set top boxes, personal computers, phones, serverless, Raspberry PI’s, ARM computers. Wherever it’s needed, Java is there. So many JVM and Java ports exist, it’s awesome. Do all of these work well? No. But if you want to run Java, you pretty much can.

Quick side note; you totally can run AWS Java Lambdas. But should you? That’s up to you, as it is slower to boot, and it is a more verbose language to write very small functions. That’ll be down to your needs and is out of scope of this post.

3. Libraires & Specifications

I know I’ve touched on Libraries in point 1. however I feel it’s worth it’s own section. There are a tonne of libraries for Java, and a lot of them battle tested.

Spring & Spring Boot deserve a mention, for powering a lot of web servers the world over. And these are free! And because they’re so widely used, there are lots of people improving them, teaching them, and writing about them. There are also loads of libraries built on top of these frameworks, enabling access to AWS services or introducing new paradigms like async/await (Reactive Programming).

Java also comes with a load of specifications, which library builders can use to interface with other tech. Accessing databases for example is specified via the JDBC API. Meanwhile, working with web applications can be done via the Serverlet specification. Just for clarity, I don’t recommend working directly with either of these specifications. They’re for low level interactions, and instead I recommend using libraries built on top, like Tomcat. Which loops back to an earlier point - tried and true libraries exist for the all the standard stuff, enabling you to build.

With Java, these specifications enable libraries to talk to each other, and build on each other. A shared understanding of whats available. This is awesome, in a world where a lot of folks don’t like talking or working together. Though it’s not always perfect (I’ve spent a fair few hours debugging when they don’t line up), it’s great when it does work and means you can focus on your Job instead of writing code to access a database (unless that is your job).

In summary, I love Java. It’s gotten me through some difficult problems, and has been a stalwart companion. I do think Kotlin is a solid alternative if you want something a little less verbose and is null safe. When picking Java for a new project you can rest easy knowing that the community is strong, the libraries are numerous and well cared for, and it’ll still be there for you tomorrow.