Questions and issues to Walter Cazzola.
This project should be considered as closed, it was part of the research for my PhD and for this I'm fond of it. Even if it the project is quite old it still propose some interesting ideas that I hope you could appreciate and use in your research.
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.
mChaRM is a reflective middleware thats allows compile-time reification (and adaptation) of each remote method invocation both single and multi-point.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 does not support multi-point communications. Hence, mChaRM provides its (naïve) multi-point communications mechanism based on the standard Java RMI mechanism.
multiRMI(String[] {receiversName}, String methodName, Object[] actualArgs)
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).
Through the keywords kinds it is possible to specify which meta-behavior to associate with 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:
Currently, the multi-channel collection contains only few examples, i.e., verbose, RMP, validation channels and it should be considered as a bundle of examples for the middleware potentiality.
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 -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 .mChaRM_hosts.
The mChaRM reflective middleware has been considered in the popular survey on reflective middleware:
and Max Goff's in his book
has described mChaRM philosophy as an alternative to traditional distributed systems.
The interested developers can consult the javadoc packages documentation on-line; whereas those more interested in the scientific aspects of mChaRM can look at the references section.
mChaRM v1.5 (the last released version) has been developed 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) and does not support Java 5+. You can also download some examples.
The main limitation of mChaRM is tied to the fact it is based on an outdated version of Java, so:
Apart from this, the following implementation issues are the known limitations: