Zum Inhalt springen

Java Virtual Machine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. Juli 2003 um 21:11 Uhr durch Strunker (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Die Java Virtual Machine (abgekürzt 'Java VM' oder 'JVM') ist eine Laufzeitumgebung und virtuelle Maschine für Software. Die Java Virtual Maschine führt den so genannten Java-Bytecode aus.

Bytecode entsteht durch Compilierung von Programmen, die in aller Regel in der Programmiersprache Java verfasst wurden. Es ist aber sowohl theoretisch wie praktisch möglich, diesen Bytecode auch aus anderen Programmiersprachen heraus oder direkt mit geeigneten Assemblern zu erzeugen. Umgekehrt ist es auch möglich, beim Kompilieren statt Bytecode direkt ausführbare Programme für die jeweilige Architektur zu erzeugen.

Der Sinn der Java Virtual Machine und des Bytecodes ist es, plattformunabhängige Programme zu ermöglichen. Die JVM dient dabei als Schnittstelle zur Maschine und zum Betriebssystem. Nachteilig dabei ist, dass zur Ausführung des Bytecodes die JVM benötigt wird, die aber für die meisten Plattformen verfügbar ist, und dass Programme, die in dieser Form vorliegen, oft langsamer ausgeführt werden und mehr Speicher verbrauchen als nativ für die Plattform kompilierte Programme.

Der große Vorteil einer Virtual Machine ist aber neben der Plattformunabhängigkeit der Gewinn an Sicherheit. Ein VM überwacht zur Laufzeit die Ausführung des Programms, verhindert also z.B. dass ein Programm in fremde Speicherbereiche oder über Arraygrenzen hinweg liest oder schreibt. Somit werden die gefürchteten Pufferüberläufe verhindert, die vor allem bei den in C oder C++ geschriebenen Programmen vorkommen und von Angreifern dazu benutzt werden können, fremden Code auf einem System auszuführen und es somit anzugreifen und unter Kontrolle zu bringen.

Aus Performancegründen setzen die meisten Java VM's so genannte JIT-Compiler (JITC) ein, die unmittelbar beim Laufen des Programms den Bytecode "Just In Time" in Maschinencode übersetzen. Eine Weiterentwicklung dieses Ansatzes ist der von Sun entwickelte Hotspot. Diese Entwicklungen beheben weitgehend den Geschwindigkeitsnachteil der JVM, der hohe Speicherverbrauch bleibt jedoch bestehen. Außerdem gibt es designbedingt einige Einbußen, vor allen Dingen durch die Garbage Collection.

Java-Maschinen stehen für alle gängigen Betriebsysteme zur Verfügung (z.B. Linux, Mac, Palm-OS, Solaris, Windows, usw.).

Die Java VM von Sun ist Teil des JREs (Java-Runtime-Environment).