Logo

C H A I M S: Compiling High-level Access Interfaces for Multi-site Software

Towards the Science of Component Engineering 
Logo

The CHAIMS Research Project

This document describes the most current version of the CHAIMS language and system.

The various versions of CHAIMS

CHAIMS is a research project, and the CHAIMS language and the CHAIMS system are evolving. As experience grows, the definitions and concepts in CHAIMS change. We therefore distinguish between various versions in CHAIMS. Version 1.0 - the baby-demo - was the first version where we actually wrapped a very simple legacy megamodule and ran a megaprogram with this megamodule and the IO-megamodule. The version of July 1998 is version 1.1. This version includes ASN.1-datablobs, RMI-wrapper, CORBA-wrapper, compiler generating code for RMI and CORBA yet not for mixed clients, first version of a repository, a simple yet not integrated scheduler, and the transportation demo. The CHAIMS language of version 1.1 has various flaws - these will be taken out incrementally over various other 1.* versions towards version 2.0. Version 2.0 then should contain a complete basic infrastructure.

Glossary of CHAIMS

Small glossary describing the most important terms and their synomonyms.


CLAM: the CHAIMS Language

CLAM (Composition Language for Autonomous Megamodules) is the composition language we use in CHAIMS for writing megaprograms. CLAM is purely compositional - one goal of having CLAM is to investigate if it is possible to do higher-level composition with a purely compositional language, where all arithmetic and many other convenient language features are pushed down into megamodules. Another characteristic of CLAM is that it mirrors closely the elements of the CHAIMS protocol. But beside the 9 primitives of the protocol it also contains some simple control structures and some shortcuts.

Description of the current CHAIMS language: CHAIMS Language API (CHAIMS 1.1, July '98), new version of the CHAIMS Language description (CHAIMS 1.0).

Description of the future CHAIMS language: Syntax of CHAIMS 2.0 specified in EBNF, Semantics of CHAIMS 2.0

One tricky issue is how to handle control-data in a purely compositional language.

For older documents about the CHAIMS language, check the following page: Development of the CHAIMS Language.



CPAM: the CHAIMS Protocols

The CHAIMS Protocols for Autonomous Megamodules (CPAM) are the interfaces between the compiled megaprogram (client) and the megamodules (servers). Because we support several distribution protocols, this interface is slightly different for the various distribution protocols. Also the way these interfaces are defined varies. For CORBA, the interface is defined by a CORBA-idl, for DCE by a DCE-idl, for RMI by a class definition. There is a diagram (as ppt) showing the difference between the CHAIMS language CLAM and the CHAIMS protocols.

General description of the CHAIMS protocol: The CHAIMS protocol

CHAIMS protocol for CORBA:

CHAIMS protocol for RMI: CHAIMS protocol for DCE: DCE-idl (not yet implemented)

CHAIMS protocol for CHAIMS protocol foTCP/IP: implemented in Java and C++message definition in C++, summary

CHAIMS protocol for local Java megamodules: ChaimsCompliantLocal CHAIMS 2.0

CHAIMS protocol for local C++ megamodules: ChaimsLocalCC CHAIMS 2.0

Incremental extraction in CLAM, in CPAM, and in other protocols:  whitepaper


The CHAIMS Infrastructure

The main elements of the CHAIMS infrastructure are the CHAIMS-compiler and the wrappers for the megamodules.

The CHAIMS Architecture












Application Domains for CHAIMS

Examples for application domains:


CHAIMS Examples


Related Work


Back to the top of the page

LogoBack to the CHAIMS homepage