[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] Some questions about load-time weaving

Hash: SHA1


In the AspectJ FAQ released with Verison 1.2, I found the following
about load-time weaving:
- ---
AspectJ 1.1 can weave binary aspects into classes in bytecode form.
Hooked up to a class loader, this can weave class bytecodes after
they are read in, before the class is defined by the VM. In the 1.1
release (or soon thereafter) we will provide a proof-of-concept class
loader, but we expect most people will already have a custom class
loader which they will adapt to invoke our weaver. 
Some have asked about only weaving particular classes specified at
run-time. Aspects should work across an entire namespace, and
problems will likely result from weaving some classes but not others.
Also, it's confusing to specify crosscutting both in the aspect and
in the list of runtime classes; the crosscutting specification should
be in the aspect itself, where it can be processed by tools. 
- ---

Well this seems a bit outdated now, since version 1.2 is out and
maybe some things have changed - maybe not, I don't know. So is there
any real experience already with the provided load-time weaving
implementation of 1.2?

In particular I would like to know:

Are there any decent estimations so far of the performance impacts
inwolved at class loadtime?

If the approach also applicable for people who already use a custom
classloader to do whatever in their aspected application?

Can problems arise when code that was woven at compile-time is woven
again at load-time?

What would happen if somebody wove in an aspect at compile-time and
then tried to weave that very same aspect in again at load-time?

What about the reweavable feature? (How) does that affect
compile-time weaving?


My apologies in advance if ther's already a paper or FAQ about that.
I simply could not find one.


- -- 
Eric Bodden
Chair I2 for Programming Languages and Program Analysis
RWTH Aachen University

Version: PGP 8.0.3