Steamloom
This page is maintained by Michael Haupt.
Overview
- Introduction: short overview of Steamloom
- Downloads related to Steamloom
- People involved in Steamloom
- Publications related to Steamloom
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-gnuthe lineexport 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.Candrvm/src/tools/bootImageRunner/sys.Cthe line#include <asm/cache.h>has been commented.
- In file
- 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] |
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]
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'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.
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]
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.
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 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.
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]
Efficient Control Flow Quantification
ACM Sigplan International Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA) 2006
[OOPSLA-cflow.pdf] [BibTeX]
An Execution Layer for Aspect-Oriented Programming Languages
ACM/USENIX Conference on Virtual Execution Environments (VEE'05)
[vee05.pdf] [BibTeX]
Virtual Machine Support for Aspects with Advice Instance Tables.
First French Workshop on Aspect-Oriented Programming, Paris, France, Sep. 14th, 2004.
[JFDLPA04.pdf]
Virtual Machine Support for Dynamic Join Points
in Proceedings of International Conference on Aspect-Oriented Software Development (AOSD'04)
[Steamloom.pdf] [BibTeX]
Towards Aspect-Aware Execution Models
Technical Report TUD-ST-2003-01
[ObjectModel-TR.pdf] [BibTeX]

