


1. Design and implementation of JavaGroups

JavaGroups [1] is a collection of architectural components which are
frequently encountered in group communication. It comprises classes
*and* algorithms, both on a sufficiently fine-grained level to be
incorporated into other code, and some at the same time coarse-grained
enough to be reused as black-box modules.

Examples of classes are failure detectors, membership service,
transport objects, or group objects. Examples of algorithms are mainly
found in protocols and are a voting protocol, consensus service, a
virtual synchrony protocol etc.

The focus of JavaGroups is not on RMI, but it assumes a rather generic
view of group communication. A major goal of JavaGroups is to provide
reuable pieces of group communication code (1) upon which larger
toolkits or frameworks can be built or (2) that can be used
independently in group communication applications or libraries.

Status: Partial implementation. Ongoing work in integration/creation
of protocols




2. Integration of Ensemble into JavaGroups

Ensemble is integrated into JavaGroups, the reason being that access
to the large number of existing and tested protocols is an advantage
and saves the tedious work of manually translating Ensemble protocols
to Java. (An option is to find ways to translate ML code automatically
to Java).

Integration is done in two ways: first, we want to enable the
transparent use of Ensemble through the JavaGroups API. Second, we
want to be able to write new protocols entirely in Java and have them
communicate with existing layers (i.e. protocols) written in ML. This
would allow us to gradually convert existing ML layers to Java and/or
write new layers in Java from the beginning.

Status: Integration of Ensemble into JavaGroups is almost done. The
current solution uses a bidirectional socket between an Ensemble
process and a JavaGroups protocol written specifically for this
purpose. Integration of Java layers with ML layers is being
investigated.





3. Writing / porting of Ensemble layers to Java

Integration of Ensemble into JavaGroups has two drawbacks:
(1) communication is relatively slow and (2) it requires the Ensemble
executable which has to be installed on every machine separately,
raising portability issues.

Therefore, it would be best to port the major layers to Java,
achieving a 100% Java-based solution. It has to be investigated
whether this is to be done manually or whether there are any tools to
do it automatically.

Status: open




4. Extension of RMI to add group communication

Investigate ways to add replication / fault tolerance / infobus
functionality into RMI. Some ideas have been described in [2]. The
approach would be based on JavaGroups.

Status: open




[1] Ban, Bela. JavaGroups Overview. 
               http://www.cs.cornell.edu/home/bba/JavaGroups.html

[2] Ban, Bela. Adding Group Communication to Java in a Non-Intrusive
               Way Using the Ensemble Toolkit.
	       http://www.cs.cornell.edu/home/bba/proposal.ps.gz

