CAESAR is a new aspect oriented programming (AOP) language that supports a dynamic form of AOP. Gregor Kiczales of AspectJ fame has coined the word “Fluid AOP” in his paper “AOP – The Fun Has Just Begun“:
But we can also see signs of a next generation of AOP technology, that we call fluid AOP. Fluid AOP involves the ability to temporarily shift a program (or other software model) to a different structure to do some piece of work with it, and then shift it back. This is analogous to electrical engineers using the Four ier transform to make certain problems easier to solve.
In more concrete terms the CaesarJ folks write:
In addition, our on-demand remodularization is object-based rather than class-based. Class-based means that a remodularization which affects a class applies to all instances of a class, whereas object-based means that the remodularization may be created for individual objects on-demand. The advantage of object-based remodularization is twofold. First, we have fine-grained control over the integration process because we can choose for each object whether it should be part of a collaboration or not. Second, the same object (or set of objects) can participate in multiple component instances.
Now, that’s interesting, think generic programming applied to instances instead of interfaces. Now if JFluid supported instance-based instrospection then you get the flexibility and the speed to boot! We live in pretty exciting times!