• gornius@lemmy.world
    link
    fedilink
    arrow-up
    32
    ·
    1 year ago

    Java used to lack many features to make the stuff you wanted it to do, so most Java programmers adapted design patterns to solve these problems.

    Honestly, older versions of Java are utter garbage DX. The only reason it got so popular was because of aggressive enterprise marketing and it worked. How can a language lack such an essential feature as default parameters?

    So, anyway after the great hype Java lost its marketshare, and developers were forced to learn another technologies. And of course, instead of looking for language-native way of solving problems, they just used same design patterns.

    And thus MoveAdapterStrategyFactoryFactories were in places where simple lambda function would do the same thing, just not abstracted away three layers above. Obviously used once in the entire codebase.

    Imo the only really good thing about Java was JVM, while it was not perfect, it actually delivered what it promised.

    • Franzia
      link
      fedilink
      arrow-up
      9
      ·
      1 year ago

      This is the only necessary comment in the entire thread, thanks for explaining

    • 31337@sh.itjust.works
      link
      fedilink
      arrow-up
      8
      ·
      1 year ago

      I think most of those design patterns originated from C++ (Gang of Four). Java was designed to be a simpler, opinionated C++, and inherited many of the nuances of OOP-style C++. I actually kinda like Java. I think its restrictiveness is nice for large projects, so everyone uses the same programming paradigm and style (no mixing of template, procedural, and OOP programming). Code execution is relatively quick (compared to things like the Python interpreter). Don’t need to write header files or manually manage memory. Has fairly advanced features built in for multi-threading, concurrency, remote objects, etc.

      I haven’t programmed in Java in many years, but I’ve been programming in C# lately, and it just seems like Microsoft’s version of Java.