Antwort

9

Einige von ihnen Bytecode erzeugen. Einige haben ein Laufzeitsystem, das als Interpreter ausgeführt wird. Einige haben eine Mischung aus beidem. Die JVM ist schließlich eine CPU (die gerade nicht wirklich existiert) mit einer bestimmten Architektur und einer bestimmten Menge von Anweisungen. Sie zielen mit Ihrem Code-Generator genau so ab, wie Sie Objektcode für eine beliebige CPU generieren. (Nun, um fair zu sein, sein Befehlssatz ist sehr stark auf Javas Fähigkeiten und Bedürfnisse ausgerichtet, aber er ist immer noch allgemein genug, um andere Modelle zu unterstützen. Kaum.)

Es gibt eine Vielzahl von Möglichkeiten, JVM-Bytecode zu generieren. Sie können Ihre eigenen .class-Dateigenerierungsroutinen manuell abwickeln (da das Format und der Befehlssatz well-specified ist). Sie können eine Reihe von Bibliotheken wie ASM oder BCEL verwenden (was der gebräuchlichste Ansatz ist, denke ich). Oder Sie könnten Java-Code als Ihre Zwischenrepräsentation generieren und diese dann mit den üblichen Java-Tools kompilieren.

Sie führen den Code auf die gleiche Weise aus, wie Sie Java-kompilierten Code ausführen: Die Java-Laufzeit lädt die generierten .class-Dateien und startet die Ausführung. Dies ist alles Teil der specification auch.

Verwandte Themen