EDIT. I also did a funny thing and replaced the CPython C _csv.so extensions with pure Python version _csv.py, from PyPy. It run about 80 (eighty) times slower. It shows what wonders does JIT do (at least to some code).
Lots of modules in the stdlib are written in C.
Either the implementation or the compiler is lacking some optimization.
It's easy to be faster if you do fundamentally less. Not necessarily wrong, depending on your task, but it's not comparable.
With modern JVMs, Java can occasionally actually be faster than native compiled languages due to dynamic optimization at runtime.
In what sense is an articulated object a "conceptual drawback"? It is a richer object model and SMI and friends had the engineering chops to makes it highly performant.
Also depending on which JVM SDK is being used (Oracle Hotspot, Oracle Graal, IBM J9, HP, PTG, JET,...), the quality of escape analysis differs but it all boils down to turning those headered objects into plain structs, if possible stack allocated.