A self-contained operating environment that behaves as if it is a separate computer. For example, Java applets run in a Java virtual machine that has no access to the host operating system. This design has two advantages:
* System Independence: An application will run the same in any VM regardless of the hardware and software underlying the system
* Security: Because the VM has no contact with the operating system, there is little possibility of a program damaging other files or applications. The second advantage, however, has a downside. Because programs running in a VM are separate from the operating system, they cannot take advantage of special operating system features