Imo it's one of Javas strengths. If you need to, you can write ugly but ridiculously fast code. It does end up looking more like writing C than java though, but obviously your whole codebase doesn't need to look like that and it's portable.
You could of course FFI into e.g. C for those parts, but that is usually harder to maintain than a few well optimized java classes.
It's a quite common myth developers believe about performance. Hotspots do happen sometimes, but once they have been optimized you quicky end up with a flat profile and an "everything is slow" problem. And in some types of apps, the majority of code is performance critical.
If the majority of code is performance critical, the tradeoffs are of course different.
Hopefully Foreign Function & Memory API [0] makes FFI so much easier that we get to drop down to C without much fuss.