Heres an excellent overview of the problems some people see with Java.
Most of the critics of Java point to the virtual machine and its overhead as the biggest problem. I have always disagreed with this (which explains why i’m so happy using .Net’s vm). The problem isn’t in the technology, or the overhead. On a modern system the overhead is fine, particularly when you look at potential gains – though they have still to be realised in many ways.
Heres a different view, and its quite entertaining.. Enjoy.