Because that way Java can be implemented for the JVM which has a defined architecture and instruction set. Different machines can have their own JVM on which Java programs can be executed without having to worry about machine on which JVM is running. In addition many optimizations are also added in JVM.