But that changed a long time ago. Now, the main bottleneck with Java is memory usage, but 20 years of JITing have turned Java into a language more than fast enough for most tasks.
The gap between Java and [C++,Rust,Obj-C,Zig?,D?] is approximately equivalent to 5-8 years of CPU hardware improvements these days.
Software engineer time is still often the primary cost metric, but Java didn't ever get actually fast - things like constant pointer chasing and poor cache utilization still hurt it significantly in "regular" code. So, too, does the complete lack of compile time optimizations and limited JIT thoroughness & comprehensiveness.
Culture definitely hurts it a lot. It seems like any question involving Java and anything performance related is "you don't, you're stupid, the JIT fixes everything, never measure, never benchmark, premature optimization is the root of all evil which means never, ever attempt to optimize anything ever"
There's pockets of people doing Java + performance, but they are far & away the exception and they are frustratingly insular about what they do & why they do it. And yeah it tends to often go against every bit of guidance from things like Effective Java & similar.
That is indeed the case, but at the same time, even early Java (back when it was still a bytecode interpreter without JIT) was considerably faster than Python is today. Python is kinda slow by design - just look at the descriptor protocol for an example.
Won't beat Rust on most benchmarks, of course.