Java Virtual Machine:
All language compilers translate source code into machine code for a specific computer. Java compiler also does the same thing.
Java compiler produces an intermediate code known as bytecode for a machine that does not exist. This machine is called java virtual machine and it exists only inside the computer memory. It is a simulated computer within the computer and does all major functions of a real computer .
The virtual machine code is not machine specific. The machine specific code (known as machine code ) is generated by the Java interpreter by acting as a intermediary between the virtual machine and the real machine . The interpreter is different for different machine .
The java object framework ( Java API ) acts as intermediary between the user program and the virtual machine which in turns act as the intermediary between the operating system and the java object framework.