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