Die JVM befindet sich im Kern der SpracheJava und definiert den Befehlssatz eines virtuellen Prozessors.
Implementationen |
Die JVM ist zunächst mal nur eine Spezifikation. Es gibt eine Reihe von Implementierungen mit unterschiedlichem Reife- und Bekanntheitsgrad:
JVM Interna |
Neben normalen Befehlen, wie man sie von anderen CPUs her kennt, gibt es Befehle auf höherem Niveau zur Manipulation von Objekten und mehrdimensionaler Felder.
Die JVM kann auch dazu verwendet werden um direkt in ihr zu programmieren (quasi im Assembler) oder um andere Programmiersprachen in ihr zu implementieren.
DIe JVM verwendet einen 8-Bit-Befehlssatz. Dies begrenzt die JVM auf maximal 256 mögliche Befehl. Das erzeugt gewisse Probleme in der Orthogonalität des Befehlssatzes. Nicht jeder Befehl steht für jeden Datentyp zur Verfügung.
Ein Bestandteil des JDK ist das Programm javap, das es erlaubt Java-class-Files zu dekompilieren und den JVM Assemblercode auszugeben.
Der freie Java Assembler Jasmin mit dem man unabhängig von Java Programme für die JVM schreiben kann:
Literatur |
Java Virtual Machine, von Jon Meyer & Troy Downing, ISBN 1565921941, O'REILLY 1997
Java Virtual Machine: Sprache, Konzept, Architektur, von Matthias Kalle Dalheimer, ISBN 3930673738, O'REILLY 1997
Non-Java auf der JVM |
JRuby, JPython & Co bekommen Konkurrenz aus dem Java-Lager. SpracheGroovy orientiert sich sehr stark an der JVM und bringt der Java-Community ein wenig von der Flexibilität, die andere Programmiersprachen schon beim Sprachdesign eingeplant haben.