Java has come a long way since it's 1.0 release. Speed has increased enormously, most bugs are gone, the API has improved. The current main problem is memory usage:
"Now I'm sure many among you will find this viewpoint absurd. Many Java developers will throw these footprint arguments back in your face and say "Hah! I can buy 500MB of RAM for fifty bucks, and have money left over to take my cat to the movies!". The Prevayler guys will do their wild chaotic Wiki dance and tell you everything should be in RAM, that breakthroughs in memory technologies are obsoleteing databases and disks, and that your watch will soon have 2.7 terrabytes of data, so why are you worried about 1GB Java processes?
Sadly, these people don't get it. They think in the small, but most of IT work happens in The Large. Your PC RAM may be $50, but your server ECC Server RAM may be a wee bit more expensive. On your private desktop, do what you'd like - but consider managing 1000 desktops, and cost and power consumption and other concerns can start to rear their heads. Now that you've swallowed that pill, think of 10,000 desktos. On your existing server network, C/C++ code may run comfortably, even with excess capacity to grow your volume by 200% if need be - where as switching to Java may require a multi-million dollar upgrade to get enough machines with enough memory in them to just stay even with the C++ side. In the final analysis, Java solutions are requiring more discreet boxes strictly because of memory issues - and any IT burecrat will tell you in a heartbeat that more boxes == Bad Majumbo."