A software simulation of a microprocessor, usually having its own opcodes for machine instructions as well as a simulated address space. It allows software to be generated that is independent of the features of specific hardware. For instance, the virtual address space of a VM can be many times larger than the address space provided by the hardware. In the Java environment, the closed environment of the VM is often called the sandbox.