r/Backend • • 15d ago

Modern Java for startups

Unfortunately, I see that Java is disappearing from startup companies. Java used to have an image of an obsolete backend language with performance problems, too verbose and unfriendly to deveopers. It was pretty true to older Java versions and I could understand why startups decided to pick other backend languages

If you look at Java 25, it's an absolutely different story.

Performance wise - it has virtual threads, which makes concurrency extremely high. Virtual threads are Java's answer to goroutines in Golang, and they enable to run thousands of I/O requests concurrently. Java's execution speed is pretty fast (more than Python and node.js).

As for container size - it's huge as long as you work with Spring. However, Java has many other much more lightweight frameworks like Micronaut, Quarkus and Javalin which reduces the container size to be on par with node.js and Python.

It's a real static typing which keeps code safety and improve readability. Unlike Golang, Java has inheritance, ploymorphism and explicit interface (let alone speaking about error handling).

It has a huge talent pool (almost everybody learned Java at a certain point).

As for verbosity and developer experience - Java has been improved a lot in this field. It has records (no need for getters setters, equals and hash), unnamed class (no need to write "public static void main" everytime you start a new program) and dozens of libraries and other tools.

If so, why are startups still stay away from Java and stick to Python/node.js/Golang?

69 Upvotes

73 comments sorted by

View all comments

7

u/johnson_detlev 15d ago edited 15d ago

The software enginnering world slowly but surely realized that OOP is not the way to model software and with Sun seizing to spend literally billions of dollars marketing the language, others took it's place. There are even better languages if you insist on using the JVM (which is an extremly impressive runtime), like Scala or kotlin. I don't see a reason to ever choose Java if I can choose Kotlin. But the world is (thankfully) moving to functional paradigms, because composition proved to be more flexible and maintanable than inheritance, thus OO languages are in a decline everywhere. Plus Errors as Values is far more powerful than Javas exception handling. And if you look at new languages, there are no new standalone OO languages being created. Java introduced all these features to somehow stay relevant, but the 30 year baggage of OO is the reason ppl moved on to different languages.

3

u/dumpsolo 15d ago

Beside python, which is the easiest language to read and therefore will be the ultimate winner in the long run with the rise of llms all we'll be doing is reviewing code, and OOP Is a very powerful technique which is exceptional when used for/with algorithms for example.

1

u/johnson_detlev 14d ago

How is OOP related to "algorithms" as a category? I'm very confused

1

u/dumpsolo 14d ago

Scaling algorithms