Summary
The open source project (LGPL license) Mandala provides a new model to deal
with both concurrent and distributed programming. Moreover, Mandala
focuses on dynamism: objects do not have to be specifically written to be
to be accessed asynchronously and remotely. Hence, in a distributed
context, objects used asynchronously leads to
parallelism. Mandala extends the well-known method invocation
paradigm to asynchronous (and potentially remote) method invocation.
Two subpackages written in pure java code are the core of Mandala:
- RAMI for Reflective Asynchronous Method
Invocation which allows any public method of any Java object to be
invoked asynchronously. RAMI is highly customizable using the Factory
design pattern and provides different asynchronous policies such as
concurrent semantics (threaded and threadpooled policy) and single
threaded semantics (fifo and random policy). The subpackage
mandala.rami
is the implementation of RAMI.
- JACOb for Java Active Container of Objects
which allows any public method of any object to be invoked
remotely. JACOb uses the concept of active container - modeled
in pi-calculus - which enables any object to be remotely accessible by
being inserted into a remote active container. JACOb can be used for
distributed applications programming, parallel programming, mobile agents
programming, aspect programming. JACOb uses the interfaces defined in
RAMI ensuring a common view between asynchronous objects and asynchronous
remote objects. The subpackage mandala.jacob is the
implementation of JACOb.