Wikipedia 10K Redux

Reconstructed by Reagle from Starling archive; see blog post for context.

Virtual_machine

Virtual machines are closely related to Emulators. Both are pieces of computer software designed to reproduce a specific set of computer behaviors and capabilities other than the ones native to the computer on which the software itself is running.

When this is done for interoperability (to allow software written for one machine to run on another), the software is called an Emulator. For example, an Atari emulator program running on an Intel computer might enable the owner of that computer to run game programs intended for the Atari, obviating the need to own more than one kind of machine.

A virutal machine, in contrast, produces behaviors and capabilities of a machine that doesn't necessarily exist as an actual piece of hardware but may only be a detailed specification. For example, the UCSD Pascal virtual machine specification (one of the first) was a description of a specific set of capabilities and behaviors that programmers could use to write programs that would run on any computer running virtual machine software that correctly implemented the specification. A more common modern example is the Java virtual machine specification, which allows diverse computers all to run software written to that specification. The virtual machine software itself must be written separately for each type of computer on which it runs.