← Back to context

Comment by nasduia

3 days ago

The historical Java patterns of factories of gizmos modified by adapters on adapters etc. really makes the large codebases miserable to work on. Along its enterprise lifespan it picked up all the fad modelling/project jargon/pattern nonsense (which as you rightly say were there to limit creativity) and that is now embedded in codebases. It might be that a new Java enterprise application started from scratch would be lovely, but those are rarely seen in the actual enterprise world.

I don't think it was ever uncool because of the core language, it was always uncool because of the standard libraries, UIs and culture.

> I don't think it was ever uncool because of the core language

Putting type-erasure vs. reification to side, I'm going to disagree here: for reasons unknown, Java's language designers have adopted a dogmatic opposition to class-properties (i.e. field-like syntax for invoking getters and setters), operator-overloading, or any kind of innovation of syntax.

I appreciate the problem of backwards-compatibility (and forwards-compat too), but the past 30 years of software and programming-language usage and design shows that field-like getters/setters (i.e. "properties") are a good and useful feature to have; so if Java is going to overlook something as basic as properties (pun intended), then it follows that Java's designers will similarly disregard other language design innovations (case-in-point: if "value types" are even an innovation).

I can say there is one thing that Java has done well, and that's make a good music video: https://www.youtube.com/watch?v=1JZnj4eNHXE

-----

Yes, Project Loom's reinvention of Green Threads is cool, but that's not anywhere near enough to address Java's declining relevance and credibility as an application-programming language in the era of C# 13, Rust and TypeScript (and yes, I know Rust doesn't have properties - but the rest-of-Rust more than makes up for it). My main take-away from the past 15+ years is that Java fell-behind everyone else; it's not that C# is Microsoft's take on Java, but that Java is now a third-rate C#.