For a nice technical analysis of why this is, JWZ has a great page on why java sucks.
The suck goes beyond the technical, however, into a realm where few dare to venture: marketing. Sun's lies and Anti-FUD have given the language a popularity it never should have enjoyed; and done irreperable damage to a generation of programmers who otherwise probably would have learned to appreciate real design methodologies rather than the faux-object-orientation religion that Java encourages. Myself included.
Everything at Sun is an "enterprise solution" or a "platform technology". I suppose that this makes it easier with the executives there to live with themselves; honest marketing on java.sun.com's webpage would result in lots of announcements like "Half-finished incredibly buggy proof-of-concept implementation of a marginally useful e-mail protocol announced!" and "Slower, buggier network infrastructure implemented at [name of random fortune 1000 company]: with Java!".
While I can appreciate the fact that it soothes the pain of making sucky programs (I refuse to term anything they've produced a "technology") for Sun's employees, this sort of macho posturing does tangible damage to the Java language and platform. First of all, it makes it impossible for Sun to ever admit that they're wrong. Java is unstable, it is slow, and it's bloated beyond any reasonable necessity for features. There are operating systems that fit on a floppy disk that provide more useful functionality than the Java standard library, which effectively takes up 10M. Since Sun is sensitive to people on slow links, pay links, and modems, of course, this 10M is compressed into a neat 30M package, complete with every demo ever written for the platform, all the documentation, sources for the platform (which you are contractually obligated not to look at)... this isn't technically a showstopping bug, so criticism about this falls on deaf ears. The things that are showstoppers are largely swept under the rug, and while the Bug Parade is amusing, it doesn't get bugs fixed as fast as open-source, or even a decent QA process.
Aside from the basic JVM's inadequacies, all of the APIs that I've ever used from Sun leak memory or somewhere or another. A detailed description of each leak is beyond the scope of this little rant (just go grab their source and read it. The leaks are obvious and plentiful), but I've spent more time working around bugs in java than writing code in it.
Thanks to Sun's licensing, it is not only not possible to fix any of the HUGE bugs that Sun leaves in the JVM and contribute those fixes back in any reasonable timeframe, it's also impossible to fix it yourself and distribute a modified JVM or class library.