AOP ClassLoader Suite

Dimitrios Souflis

A suite of Java ClassLoaders that use "load-time reflection" (the modification of bytecodes upon class loading) to extend existing Java classes. It uses the excellent BCEL library to perform bytecode manipulation. My intention is to explore possibilities in the direction of Aspect Oriented Programming. Existing AOP projects (AspectJ, HyperJ) are very promissing, but require the use of special tools to produce modified binaries. As such, they do not fit easily in the routine of an existing software shop. I believe that a tool that does all bytecode modifications on-the-fly, without modifying disk binaries, has a higher chance of being used by those who are not early adopters.

That's why my first application is a ClassLoader that adds tracing output to methods. Being a tool for testing, and not something that one will use in production code, makes it more acceptable as an idea.

The second classloader is one that synthesizes bodies for abstract getters, using an "ObjectLocator" object to retrieve a value to return each time. Allows to avoid dependency on the "ObjectLocator". This kind of thing has applications in the domain of Inversion of Control a.k.a. dependency injection.

This software is governed by the LGPL

SourceForge Logo