Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Eine virtuelle Maschine ist ein Modell eines (oft nicht realer Hardware existierenden) Prozessors und der zugehörenden Systemarchitektur. Eine virtuelle ist ein Computerprogramm das einen Prozessor emuliert . Der Aufwand diese Software auf andere CPUs zu übertragen ist verhältnismäßig gering.
Virtuelle Maschinen spielen heute eine bedeutende da Microsoft mit ihrer .NET Architektur dem von Sun mit der Java-Virtuellen-Maschine ( Java VM ) folgt. Das Konzept der virtuellen Maschine bereits Ende der 1960er Jahre angewandt der O-Code von Martin für die Programmiersprache BCPL ist ein frühes Beispiel. Bekannter sind Pascal-P-Code-System (UCSD Pascal) aus den 1970er Jahren und die virtuelle Maschine auf Programme der Programmiersprache Smalltalk ablaufen.
UCSD Pascal und Smalltalk-80 wurden nicht in Maschinencode übersetzt sondern in so genannten Bytecode der dann auf einer virtuellen Maschine wird. Ein Konzept das auch Java übernommen und heute generell mit der Java VM assoziiert wird.
Faktisch ist es aber wegen der bei Java so dass aktuelle Versionen nur Windows und Unix verfügbar sind.
Die JVM ist eine Stapelmaschine (0-Adress-Maschine). sie nutzt einen Stack als Hauptdatenstruktur. Es gibt aber auch virtuelle Maschinen (ein neueres Beispiel ist die Parrot -Implementierung von Perl6).
Vorteile einer virtuellen Maschine:
Plattformunabhängigkeit : Programme für eine virtuelle Maschine laufen allen realen Maschinen für die die virtuelle implementiert ist.
Programme auf einer virtuellen Maschine sind als Programme die speziell für die Zielumgebung wurden da sich immer ein Mehraufwand durch Interpretation oder dynamische Übersetzung zur Laufzeit ( JIT-Compiler ) ergibt. Dieser Nachteil wird durch geeignete Optimierungen (zum dynamische Optimierung ) verringert.