I supported a derivatives trading system written in java that was canned due to performance issues, and where I am now we had java FIX protocol gateways that we've replaced with C++ components, again for performance reasons.
I'm not saying java has performance problems in general, I do understand that for many applications it's a good and performant option, but when you're dealing with sub-millisecond response times it has issues. If anyone is using Java for applications like this, I'd love to know how they get round these issues.