1. Emulation, in a software context, is the use of an application program or device to imitate the behavior of another program or device.
Common uses of emulation include:
- Running an operating system on a hardware platform for which it was not originally engineered.
- Running arcade or console-based games upon desktop computers.
- Running legacy applications on devices other than the ones for which they were developed.
- Running application programs on different operating systems other than those for which they were originally written.
A common example of that last type of emulation is running Windows applications on Linux computers. Virtual PC is another example of an emulator that allows Macs to run Windows XP, though the addition of Boot Camp to next-generation Intel-based Macs has removed the need for that application in the Macintosh environment in the future.
2. In server virtualization, emulation is a synonym for virtual environment. A virtual environment can also be referred to as a partition, guest, instance or container.
3. In hardware, emulation is the use of hardware to imitate the function of another hardware device for the purpose of connecting devices to one another or connecting to a mainframe computer.
Hardware emulation can be useful when a hardware device or peripheral like a printer, scanner or digital camera becomes obsolete. A printer emulator, for instance, lies within the printer's ROM. In many organizations, legacy applications persist that must still communicate with the device. For this purpose, terminal emulation allows a computer terminal to appear and function like another, usually older type of terminal so that a user can access legacy programs.
While in theory any application may be rewritten to work on another device or architecture, in practice such reverse engineering is quite difficult to accomplish successfully, resulting in significant performance penalties or crashes due to buggy programming.