Unter einer virtuellen Maschine versteht man eine imaginäre Maschine, die durch Software auf einer realen Maschine (Computer) implementiert ist.
Das Prinzip der virtuellen Maschine wird von verschiedenen Programmiersprachen angewendet, um hardwareplattformunabhängigen Programmcode erzeugen und auf den einzelnen Plattformen definiert ausführen zu können. Bekannte virtuelle Maschinen sind die JVM von Java oder die AVM von ActionScript.
Virtuelle Maschinen werden auch von Virtualisierern anbeboten. Bei diesen ist die imaginäre Maschine keine Neuentwicklung sondern die softwaretechnische Nachbildung einer realen Maschine, so dass Code, der für die reale Maschine entwickelt worden ist, in der virtuellen Maschine ausgeführt werden kann. Die Vorteile sind zum Beispiel:
- flexiblere Aufteilung leistungsfähiger Hardware,
- schnelle Softwarebereitstellung,
- mehrere Betriebssysteme pro Hardware möglich,
- bessere Auslastung der Hardware (bis hin zur Überprovisionierung),
- Basis für Cloud-Konzepte,
- Zentralisierung dezentraler Hardwarekonzepte