|
|
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
|
|
|
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.
|
|
|