TU Darmstadt / ULB / TUprints

Virtual Machine Support for Aspect-Oriented Programming Languages

Haupt, Michael (2006)
Virtual Machine Support for Aspect-Oriented Programming Languages.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
Dissertation - PDF
diss.pdf
Copyright Information: In Copyright.

Download (2MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Virtual Machine Support for Aspect-Oriented Programming Languages
Language: English
Referees: D'Hondt, Prof. Dr. Theo
Advisors: Mezini, Prof. Dr. Mira
Date: 21 June 2006
Place of Publication: Darmstadt
Date of oral examination: 16 December 2005
Abstract:

Among implementations of the aspect-oriented programming paradigm, some approaches have been developed in which aspect weaving does not necessarily occur at compile-time, but at run-time of an application. Weaving at run-time has the advantage that, e.g., in the context of J2EE applications, objects can be dynamically and transparently decorated with certain services that are important in J2EE applications. Moreover, dynamic weaving makes more allowance for the inherently dynamic nature of pointcuts than static weaving - pointcuts quantify over the execution of an application. The different approaches to dynamic weaving however lack the kind of support for AOP language mechanisms that is common for mechanisms of other paradigms: direct support from the run-time environment. For example, virtual machines for object-oriented programming languages offer direct support for resolving virtual methods via method tables. Such support is at present not available for aspect-oriented mechanisms. Instead, the implementation of a run-time environment for AOP languages is simulated at application level. This is where this work applies. In the course of this work, Steamloom was implemented, a virtual machine with explicit support for AOP mechanisms. Steamloom is an extension of an existing virtual machine for the Java programming language. Steamloom provides a unified representation of Java bytecodes that is accessed by both the virtual machine and the AOP functionality. The latter utilises the bytecode representation's capabilities to evaluate pointcuts and for weaving. Moreover, Steamloom supports dynamic weaving by utilising the just-in-time compilers of the virtual machine for dynamically recompiling methods affected by weaving. Apart from that, Steamloom has integrated support for some other AOP mechanisms, of which an efficient evaluation of control flow-dependent residues is especially important. Steamloom is conceived as a platform on whose basis AOP languages can be implemented experimentally. The pointcut model and weaver are extensible, which allows for the implementation of new elements. This extensibility was used in this work to implement and evaluate three different strategies for control flow-dependent pointcuts. To measure the value of Steamloom, a comprehensive analysis of different aspects of performance and efficiency of a representative collection of AOP implementations was conducted. It is based on a presentation of implementation details of these AOP implementations that has been achieved on the basis of a unified presentation framework.

Alternative Abstract:
Alternative AbstractLanguage

Unter den verschiedenen Implementierungen des Paradigmas der aspektorientierten Programmierung haben sich einige Ansätze entwickelt, in welchen das Weben nicht notwendig zur Übersetzungszeit, sondern zur Laufzeit einer Anwendung geschieht. Ein Weben zur Laufzeit bietet den Vorteil, dass, beispielsweise im Kontext von J2EE-Anwendungen, Objekte dynamisch und transparent mit bestimmten Diensten ausgestattet werden können, die im Rahmen einer J2EE-Umgebung von großer Wichtigkeit sind. Weiterhin trägt dynamisches Weben der inhärent dynamischen Natur von pointcuts - sie quantifizieren über die Ausführung einer Anwendung - eher Rechnung als ein statischer Ansatz. Die unterschiedlichen bestehenden Ansätze zum dynamischen Weben lassen jedoch die Art von Unterstützung for AOP-Sprachmechanismen vermissen, die für Sprachmechanismen anderer Paradigmen gang und gäbe ist: eine direkte Unterstützung durch die Laufzeitumgebung. Beispielsweise bieten virtuelle Maschinen für objektorientierte Programmiersprachen direkte Unterstützung für die Auflösung virtueller Methoden mittels Methodentabellen. Eine solche Unterstützung ist für aspektorientierte Mechanismen derzeit nicht verfügbar. Statt dessen wird auf Anwendungsebene die Implementierung einer Laufzeitumgebung für AOP-Sprachen simuliert. An dieser Stelle setzt die vorliegende Arbeit an. Im Rahmen der Arbeit wurde Steamloom implementiert, eine virtuelle Maschine mit expliziter Unterstützung für AOP-Mechanismen. Steamloom ist eine Erweiterung einer bestehenden virtuellen Maschine für die Programmiersprache Java. Steamloom bietet eine einheitliche Darstellungsschicht von Java-Bytecodes, auf die sowohl die virtuelle Maschine selbst als auch die AOP-Funktionalität zugreifen. Letztere nutzt die Möglichkeiten der Bytecode-Darstellung sowohl zur Auswertung von pointcuts als auch zum Weben. Desweiteren unterstützt Steamloom dynamisches Weben, indem die in der virtuellen Maschine vorhandenen Laufzeitübersetzer für Java-Bytecodes dazu benutzt werden, von Webevorgängen betroffene Methoden dynamisch neu zu übersetzen. Darüber hinaus bietet Steamloom integrierte Unterstützung für einige andere Mechanismen von AOP-Sprachen an, von denen eine effiziente Auswertung bestimmter kontrollflussabhängiger residues besonders hervorzuheben ist. Steamloom ist als Plattform konzipiert, auf deren Basis AOP-Sprachen experimentell implementiert werden können. Sowohl das pointcut-Modell als auch der Weber sind erweiterbar, was die Implementierung neuer Elemente erlaubt. Diese Erweiterbarkeit wurde im Rahmen dieser Arbeit genutzt, um drei verschiedene Ansätze für kontrollflussabhängige pointcuts zu implementieren und experimentell zu evaluieren. Um den Wert von Steamloom zu ermessen, wurde eine umfassende Analyse verschiedenster Aspekte der Geschwindigkeit und Effizienz einer repräsentativen Menge bestehender AOP-Implementierungen durchgeführt. Sie basiert auf einer Beschreibung von Implementierungsdetails dieser Implementierungen, die auf der Basis eines einheitlichen Rahmens durchgeführt wurde.

German
URN: urn:nbn:de:tuda-tuprints-7061
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
Date Deposited: 17 Oct 2008 09:22
Last Modified: 07 Dec 2012 11:51
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/706
PPN:
Export:
Actions (login required)
View Item View Item