Informatisches Kolloquium Sommersemester 2008

Montag, 23. Juni 2008

Dr. Bernd Mathiske
Sun-Labs, Menlo Park, Californien, USA

Die virtuelle Maschine “Maxine”

Die in Java geschriebene Virtuelle Maschine (VM) Maxine ist für Fast-Prototyping im Bereich der Laufzeitsystementwicklung konzipiert und stellt einen radikalen Neuentwurf dar, der in die neuste JDK-Software von Sun integriert ist. Sie macht die für Anwendungsprogrammierer bekannten Produktivitätsvorteile der Java-Platform und -Entwicklungsumgebungen auch für Systemprogrammierungsprojekte verfügbar. VM-Entwickler können so die Maxine-Code-Basis in die IDE ihrer Wahl (z.B. NetBeans, Eclipse, IntelliJ) laden und brauchen sich z.B. über Makefiles, Ant-Files und Präprozessoren weitestgehend keine Gedanken mehr zu machen.

Das Maxine-Design zielt auf produktive Weiterentwicklung, Portabilität, Wartbarkeit, Konfigurierbarkeit und Flexibilität ab. Eine besonders strikte Nutzung der Metazirkularität vermeidet viele der Verstrickungen, die konventionelle VM-Entwicklung so kompliziert und schwerfällig machen. Maxine enthält nur wenige Zeilen handgeschriebenen Assembler-Codes und keine Manipulationen compiler-spezifischer Zwischenrepräsentationen, es sei denn zum Zwecke primärer Code-Generierung. Zudem werden plattformabhängige Funktionalitäten wie Methodensynchronisierung, Ausnahmebehandlung, JNI-Aufrufe und reflektive Aufrufe durch Bytecode-Generierung portabel gestaltet. Folgende Features sind als alternative Implementierungen von Java-Schnittstellen konfigurierbar: optimierender Compiler, Just-In-Time (JIT) Compiler, dynamische Re-Compilations-Strategie, Garbage-Collector, Speicherzugriffsbarrieren, Objektreferenzrepräsentation, Objekt-Layout, Thread-Synchronisierung (Objekt-Monitor Implementierung), Safe-point-Mechanismus und Startsequenz.

Maxine repräsentiert alle internen Datenstrukturen einschließlich Klassen und Maschinen-Code-Fragmente als Java-Objekte. Unter anderem vereinfacht dies die Konstruktion des Maxine-Inspectors, eines innovativen visuellen Programmanalysewerkzeugs, das Objekt-Browsing (inspiriert durch Smalltalk) nahtlos mit Low-Level-Debugging (inspiriert durch dbx/gdb) verbindet. Diese Kombination erweist sich als wegweisend für das Debugging einer metazirkularen VM, da hier im Gegensatz zur Java-Anwendungsprogrammierung die Korrektheit der zugrunde liegenden VM nicht als gegeben angenommen werden kann. Erschwerend kommt hinzu, dass der VM-Code statisch bereits optimiert ist und auch noch während der Laufzeit weiter dynamisch optimiert wird, gemischt mit der jeweiligen Anwendung.

Zurzeit wird eine erste Prä-Alpha-Version des Maxine-Systems als Open Source Code bereitgestellt. Diese Maxine VM steht für Solaris und eine Xen-Variante mit SPARC?- und AMD64-Befehlssätzen zur Verfügung und wird als nächstes auf Linux portiert. Eine Teilschicht der Maxine-Code-Basis - das Project Maxwell Assembler System - ist bereits seit Mitte 2006 per java.net erhältlich.

Kontakt

Prof. Dr. Winfried Lamersdorf
Telefon 2421