are a novel programming construct which, like mixins and generic classes, generates new classes from existing ones in a universal, uniform, and automatic manner: From a given class, a shakein generates a new class which has the same type as the original, but with different data and code implementation. We argue that shakeins are restricted, yet less chaotic, aspects. We further claim that shakeins are well suited for the introduction of
(AOP) into existing middleware applications. We introduce the
J2EE language which, with the help of shakeins and a new
weaving mechanism, brings the blessings of AOP to the J2EE framework. A unique advantage of
J2EE, which is less general (and hence less complicated) than
, is that it can be smoothly integrated into J2EE implementations without breaking their architecture.