Today's revelation about what I don't like Java stems from the fact that its dysfunctional attempt at being an application language has led to people thinking it is the be-all, end-all language for programming. Java was originally designed as a systems language for set-top boxes to connect to your TV. But thanks to the popularity of Java applets in web pages it has slowly tried to morph into an application language. But because it won't give up backwards-compatibility it feels like it is kind of a systems language, kind of an application language, but neither completely.
And yet people treat it like it is this grand language that can solve all of your problems. But even I don't think that is reasonable. I use Python when I can, but when I have to drop down to C I do. But Java just doesn't try to fit that bill since it tries to perform in the same space as Python. Now luckily Sun seems to have realized their mistake and is paying to develop JRuby and we have Jython, but I won't be satisfied until people start to realize that Java should be something they resort to, not start off with.