AspectJ and Eclipse Plugin Technology Combined


Publications:
  • Extended abstract for OOPSLA 2004 demo: AJEER: An AspectJ-enabled Eclipse Runtime (pdf)
  • Extended abstract für OOPSLA 2004 poster: AJEER: An AspectJ-enabled Eclipse Runtime (pdf)
  • Extended abstract for OOPSLA 2003 demo: Visualizing and AspectJ-enabling Eclipse Plugins using Bytecode Instrumentation (pdf)
  • Extended abstract für OOPSLA 2003 poster: An AspectJ-enabled Eclipse Core Runtime (pdf)

Upcoming Events:
    --

Past Events:

Useful links:

Contact me at:
lippert@acm.org

AJEER: An AspectJ-enabled Eclipse Runtime

The AspectJ-enabled Eclipse Runtime is an addition to the Eclipse plugin runtime that allows you to contribute aspects to your plugin-based systems. With the AspectJ-enabled runtime you can use AspectJ and the Eclipse runtime in combination to build applications. Basically it allows you to modularize concerns via the full AspectJ language. The aspects are even allowed to modularize concerns that crosscut several plugins without recompiling the complete system with AspectJ. You can develop your plugin that contains the aspect as a separate unit. The runtime will take care of weaving the aspect into the complete system, if necessary, at class-loading time (via load-time weaving).

August 27, 2005

AJEER on SourceForge

The implementation of AJEER has moved from my private notebook to a public available sourceforge project. You can find it here:
There is also a development build online that works with Eclipse 3.1 and AJDT 1.3 (the current dev build of it) and includes the weaving code from AspectJ 1.2.0M3.

If you would like to contribute to the AJEER project or if you would like to become a member of the project feel free to send me an email. I am happy to get you involved.
March 3, 2005

EclipseCon 2005 Poster on AJEER Online

The PDF of the AJEER poster I presented today at EclipseCon is now online. In addition to that you can drop me an email if you would like to get a message when a new version of AJEER comes out.
March 2, 2005

AJEER at AOSD 2005

Unfortunately I will not be at AOSD this year. Nevertheless you can see AJEER in action at the conference. There are two events where AJEER will be part of:
  • Talk: Weaving a Social Fabric into Existing Software
    Li-Te Cheng, John Patterson, Steven Rohall, Susanne Hupfer, and Steven Ross, IBM Research
    Thursday, March 17, 2005, 16:00-17:00, Session 5: Aspects in User-centric Processes
  • Demo D8: Aspects of Rich Accessibility Experiences
    Alison Lee, T.V. Raman, IBM TJ Watson Research Center
    Wednesday, March 16, 2005, 14:00 - 16:00, Demos 2
    Thursday, March 17, 2005, 11:00 - 12:30, Demos 4
February 6, 2005

Join the AJEER Poster at EclipseCon 2005

EclipseCon 2005 will present a poster on AJEER. Come and join the poster session and get a live demo, if you want.
September 26, 2004

Third Release Candidate of AJEER Available For Downlaod

After a period of silence I put together the third release of the AspectJ-Enabled Eclipse Runtime. It works now fine with the 3.0.1 release of Eclipse and fixes a number of bugs I found due to the help of Steven Rohall and Sabine Hauert. Thanks again for their help and feedback.
In contrast to earlier versions I do not make this version available via an update site since AJEER will be mostly used as an extension to the target environment. You can just download the zip file and unpack it into your eclipse directory of the target enviroment you use for plugin development.

More Information

You will find a readme.html in the plugin org.aspectj.weavingruntime. It provides more information on how to use the weaving runtime.

Other Improvements

In addition to that I improved the cache of AJEER slightly. It now caches woven classes as well as information about unchanged classes. This improves startup time with an enabled cache because AJEER does not need to try to weave those classes that were unchanged last time.

Download

The implementation is open-source under the CPL 1.0. http://www.eclipse.org/legal/cpl-v10.html. The RC3 of the AspectJ-enabled Eclipse Runtime works as a set of separate plugins.
  • AJEER Release Candidate 3 for Eclipse 3.0.1: zip
Important note: The dynamic handling of aspects being deployed and undeployed at runtime is not yet available as part of the release candidate version. I am working on it.

Help and Feedback: If you have any problems with the weaving runtime please do not hesitate to contact me via email lippert@acm.org. I am also quite happy to hear about your experiences and ideas for improvement.
August 10, 2004

Join the Sessions at OOPSLA 2004

