© Copyright Technische Universität Darmstadt  /  FB Informatik  /  FG Software Technology

Steamloom

This page is maintained by Michael Haupt.

Overview


Introduction

[Top] [Introduction] [Downloads] [People] [Publications]

Steamloom is the first VM implementation ever to natively support dynamic aspects. This support is an inherent part of the implementation, and an API provides an access layer to the AOP functionality offered by the VM.

The principle at work in Steamloom is basically that of dynamically modifying and reinstalling method bytecodes. Thus, there are great similarities to implementations such as RuByCoM that utilise the JVM's HotSwap capabilities. However, Steamloom goes one step further in that it has inherent support (i.e., support not located at application level, in Java source code) for various tasks having to do with aspect management.

The implementation is based on IBM's Jikes Research Virtual Machine. We have extended Jikes with BAT, a bytecode manipulation toolkit that allows for comfortably modifying method bytecodes and querying them for join point shadows. Recompilation of methods is done with full optimisation support: all inlining decisions are maintained upon recompilation.

Performance measurements we have made have shown that the approach - tightly integrating aspect support with the execution layer of a programming language - adopted in Steamloom leads to very good performance while the full flexibility of truly dynamic AOP takes effect. Applications with dynamic aspects run in Steamloom almost as fast as with AspectJ on the Sun standard JVM.

Steamloom as a Language Back-End

Recent development in the AOSD-Europe project has led to Steamloom being targeted by a modified version of the CaesarJ compiler. The integrated version is available from the download section below.

Information

There is a Steamloom mailing list to which you can subscribe. This mailing list is the main source of all kinds of information concerning Steamloom, and also the main forum for discussions. There is also an archive of the mailing list.


Downloads

[Top] [Introduction] [Downloads] [People] [Publications]

An extended version of Steamloom, which can be targeted by a CaesarJ compiler, is available now.

You can download the Steamloom source codes via the link below. The files contain the complete sources of the Jikes RVM and Steamloom.

  • download Steamloom 0.6 (6.5 MB); this is the version from the paper "Efficient Control Flow Quantification" (see below). Note: a few modifications have been performed with respect to the original build configuration in order to work on our Linux installation. Maybe you have to undo these changes:
    • In file rvm/config/i686-pc-linux-gnu the line export JIKES= must refer to the Jikes source code compiler (the Jikes 2.3.1 docu says version 1.18+, but the current version 1.22 does not work for me. version 1.18 does work definitely.)
    • In the file rvm/src/tools/bootImageRunner/RunBootImage.C and rvm/src/tools/bootImageRunner/sys.C the line #include <asm/cache.h> has been commented.
  • download Steamloom with CaesarJ support (9.4 MB, the CaesarJ compiler is included)
  • download Steamloom 0.5 (4.3 MB)

Once you have successfully downloaded the file, uncompress it:

$ tar xjf <filename>
This will create a new folder named steamloom-0.5 or steamloom-aosd in the directory from which you invoked tar.

Steamloom is supported on Linux/x86 only.

Notes

If you want to work with Steamloom or just take a look at it, please subscribe to the mailing list. The Steamloom developers are eager to receive and respond to questions, comments and suggestions!

Steamloom is an alpha release. The VM may crash at times. Please submit bug reports if you think you have discovered one, and please post both success and failure stories to the mailing list.

We are working on an extensive set of documentation. For now, Michael Haupt's doctoral dissertation can be used; its Chapter 3 contains a detailed description of Steamloom's implementation and API.

download the manual for Steamloom 0.5 (PDF)


People

[Top] [Introduction] [Downloads] [People] [Publications]

Christoph Bockisch
The very first version of Steamloom was part of Christoph's diploma thesis. He is still active in the development team.
[Christoph Bockisch's home page] [Email]
Tom Dinkelaker
In his student research project, Tom has extended the Steamloom VM with the BAT framework for easy bytecode modification. In his diploma thesis, he is currently improving Steamloom's dynamic weaving capabilities and implementing advanced dynamic AOP concepts.
[BAT home page]
Sebastian Eifert
Sebastian's diploma thesis was about dynamic weaving. He has improved the design and performance (especially with regard to pointcut evaluation) of the Steamloom dynamic weaver.
Michael Haupt
The AORTA project is part of Michael Haupt's doctoral research concerning AOP-enabling run-time environments. He is the project supervisor.
[Michael Haupt's home page] [Email]
Sebastian Kanthak
In his diploma thesis, Sebastian has implemented several variants of cflow quantification in Steamloom. His evaluation has led to the adoption of VM-integrated counters as the solution of choice. Ongoing work has led to the development of control flow information attached to method activations, i.e., stack frames, which delivers minimal overhead for cflow.
Michael Krebs
As part of his diploma thesis, Michael is extending Steamloom's API to add support for multiple kinds of join points. His work also encompasses the integration of BAT's powerful pointcut framework.
[BAT home page]
Kai Stroh
Kai has implemented support for around advice in Steamloom as part of his diploma thesis.

Publications

[Top] [Introduction] [Downloads] [People] [Publications]

The first version of Steamloom is documented in Christoph Bockisch's diploma thesis (in German). Michael Haupt's doctoral dissertation contains a detailed and more recent description of Steamloom's implementation and API.

[2006] Christoph Bockisch, Mathew Arnold, Tom Dinkelaker, Mira Mezini
Adapting Virtual Machine Techniques for Seamless Aspect Support
ACM Sigplan International Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA) 2006
[OOPSLA-envelopes.pdf] [BibTeX]
[2006] Christoph Bockisch, Sebastian Kanthak, Michael Haupt, Matthew Arnold, Mira Mezini
Efficient Control Flow Quantification
ACM Sigplan International Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA) 2006
[OOPSLA-cflow.pdf] [BibTeX]
[2005] Michael Haupt, Mira Mezini, Christoph Bockisch, Tom Dinkelaker, Michael Eichberg and Michael Krebs
An Execution Layer for Aspect-Oriented Programming Languages
ACM/USENIX Conference on Virtual Execution Environments (VEE'05)

[vee05.pdf] [BibTeX]
[2004] Michael Haupt and Mira Mezini
Virtual Machine Support for Aspects with Advice Instance Tables.
First French Workshop on Aspect-Oriented Programming, Paris, France, Sep. 14th, 2004.
[JFDLPA04.pdf]
[2004] Christoph Bockisch, Michael Haupt, Mira Mezini and Klaus Ostermann
Virtual Machine Support for Dynamic Join Points
in Proceedings of International Conference on Aspect-Oriented Software Development (AOSD'04)
[Steamloom.pdf] [BibTeX]
[2003] Michael Haupt, Christoph Bockisch, Mira Mezini and Klaus Ostermann
Towards Aspect-Aware Execution Models
Technical Report TUD-ST-2003-01
[ObjectModel-TR.pdf] [BibTeX]