(Creds warning: Ex-CS prof and Sun Certified Java 2 Programmer.)
Java was created by essentially a single person with a “narrow point of view” to say the least. (And an archaic one at that.) Sun bet a big chunk of the company’s future on it but was too chicken to enforce proper rules of software development on the Java group. Basically a “Church of Java, the One True Language” was born. This is never good.
So a lot of things have were (and continue to be) done badly. The language was released way too early. (Hence the heavy use of “deprecated” everytime you read the documentation.) There’s a lot of anti-Object Oriented Programming stuff built into the language (which is bizarre to say the least). The error-handling system is completely messed up. And on and on.
Hence Sun’s Java software is in constant state of flux, always trying to fix the patches to the bodges to the mistakes that should have never have been there in the first place.
(Note that Sun’s other stuff is great. Solaris is a great OS. It’s the Java group that is out of control.)
Programming Java is a nightmare. Many simple things that every other modern language has cannot be done at all in Java. You twist, turn and scream trying to get it to do things in an approximately reasonable way.
A lot of Java programs are a mess.
Put it all together and you have the answer to the OP’s “question.”