This years OOPSLA will include two sessions about AJEER, the AspectJ-enabled Eclipse Runtime.
Join them to see the latest news on the weaving runtime!!!
Both sessions will present new features of the weaving runtime, especially the combination with the OSGi-based runtime of Eclipse 3.0. In addition to the preview that I showed at this years AOSD conference the audience will see dynamic aspect-promoting plugins.
In addition to that I am pretty happy to have some more examples of the runtime to present, including an IBM research project called Zipper.
May 23, 2004

RC2 of AspectJ-enabled Eclipse Runtime available for 3.0m9

The version of the AspectJ-enabled Eclipse Runtime that I demonstrated at AOSD 2004 is now available for download. It is not yet a final release since Eclipse itself is not in a release state yet for version 3.0. Nevertheless the AspectJ-enabled Eclipse Runtime can be tried out with the brandnew milestone 9 of Eclipse 3.0.

Download

The implementation is open-source under the CPL 1.0. http://www.eclipse.org/legal/cpl-v10.html. The RC2 of the AspectJ-enabled Eclipse Runtime now works as a set of separate plugins that can be installed completely via the update site. You do not need to change standard eclipse plugins any longer.
  • update site: http://www.martinlippert.com/eclipse-aspectj-runtime/update30/
  • as a deployable zip file including source code: zip

More Information

You will find a welcome page after installation as well as a readme.html inside the plugin directory that will provide more information on how to run the weaving runtime and how to contribute aspect plugins. View the readme online.

Important note: The dynamic handling of aspects being deployed and undeployed at runtime is not yet available as part of the release candidate version. I am working on it.

Help and Feedback: If you have any problems with the weaving runtime please do not hesitate to contact me via email lippert@acm.org. I am also quite happy to hear about your experiences and ideas for improvement.
March 28, 2004

Upcoming version of the AspectJ-enabled Eclipse Runtime

The version of the AspectJ-enabled Eclipse Runtime that I demonstrated at AOSD 2004 is not yet available for download. I am working on it to improve stability, performance and footprint. I hope to get it out soon. The correct handling of dynamically installed and uninstalled plugins (aspects) will not be part of this version. If you are interested in it, just send me an email.
March 28, 2004

AOSD 2004 is over

The 3rd conference on aspect-oriented software development is over. The conference, held at the University of Lancaster, brought together over 200 researchers and practitioneers of aspect-oriented programming and aspect-oriented software development.

A highlight of the conference was the keynote by IBM Senior Vice President Dr. Daniel Sabbah. He talked about the activities on AOP at IBM and said that AOP is of crucial interest for IBM. He said that AOP will play an important role when IBM will face the next challenges of software engineering in the future (see more at c.net news).

Also very interesting was the keynote by Jonas Boner from AspectWerkz. He presented the challenges they have faced when implementing the AspectWerkz system and described what the next steps will be. He especially highlighted the advanced VM support for hot code replacement they will put into the next version of the JRockitVM at Bea. This would make runtime weaving a lot easier and could also be interesting to my implementation of an AspectJ-enabled Eclipse runtime that will feature dynamic plugins (and therefore runtime deployment and undeployment of aspects) in the next version. The other thing that was interesting in his talk was the idea to have a bytecode compatibility between AspectJ and AspectWerkz. This would allow AspectJ aspects to be used in the runtime environment of the AspectWerkz system. Very cool idea.

Next years AOSD conference will be in Chicago, Illinois, USA.
March 16, 2004

Join the sessions at AOSD 2004 in Lancaster

As part of the conference program I will give two demos of the AspectJ-enabled Eclipse runtime. This is the first time the new implementation for the OSGi-based runtime of Eclipse 3.0 will be presented. In addition I will give a short overview of the load-time weaving runtime at the Eclipse BoF session on Monday evening. Join!!!
November 16, 2003

Example available for the AspectJ-enabled Eclipse Core Runtime

The example contains a simple aspect to demonstrate the basic capabilities of the AspectJ-enabled Eclipse Core Runtime. The plugin project contains a simple aspect that loggs some method calls inside the JDT core classes.
Import the project into your Eclipse workspace that should run on top of the modified runtime and should have the AJDT environment 1.1.4 installed. Start a runtime workbench including this plugin and create a new Java project within the runtime workbench. Some method calls should be logged to the console.
  • The simple logging example for download (zip)
November 10, 2003

Update for Eclipse 2.1.2

The modified runtime version for Eclipse 2.1 is now updated to Eclipse 2.1.2. It is tested against the original Eclipse runtime test suite.
  • modified runtime for Eclipse 2.1.2 (zip)
