Go
Jan 31, 1997
Michael Golm
Abstract: Adaptability to special requirements of applications is a crucial concern of modern operating and run-time system architectures. Reflection and meta architectures are means to achieve this adaptability. This thesis describes an extension of the Java virtual machine that allows flexible and selective attachment of reflective properties to objects. The extended machine - MetaJava - supports structural and behavioral reflection. Its structural reflection capabilities allow the meta-level system to gather information about the base-level program structure. Behavioral reflection transforms behavior into events. Relevant base-level behavior, such as method invocations, instance variable accesses, and object locking, is reified by the delivery of events to a metaobject. This thesis explains all changes necessary to the Java virtual machine to support run-time reflection with a minimal penalty in run-time performance. Run-time code generation is used to avoid a performance degradation of non-reflective parts of the system. The MetaJava architecture does not limit meta-level applications to special domains, such as distributed or concurrent computing, but can also be used to implement different security policies, just-in-time compilation, or location control of mobile objects. A remote method invocation mechanism, an object replication system and a just-in-time compiler are described to demonstrate how the Java environment can be enhanced using our meta architecture.
Zusammenfassung: Adaptierbarkeit an spezielle Anforderungen von Anwendungen ist ein wichtiges Anliegen moderner Betriebssystemarchitekturen und Laufzeitumgebungen. Reflexion und Metaarchitekturen sind Mittel, um diese Adaptierbarkeit zu erreichen. Diese Diplomarbeit beschreibt eine Erweiterung der Virtuellen Java Maschine, die flexibles und selektives Binden reflexiver Eigenschaften an Objekte ermöglicht. Die erweiterte Maschine - MetaJava - unterstützt strukturelle Reflexion und Reflexion über das Verhalten von Berechnungen. Strukturelle Reflexion erlaubt dem System auf Metaebene, Informationen über die Struktur des Programms auf der Basisebene zu erlangen. Verhaltensreflexion geschieht durch die Umwandlung des Programmverhaltens in Ereignisse. Relevantes Basisebenenverhalten, wie zum Beispiel Methodenaufrufe, Zugriff auf Instanzvariablen und das Sperren und Freigeben von Objekten, wird durch das Ausliefern von Ereignissen an ein Metaobjekt reifiziert. Die Diplomarbeit beschreibt alle Änderungen an der JVM, die nötig sind, um Reflexion zur Laufzeit mit einer minimalen Beeinträchtigung der Systemleistung zu erreichen. Kodegenerierung zur Laufzeit wird benutzt, um einen Leistungsabfall von nicht-reflexiven Teilen der Maschine zu vermeiden. Die MetaJava Architektur schränkt Anwendungen der Metaebene nicht auf spezielle Gebiete ein, wie verteiltes oder nebenläufiges Rechnen, sondern kann auch benutzt werden, um verschiedene Sicherheitsstrategien, Just-in-time Compiler oder ein System zur Steuerung des Ortes mobiler Objekte zu implementieren. Um zu demonstrieren, welche Verbesserungen MetaJava gegenüber Java bietet, werden ein Mechanismus zum Aufrufen entfernter Methoden, ein Objekt-Replikationssystem und ein Just-in-time Compiler beschrieben.