Time Independent Invocation in Java CMS
Most object-oriented languages offer a limited number of invocation semantics. At best, they define a default mode of synchronous invocation, plus some keywords to express additional semantic attributes, e.g. synchronisation. The very few approaches that offer rich libraries of invocation abstractations usually introduce significant overhead and do not support the composition of those abstractions.
This paper describes a pragmatic approach for abstracting invocation semantics with emphasise on remote invocations. Invocation semantics, such as synchronous, asynchronous, remote, transactional or replicated, are all considered first class citizens. Using an elegant combination of the Strategy and Decorator design patterns, we suggest an effective way to compose various invocation semantics. We completely separate the class definition from the invocation semantics of its methods and we go a step further towards full polymorphism: the invocation of the same method can have different semantics on two objects of the same class. The very same invocation on a given object may even vary according to the client performing the invocation. To reduce the overhead induced by the flexibility underlying our approach, we rely on just-in-time stub generation techniques.
Proceedings of the CSCS'00, Szeged, Hungary, July 2000
You can download the full paper in PDF format.