October 26-30, 2003

Demo and poster presentation at OOPSLA 2003

I gave a demonstration at OOPSLA 2003 in Anaheim together with Chris Laffra. He presented an impressing visualization plugin that allows you to observe Eclipse while it is running. I demonstrated the AspectJ-enabled Eclipse runtime at the demo session as well as with a poster.
October 20, 2003

First prototype implementation available for download

This is a prototype implementation of an AspectJ-enabled Eclipse runtime. The runtime features load-time weaving of AspectJ aspects to allow them to be modularized within plugins without limiting their ability to define cross-plugin pointcuts.
The idea for this runtime is based on the fact that AspectJ can be used to develop general applications in Java. On the other side the Eclipse runtime can also be used to build general applications on top of plugins. But what happens if you would like to use both worlds?

An AspectJ-enabled Eclipse Runtime

The basic idea behind this implementation is to let each single plugin in an Eclipse platform based application define and promote aspects that could affect the code of other plugins. This allows aspects to define cross-plugin pointcuts. Then load-time weaving is used to weave those aspects at class- loading time into the system. This allows each plugin to be developed and compiled separately - following the general idea behind plugins in the Eclipse world.

Download

The implementation is open-source under the CPL 1.0. http://www.eclipse.org/legal/cpl-v10.html
  • modified runtime for Eclipse 2.1.1 (zip)
  • modified runtime for Eclipse 3.0M4 (zip)
  • runtime weaving plugin 1.0 (zip) (also available via an update site:
    http://www.martinlippert.com/eclipse-aspectj-runtime/update)

Installation

To install the aspectj-enabled runtime you need to download the modified runtime for your Eclipse version (currently 2.1.1 and 3.0M4 supported) and unzip the file into the plugin directory of your Eclipse installation. This changes the plugins org.eclipse.core.boot and org.eclipse.core.runtime.
Caution: This modifies your Eclipse installation. If you want to remove the modified runtime you have to delete the boot and runtime plugin from your installation and unzip the original Eclipse distribution again.
Then you can download the dynamic weaving plugin and unzip it into the plugin directory. Alternatively you can also use the update site: http://www.martinlippert.com/eclipse-aspectj-runtime/update.
Start your modified Eclipse again. It should work the same way as before.

Example

Will be provided shortly.

Current state of the implementation and future ideas

The current implementation includes the basic mechanism. The weaving is based on the AspectJ 1.1.1 code.
Ideas for further improvements:
  • caching for woven bytecodes: The woven bytecode of the loaded classes could be cached using a separated directory or jar file. As long as the aspect configuration for the system is not changed, the cached bytecodes could be used instead of weaving all classes at every system startup.
  • equinox runtime support: The load-time weaving runtime could be portet to the equinox eclipse runtime that features dynamic plugin handling. In this case additional questions appear how to handle unloaded plugins with aspects or dynamically installed plugins that promote aspects.
  • sealing for plugins: Plugins could have an additional tag that signals that their code should not be changed by any aspect.
  • debugging support: It is difficult to debug plugins with the Eclipse IDE that are affected by aspects from other plugins. While the general AJDT support allows the basic debugging of woven classes including the aspects, load-time woven classes should behave similar within the debugger.
  • weaving information: The current implementation uses a slightly modified version of the weaving code of AspectJ 1.1.1. The information which aspect is woven into which class is extracted using additional messages. This should somehow provided by the original code to let the weaving runtime use an unmodified version of the AspectJ weaver code.

Feedback

Feedback, questions and ideas are highly welcome. Feel free to contact me at lippert@acm.org.

Thanks

I would like to thank the members of the AspectJ project team for their help. My special thanks go to Jim Hugunin, Erik Hilsdale and Mik Kersten!
July 21-25, 2003

Demo at ECOOP 2003

I did a demonstration at ECOOP 2003 using the modified runtime for Eclipse 2.1.1. During the 45 minutes session I implemented a plugin using the PDE of Eclipse as well as the AJDT tooling for AspectJ for Eclipse. This plugin contained an aspect that logged every method execution of type void within the jdt.core package of Eclipse itself.
March 17-21, 2003

First presentation at the Eclipse BoF at AOSD 2003

I did a very first demonstration of the modified runtime at the Eclipse BoF session at AOSD 2003 in Boston. The demo showed the principal functionality of the load-time weaving runtime.

Copyright © 2003-2005 Martin Lippert
Last update: August 27, 2005.