AR
alx richards
all posts
2025.12.09essay4 min read

Why I keep coming back to Java

Every few years I leave Java. Every few years it pulls me back. Here's why.

Every few years I convince myself I'm done with Java. Too verbose, too ceremonial, too much boilerplate for things that take three lines in JavaScript. Then, six months later, I'm writing a Spring service and quietly glad I came back.

This has happened enough times that I've stopped pretending it won't happen again.

What I always forget

Java's verbosity is annoying when you're writing code. It's a feature when you're reading it three months later. I've returned to Node services I wrote in 2022 and had to reconstruct what they were doing from the behavior. I've returned to Java services and read them like prose.

Types, interfaces, method signatures — they're not just documentation. They're constraints that force you to be explicit about what a function does and what it needs. When you're reading unfamiliar code, that explicitness is worth more than the keystrokes you saved writing it.

The ecosystem argument

The Java ecosystem is boring in the best way. Spring Boot, Hibernate, Flyway, Gradle — these tools have been around long enough that every edge case has a Stack Overflow answer. The community is large, the docs are complete, and the libraries are stable.

With newer runtimes, you spend a non-trivial percentage of your time fighting your tools. With Java you mostly just build things.

What actually keeps me leaving

Startup time. Local development with a JVM is slower to iterate than with Node or Go. Hot reload helps, but it's never quite the same as saving a file and watching the server restart in 200ms.

And the boilerplate genuinely is real. There are things that should be one line that are five. Lombok helps. Records help. But it still feels like the language is working against you in places where it shouldn't be.

Where I've landed

Use it for services that need to be readable by multiple people over a long period of time. Don't use it for quick internal tooling or prototypes where iteration speed matters more than clarity.

That's the honest answer after coming back to it enough times to have an opinion.

Alexander Richards2025.12.09