Die JVM befindet sich im Kern der SpracheJava und definiert den Befehlssatz eines virtuellen Prozessors. Neben normalen Befehle, wie man sie von anderen CPUs her kennt, gibt es Befehle auf höherem Niveau zur Manipulation von Objekten und mehrdimensionaler Felder. |
Die JVM befindet sich im Kern der SpracheJava und definiert den Befehlssatz eines virtuellen Prozessors. |
Die JVM kann auch dazu verwendet werden um direkt in ihr zu programmieren (quasi im Assembler) oder um andere Programmiersprachen in ihr zu implementieren. Siehe WardsWiki:OtherLanguagesForTheJavaVm. |
* The Java Virtual Machine Specification == Implementationen = Die JVM ist zunächst mal nur eine Spezifikation. Es gibt eine Reihe von Implementierungen mit unterschiedlichem Reife- und Bekanntheitsgrad: * Java Runtime Environment von Sun * Java Runtime Environment von IBM * JRockit von Bea * HotSpot-Gruppe bei OpenJDK * WikiPedia:Dalvik_virtual_machine Und es gibt noch einige mehr: * http://java-virtual-machine.net/ * WikiPedia:List_of_Java_virtual_machines Frühere Versionen von Windows hatten ein Java-Derivat von Microsoft: * http://java-virtual-machine.net/download.html * Remove Microsoft Java Virtual Machine and Install Sun Java == 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. |
=== Literatur = |
== Literatur = |
=== Non-Java auf der JVM = |
== Non-Java auf der JVM = |
* http://www.robert-tolksdorf.de/vmlanguages.html, eine lange Liste * WardsWiki:OtherLanguagesForTheJavaVm |
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.