Time Independent Invocation in Java CMS
Abstract
Most object-oriented languages for distributed programming offer a limited number of invocation semantics. At best, they support a default mode of synchronous remote invocation, plus some keywords to express asynchronous messaging. The very few approaches that offer rich libraries of invocation abstractions usually introduce significant overhead and do not support the composition of those abstractions, however, one can never predict the need of the developer, especially in the fast developing and changing mobile environments. This paper describes a pragmatic approach for abstracting remote invocations in mobile environments and presents the time-independent invocation and its formal description. Invocation semantics, such as synchronous, transactional, or replicated, are all considered first class citizens. 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.