Welcome to the official home page of mChaRM. mChaRM is a distributed middleware based on Java which supports the multi-Channel Reification Model.
The multi-channel reification model is a reflective model which allows the system to reify multi-point communications instead of objects. Each method invocation can be reified into a multi-channel performing meta-computations about it before the real activation. In this way it is possible to enrich the classic communication semantics with new behaviors and properties. To know more about this approach you can consider to read one of the papers in my bibliography page related to communication-oriented reflection.
The conversion from mChaRM to standard Java is carried out by a preprocessor developed using OpenJava. The basic idea consists of providing a mechanism to open up the Java RMI package. To open up the remote communication mechanism of Java we adopt the ideas provided by the multi-channel reification model.
Java doesn't support multi-point communications. Hence, mChaRM provides its (naive) multi-point communications mechanism based on the standard Java RMI mechanism
At the moment only communications performed through this method are reified, but this one is not a limit because we can use it also for realizing point-to-point communications (specifying only a receiver). In the next future we are going to provide a multi-point RMI not based on the standard RMI mechanism.
Through the keywords kinds it is possible to specify which meta-behavior to associate to each method that an instance of such a class could invoke (see the examples for the usage).
The mCharM framework consists of the following packages:
MOP contains the OpenJava MOP handling the base-level extensions. It translates the mChaRM code in pure Java code. It also adds the code to support the multi-channel reification model and multi-point communications. This package is used as a preprocessor, users cannot interact with it.
PREmChaRM contains the OpenJava MOP handling the multi-channel syntax. Such a new syntax allows the meta-programmer to write a multi-channel as a single and uniform class achieving a global view of the whole communication. This package is used as a preprocessor, users cannot interact with it.
multichannel contains the basic classes used to build new multi-channels.
mChaRMCollection a collection of multi-channels.
At the moment the multi-channel collection contains only few examples, i.e., verbose, RMP, validation channels, but we are working on that and as soon as possible we will replace it with a richer collection.
Each package is provided with a
makefile, hence to compile, install, and produce the related documentation is enough to run:
Note: Since version 1.4 mChaRM uses KaRMI so you also have to download and install this library.
Before executing a mChaRM system you have to activate an instance of the rmiregistry on each host in the system, as follows:
java -Dde.uka.karmi.config=karmi-socket.properties uka.karmi.rmi.RunRegistry
then, you can activate each component of your system, respecting the dependence graph of the components (servers at first, then channels, clients at last).
Note: the multiRMI lookup looks for objects into hosts listed in the file
It is possible to consult the
javadoc packages documentation on-line. A more interesting and exhaustive description of the current release of the mChaRM middleware can be read in the related technical report or in my PhD thesis.
Click here to download version 1.5 of the mChaRM framework. It has been developped and tested on a Linux Box based on pII@350Mhz and Mandrake 7.1 with Java 2 (jdk v1.3.1) and OpenJava V1.0 (05 September 2000). You can also download some examples.
WARNING!!! The mailing list is currently deactivated, we will reactivate it ASAP.
To support people using mChaRM and spread away its use, we manage a support mailing list. We will use such a way to notify updates, and bug fixes. Besides, users can use it to notify us bugs or to interact with the authors and the other users about mChaRM. To subscribe to the mailing list you can either fill the form below in and submit it or you can send a mail to:
mChaRM is an ongoing work and we are continuing to develop it. As future work we are going to: