Mehr lesen
Most object-oriented languages for distributed programming offer only a limited number of message semantics. Such a semantic defines the mode in which a method is invoked, e.g. synchronous or asynchronous. At best, languages support a default mode of syncchronous remote message passing, plus some keywords to express different styles of asynchronous messaging. Gehe very few approaches that offer richer libraries of invocatin abstractions, usually introduce a signigicant time overhead, lose - some extent - transparency and/or do not support the composition of their abstractions. This thesis describes a pragmatic approach - composable message semantics - for abstracting message passing semantics. Semantics such as synchromous, asynchronous, transactional or replicated, are all considered first class citizens. Using an interesting combination of the Strategy and Decorator design patterns, we suggest an effective way to compose aritrary new message semantics. We completely separate a class definitin from the message semantics used for invocations of its methods. We go a step further towards full polymorphism: the invocation of the same method cam have different semantics on two objects of the same class. Invoking the very same method on a given object may exen vary according to the client that performs the invocation. To reduce the ovehead induced by the in-Time stub generation. This technique delays the generation of the necessary stub and skeleton code snippets until the last possible moment. By taking run-time knowledge into account, the code snippets are further optimised. They can also be adapted to the current execution environment.The implementation of a prototypical distributed objects system shows the feasibility of our approach. Measurements prove that the increase