Memories of a Java geek

Posted on Tue 06 July 2004
Today I looked at AspectWerkz because I need to inject some monitoring code into existing Java libraries without modifying their code, and naturally thought about using AOP for this. Nice piece of work, especially the various kinds of on the fly weaving.

And this once again triggered memories of some work I did back in 1999, at a time where neither COP nor AOP existed. I several times wanted to write about it, but refrained from doing so as I did not wanted to behave like a pretentious old man (although I'm only 37) that pretends to have done everything before all other people. But today I can't keep it anymore and would like to share my heroic past with you.

Starting in early 1998, I was leading a small R&D team building reusable Java components for satellite mission planning systems. Yes, components. With centralized configuration, separation of interface and their numerous implementations. And even a rudimentary lookup-based component container.

One of these components was called "Repository": that was a transparent object persistence facility, aiming at allowing application developpers to concentrate on business logic while SQL experts were concentrating on database stuff. It was built for distributed applications (one server and several RMI/Corba clients), with a distributed and transactional object cache.

Application developpers did not have to care about persistency: we had written a bytecode preprocessor that introduced interception code around constructors and class members modifications to track new and dirty objects, using what was called JavaClass at that time and later became BCEL. It also replaced collection classes with our own implementations, with lazy loading of persistent objects. We actually had built a primitive JDO framework with a specialized AOP system.

Actual object persistency was delegated to what we call today DAOs. We had several implementations of them, allowing application developers to run their code with test data while SQL code was being written. Pure COP with good SoC.

All of this exists today in popular opensource libraries (or maybe not so popular, actually). But this story took place more than 5 years ago, when JDK 1.2 was just out and EJB was in its infancy. Feels good to see I wasn't mistaken when people were staring at me like at a kind of mad scientist.

MacOSX "Tiger" new features

European Foo Camp: sorry, I can't...