mChaRM Home Page

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.

mChaRM Description

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

multiRMI(String[] {receiversName}, String methodName, Object[] actualArgs)

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:

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.

How To

Each package is provided with a makefile, hence to compile, install, and produce the related documentation is enough to run: make all.

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 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 .mChaRM_hosts

Documentation On-Line

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.

mChaRM Support Mailing List

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:

without subject and containing the command:

subscribe mChaRM-ML «Your Name» «Your E-Mail Address»

Once subscribed you will receive the welcome message from the majordomo with a description of the list and the instructions for using the mailing list.

MChaRM ML Subscription Form
E-Mail Address:
Name & Surname:
To unsubscribe the mailing list you can either fill the form below in and submit it or you can send a mail to:

without subject and containing the command:

unsubscribe mChaRM-ML «Your Name» «Your E-Mail Address»

Once unsubscribed, you will receive by e-mail an acknowledge about your unsubscription.

MChaRM ML Unsubscription Form
E-Mail Address:
Name & Surname:
To address your messages to the mailing list you have to write to

Bugs and Limitations

Future Works

mChaRM is an ongoing work and we are continuing to develop it. As future work we are going to: