Before down-voting and replying, please, copy and paste examples from the Rosetta Code website, which would prove my statements to be incorrect.
1. Syntactic noise. 2. Verbosity. These gives us lots of cryptic lines of code, full of design patterns and other kluges. This is also related to the two below: 3. Over-abstraction. 4. Everything must be a member of a class. These two are simple and straightforward. These few pages long stack traces is a result of these unnecessary method calls. 5. Static typing makes our code safe. This nonsense results in even more lines of cryptic code ("generics") and even longer stack traces.
I am not talking about XML configs, over-"engineered" components (beans, servlets, etc.)
Here is a lemma: Any algorithm (at least those represented on the Rosetta Code website) could be coded with less lines of code, less words per line, less "special symbols" (with much better readability) and executed with less memory waste (this one excluding scripting languages for obvious reasons) in any other mainstream language. Period.
Sure, Java does not suck. It is stupid us, who are unable to "get it".