Independent Extensibility – an open challenge for AspectJ and Hyper/J

Klaus Ostermann, Günter Kniesel · 2000

AspectJ and Hyper/J provide di#erent ways to modify classes that are used by existing clients. We think that a significant share of their di#erences can be attributed to the use of complementary ways to implement changes and to propagate them to clients: AspectJ uses in-place modification whereas Hyper/J uses client migration. Whereas these techniques are largely complementary in many respects, they share the limitation that the combination of independent extensions of one base class poses major problems. Object-oriented programmers frequently face one of the following problems: . All subclasses of an existing class should exhibit some extended behavior. . Objects created by existing code should exhibit some extended behavior. As a rather simple example, consider a billing system with a central class Invoice. Invoices can be delivered by calling the deliver()-method in the Invoice class. Instances of Invoice are created in multiple locations of the system and multiple subcla...

Read the paper · More papers on PaperTik