Yes I like the language, the JVM and the great tools+libraries it has. But the most of the most popular ones just make me want to run away when I have to use them. Eclipse is horribly unintuitive unless you used it for years and learned to trick it. IntelliJ is great but nowhere near as popular and well known. If I have to talk to someone and show something in the IDE they are always hugging their Eclipse cause "everyone else does it".. Can't blame people for not liking it if they have Eclipse forced on them.
Then there are the libraries/frameworks like Spring, Hibernate, the REST stuff, etc. I just don't get the need to hide everything in a factory of this and factory of that and put this annotation there. I try to debug it and figure out what is going wrong and it is way too complicated because it is all hidden under 50 layers of abstraction and it is near impossible to figure out what is really going on. Not to mention when I try to get something simple to run such as a remote call over HTTP/JSON and it takes me a day to browse the docs to see how to set up the weird dependency injects, annotation configurations and whatnot.
And then the idea of "I need to do a logical expression (such as &&), let me pull in that Apache library with zillion features to do it..". Small projects ends up with some 100+ libraries for the simplest things you could do in a few lines of code, resulting in even more added complexity for no real gain. Then there is the Maven to hide your build and require a pile of configuration files spread out, added to the configuration files for all the dependency injection etc. making it impossible to navigate the code and understand it.
In some cases the factory pattern is difficult to avoid since it has not been possible to define a lambda/closures thing but hopefully the next version fixes that. Now I just wait for what kind of a mess people will make with the stream API. Some of the reputation for Java being overly verbose it true and it is fashionable for geeks to bash Java for it, but the whole stream API just seem like the perfect opportunity to write weird to understand code. Hopefully I am just too old, resistant to change, and will learn to read/like it..