Java would be fine if it and it's community wouldn't force OOP and GOF patterns everywhere.

2003 called and wants its arguments against Java back.

Modern Java can be OOP, functional or procedural where useful. GoF patterns were never enforced by the language.

I'd say GoF patterns were pretty enforced by the language if you include the standard libraries.

Or maybe that's even a bit rude to GoF. Some OO patterns - pretty questionable ones - were pushed pretty hard especially in Java EE.

Java EE practically reinvented itself over the last 20 years using the more popular frameworks as inspiration for better or worse.

Even then, you were never forced to use Java EE if you didn't need it.

Java EE is pretty darn retro right now, and it was never core Java

Does the name of the class inside the file still break the wall and force what the name of the file needs to be?

There is an argument for that being an opinionated part of the Java language, and as i hear it, opinionated programming languages are all the rage.

Fwiw, I like that class names and file names must match. In python codebases I have had annoyances with this when I adopted others work.

Unless you write everything from scratch, you are forced to deal with 20 years of bad design. I really wish people would just stop beating this dead horse.

A lot of de Java standard library is actually quite nice to program with. Of course there are less good parts, but Java is committed to compatibility so you can choose between dealing with an old design versus continually refactoring code to the standard of the day. I prefer having a choice.

As far as Java use in companies is an indicator, the horse is still running.