Disclaimer: CS doctoral candidate who mainly programs in Java. Hopefully, I can learn something here.
Yes, it was released too early. Most glaringly, this was indicated by the primitive types not being objects; sort of solved with autoboxing, although at a significant performance hit. Furthermore, the added complexity and odd ways of bouncing between them is terrible (and leads to some non-intuitive bugs). But what other forms of “anti-Object Oriented Programming” are you speaking of? And why do you say the error-handling system is “completely messed up”? Are you referring to the ongoing checked exception debate?
Yes, I suppose the software is constantly being revised, which can cause some odd (and difficult to debug) issues. AFAIK, nothing comparable to the move from gcc 3.x to 4.x, though. Not that this is an excuse, but software is (almost always) under constant revision. Again, that doesn’t make it desirable, but it is somewhat understandable.
Beyond the primitive/object issue I brought up, what other major fixes are you speaking of?
There are a few things about which I have to agree with you here. For instance, (almost) anytime I’ve tried to use parts of the nio package it was such a hassle that I found a different way to approximate it (non-blocking, non-GUI IO, for example). But it’s rare that I encounter anything like that day to day. Are there specifics you had in mind?
Sure, but the same can be said of anything, right (says the TA who has suffered through grading Java, C++, Scheme, etc. code)? Or is there a particular feature or characteristic of Java that you’ve found specifically lends itself to badly written code?
I’m not convinced, and the animosity directed at Java always baffles me. There are tons of good things about Java; note however, that while I do like Java, I wouldn’t claim that it’s the solution to everything – it’s certainly not the right tool for every job. But, on the other hand, the claim that it’s “absolute garbage” makes me suspect a serious error is occuring on the non-computer side of the keyboard.