The JVM is just a piece of software like any other designed to be an interface between the code you write and the computer hardware. While all the JVMs are meant to follow certain rules in their interpretation of the
Java language so as to meet the write once run everywhere idea, certain things are still left up to the jvm designers, such as how and when the garbage collector runs, or in deciding how different threads to share the cpu's time.
Hope that short explanation cleared it up for you.