next up previous contents
Next: Scope of this Manual Up: Preface Previous: Preface   Contents


Babel in a Nutshell

Babel is a tool that enables software written in different languages to communicate. It accomplishes this task by using an Interface Definition Language (IDL) similar to COM and CORBA, but specifically tuned for scientific applications. By expressing software interfaces (sometimes called APIs) in SIDL, Babel can generate the appropriate glue code to make software language interoperable. Features unique to SIDL are:

Babel enables true object-oriented techniques even in non object-oriented languages. The object model that SIDL supports is similar to Java and Objective C where a class can extend at most one class, but implement many interfaces. In C++ speak, an interface is simply a class of all pure-virtual methods. Furthermore, if library developers want object-oriented features but are required to be 100% ANSI C compliant, Babel can meet those constraints. Although the Babel code generator is implemented in Java, the runtime libraries and generated files for C bindings are 100% ANSI C compliant.

Babel is the basis for a component framework, but it is not a complete framework by itself. We've added a tiny CCA-0.5 compliant framework in our examples/ directory, called Decaf. Decaf demonstrates how Babel can be used to implement a component framework, but Decaf itself has just enough to build a ``Hello World'' component and connect it to a ``Printf'' component.

SIDL is also a useful tool in itself for code development teams. SIDL can only express the public API and nothing about its implementation. Discussions between groups who restrict themselves to SIDL can safely avoid implementation issues that would detract from the interface design. Furthermore, SIDL is simple, clean, and powerful enough for Computer Scientists, Math Programmers, and Application Scientists to debate APIs proficiently using only email.


next up previous contents
Next: Scope of this Manual Up: Preface Previous: Preface   Contents


babel-0.8.0
users_guide Last Modified 2003-01-14

http://www.llnl.gov/CASC/components
components@llnl.gov