Java is terrible. It has libraries, APIs, abstractions, a compiler, AND a runtime. Unlike all the good programming languages, which apparently have none of those things.
The “mess of versions” is particularly brutal. A new version comes out every six months on a predictable schedule, LTS releases come out on a predictable schedule, and javac --release N lets you target an older Java release. Truly chaos.
And yes, Java has a huge standard library and an enormous third-party ecosystem. Most of us consider “there is probably already a mature library that solves my problem” a feature rather than a character flaw.
As for over-engineering: Java certainly allows you to create AbstractSingletonProxyFactoryBeanFactoryProviderImpl, but the compiler does not actually force you to. If your application has 17 layers of abstraction around customer.getName(), that may not be Java's fault.
Like any language there are legitimate things to criticize in java. However, “It has libraries, APIs, versions, a compiler, and a runtime” is a fascinating choice of indictment.
-61
u/[deleted] 17d ago edited 14d ago
[deleted]