One advantage of having multiple implementations, is that there is Java the language (like ISO C), and then there are the JVM implementations (like GCC).
Azul and OpenJ9 have intrisics for object layout, ART has intrisics for faster JNI, microJ has intrisics for SNI (a simpler JNI alternative), and so on.
Java only has intrinsics for core jdk APIs and some auto-vectorization (which in my experience are between very hard to impossible to use reliably). A proper Vector API is in the works but that is waiting for Valhalla (value objects).
https://openjdk.org/jeps/460