JVM stands for Java Virtual Machine. It's an abstract computer or virtual computer which runs the compiled java programs. Actually JVM is a software implementation which stands on the top of the real hardware platform and operating system. It provides abstraction between the compiled java program and the hardware and operating system.

Java virtual machine process

So the compiled program does not have to worry about what hardware and operating system he has to run in, it's all handled by the JVM and thus attaining portability. All Java programs are compiled in to bytecodes. JVM can only understand and execute Java byte codes. You can visualize Java bytecodes as machine language for JVM. Java compiler takes the .java files and compiles it to a "bytecode" file with .class file extension. Compiler generates one class file for one source file.

Just Checkout the JVM architecture for some more information.