There are operating machine VM’s and programming language VM’s.
A VM is a software implementation of some real or imaginary machine that executes code in isolation.
The job of the Java VM for example, is to translate bytecode to programs in the instruction set of the underlying hardware of the host machine.
