I dare say that you could replicate the same mess in C#, PHP, Python, C++, or any other object oriented language. Just because people write bad code, it doesn’t mean the language is bad.
Sure, I didn’t claim that the bad ecosystem makes the language as such bad (although it is still bad, for other reasons). It’s just an additional disadvantage of developing software on the Java platform.
That said, I do think some of the bad code out there is an effect of trying to work around flaws or missing features in the language. Libraries like Spring add an additional configuration layer that is practically like an additional language on top of the base language. Instead of coding Java, you’re coding Bean configurations and filter chains. Unfortunately all of that comes without useful debugging tools, so you’re left scratching your head why the system isn’t doing what you want. Log4J is another such complex configuration system that - unfortunately - customers are encouraged to change themselves which leads to confusing failure modes and insufficient user interfaces.
I dare say that you could replicate the same mess in C#, PHP, Python, C++, or any other object oriented language. Just because people write bad code, it doesn’t mean the language is bad.
Sure, I didn’t claim that the bad ecosystem makes the language as such bad (although it is still bad, for other reasons). It’s just an additional disadvantage of developing software on the Java platform.
That said, I do think some of the bad code out there is an effect of trying to work around flaws or missing features in the language. Libraries like Spring add an additional configuration layer that is practically like an additional language on top of the base language. Instead of coding Java, you’re coding Bean configurations and filter chains. Unfortunately all of that comes without useful debugging tools, so you’re left scratching your head why the system isn’t doing what you want. Log4J is another such complex configuration system that - unfortunately - customers are encouraged to change themselves which leads to confusing failure modes and insufficient user interfaces.