Comment by mschuster91

Comment by mschuster91 3 days ago

2 replies

The problem for Java's "uncool status" isn't Java as a programming language, the JVM or its academic use IMHO, it rather is a consequence of large-enterprise culture.

Large enterprise doesn't value "creativity" or any deviation from standards, but it does value plans and estimates - hence clueless, brainless "managers" and "architects" forced programmers to do absolutely insane bullshit busywork that a gang of monkeys on LSD could do, and that culture spread throughout the large-enterprise world.

On top of that come "design by committee" stuff like CORBA, XML, SOAP, Java EE, Enterprise Beans and everything associated with this particular horror show, JDBC...

You can do absolutely mind blowing stuff with Java and the JVM. But fuck corporate for torturing Java and the poor sods tasked with the busywork. Java got the image it has because programmers want to be creative but could not be so because their bosses were braindead.

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.

  • DaiPlusPlus 3 days ago

    > 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#.