It would be impossible to have one JVM for all operating systems because the JVM relies on operating system calls to provide many of the facilities which
Java programs use. Java programs should run on any operating system but since each one is dramatically different, you need a JVM specific to each operating system. The JVM exposes a consistent interface to Java programs but it has to adapt those services to the actualy operating system underneath. Moreover the CPU instruction sets vary wildly so if nothing else you would have to compile Java to a form specific to each CPU.