Java is still a new technology. As such, not everything works the way its designers, developers, and users would like. Further, it's limited in the number of things that can be implemented, simply because it hasn't been around long enough for the people who are working on it to add everything that they want to see in it.
However, for such a young language, Java has generated an unprecedented amount of interest, and is rapidly progressing in its maturity. Problems that do exist are being quickly identified and fixed. As more organizations direct their resources toward Java, the number of problems will continue to decrease, even as functionality, stability, and performance continue to increase.