Basic Resources for Integrated Distributed Group Environments
BRIDGE (Basic Resources for Integrated Distributed Group Environments) and foundation CORK (Content Object Replication Kit) provide an architecture to develop collaborative Java applications that can be shared synchronously across distributed clients.
The Content Object Replication Kit (CORK) is a toolkit designed to support replication of Java objects across virtual machines on the same or different hosts. Replicated objects provide an alternative abstraction for building distributed systems, and collaborative systems in particular. Multiple clients can retrieve replicas of a given Object, and changes made to any one of the replicas will be propagated to all other replicas. "Master" replicas are also written to non-volatile storage in case of client, server, or network failure.
A primary design goal of CORK has been the ability to replicate objects from a variety of (unmodified) classes. This is achieved by attaching listeners to objects to detect events that signal object modifications, and then translating those events into intellegent messages that include the logic for reproducing the modification on a remote replica. CORK includes flexible security support, providing pluggable fine-grained control over replica visibility, retrieval, and modification. Flexible support for object storage is also included, allowing custom storage implementations to be added. A more detailed high-level overview of CORK is available in "Supporting Interactive Collaboration on the Web with CORK".
On top of the object replication services provided by CORK is another library named BRIDGE (Basic Resources for Integrated Distributed Group Environments) that simplifies composition of collaborative objects into user-accessible environments. BRIDGE supports naming and structuring of sets of collaborative objects and mapping both web-accessible and interactive user interfaces to collaborative objects. It also provides a set of standard services, such as interfaces for controlling read and write access to objects; efficient mechanisms for tracking which users are viewing which objects; and tracking of versions of objects.
The software is written using Java 2 Standard Edition with a port of the client to Java 2 Micro Edition CDC Personal Profile in the works. The desktop Java client is written using Swing for interface components and has been used under Windows, Linux and Mac OS X.