CORBA Terminology: An Overview
by Thomas Albert     http://www.WORDesign.com

"Believe it or not, the Human Genome Project probably depends more on [computer engineers] than on the biologists and geneticists. This is because the final goal is to create a giant, distributed database."
Trevor Harmon, Institute of Biomedical Computing
http://www.ibc.wustl.edu

Middleware is what enables different kinds of software to work together. Large enterprises (corporations, governments), or enterprises of large scale (such as the Human Genome Project), are likely to have different computer platforms/operating systems (UNIX, Windows NT, mainframe) with applications written in different computer languages (C, C++, Java). Middleware is a solution for distributed computing in a heterogeneous environment.

For example, a chemical researcher in Ann Arbor, Michigan using a molecular crystallography application written in C++ and running as a Java applet on a browser on a Windows NT personal computer might want to query for a type of molecule. This researcher does not want to know whether the data being fetched resides on an IBM mainframe at the National Bureau of Standards and Industry in Washington, D.C. or in an Oracle database running on a cluster of UNIX workstations at Stanford Research Institute in California.

Glossary of Middleware- and CORBA-related Terms

CORBA

CORBA is an acronym for Common Object Broker Architecture. This standard of the Object Management Group (OMG) enables enterprise-wide distributed computing by providing interoperability between CORBA components. The components can be written in different languages, for different platforms, and by different vendors. Rigorous interoperability distinguishes CORBA from Java's Remote Method Invocation (RMI) and Microsoft's DCOM (Distributed Component Object Model). CORBA version 2.3 is current, and the OMG will publish version 3 in 2000.

A common analogy is to consider CORBA as a software bus, similar in function to the hardware bus that conducts signals between multiple peripheral devices (mouse, monitor, keyboard, sound card) and the central processing unit.

CORBA can work with any number of clients and any number of servers.

CORBA language mappings support the following: Ada, C, C++, COBOL, IDL (CORBA's own Interface Description Language), Java, and SmallTalk.

CORBA also includes interfaces for specific industries: medical devices, telecommunications data streaming, and finance (currency).

DCOM

DCOM is an acronym for Distributed Component Object Model, which is Microsoft Corporation's proprietary analog to CORBA. DCOM is designed for Windows NT, not UNIX. The DCOM/NT platform supports Microsoft Transaction Server.

EJB

EJB is an acronym for Enterprise Java Beans. In the client applet, a java bean can correspond to a reusable component in a graphical user interface, such as a button in a form. In a server "servlet", an enterprise java bean can correspond to a business function, such as "fetch matching molecules", "calculate tax on total purchases," or "store the sum in the database." Developers can write EJB wrappers for legacy data access mechanisms, such as Perl scripts.

IDL

IDL is an acronym for the Interface Definition Language that enables different Object Request Brokers (ORBs) to communicate through the TCP/IP-based protocol called Internet Inter-ORB Protocol (IIOP). IDL differs from a computer language such as C because software developers use IDL to create descriptions of an interface rather than executable programs. CORBA provides a Java-to-IDL mapping standard. An IDL mapping deals with language-specific data types and threads of control. An object-oriented language can have a one-to-one correspondence between CORBA object and language object. A procedural programming language, however, requires a "stub" interface.

Object

An object is a computer programming construct that combines (encapsulates) attributes and relationships (state) with operations and methods (behavior) in a single entity. The object model facilitates object reuse and object-oriented business engineering, and allows programmers to use a metaphor that resembles the real world. For example, a "customer" object can have attributes and behaviors such as "owns" and "buys". C++ and Java are popular object-oriented languages. An object is an instance of its object class. For example, carbon and hydrogen can be instances of the element class. Another example of an object is a spreadsheet embedded in a word processing program.

Object Adaptor

An object adaptor enables a server to provide objects to CORBA clients. The Portable Object Adapter (POA) is an API of the OMG that enables any computing language with an IDL mapping to implement CORBA objects. An object adaptor extends CORBA in a manner that is analogous to how UNIX shell utilities extend the UNIX kernel, or how dynamic link libraries extend the functionality of an executable. The core of the Object Request Broker uses specific object adaptors to deal with specific object types.

ORB

ORB is an acronym for Object Request Broker. The ORB acts as the intermediary between the client and the server. The Java application programming interface (API) specification provides a package called org.omg.CORBA.portable, that supports communication between the ORBs of different vendors. Iona Technologies provides an ORB for communication with Microsoft's Distributed Component Model (DCOM).

Persistence

Persistence is an attribute of an object. Whereas a transient CORBA object appears and disappears from memory, an object with persistence retains its existence. Persistence allows an object to be written to a file, and therefore to be stored in a database. For performance purposes, a persistent object can also reside in cache.

RMI

RMI is an acronym for Remote Method Invocation. RMI is a Java protocol that supports distributed computing by linking one Java virtual machine with another. Unlike CORBA, RMI requires that the client and the server both be written in Java. RMI uses a mechanism similar to a remote procedure call (RPC) that enables one UNIX processes to interact with another UNIX process. RMI, however, depends upon the Java virtual machine instead of the underlying operating system. An RMI network "listener" waits on a TCP/IP port of the server for an RMI client to call a remote procedure. The server has an RMI registry, which uses its database of objects to transmit and receive communication between the RMI client and the remote object. The client, therefore, does not need to know the exact location of the object with which it interacts.

UML

UML is an acronym for Unified Modeling Language. The Object Management Group supports the UML as a way to describe objects, and CORBA as a way to enable distributed objects to work together across a computer network.

XML

XML is an acronym for Extensible Markup Language. XML allows developers to extend HTML with tags that specify the type of content. A given industry, such as the newspaper industry, can use XML to enable web-based commerce. For example: the online newspaper industry might agree on tags such as "headline", "newspaper section", and "article_author" to facilitate sharing content in distributed repositories. Database search performance improves if the content is presorted and indexed by an XML tag. CORBA can act as the software bus for passing XML data.

References

http://www.omg.org/corba/whatiscorba.html
Object Management Group's summary of CORBA.  

http://www.sun.com/research/forest/opj/docs/api/
Sun Microsystem's API specification for Java 2.

http://edocs.bea.com/wle/glossary/glossary.htm
BEA Systems glossary of terms related to BEA WebLogic product set

Not Just Java: A Technology Briefing, 2nd ed., Peter van der Linden, Prentice Hall/Sun Microsystems (1999).

"Using RMI in the Real World," Trevor Harmon, Java Pro (November, 1998), pp. 30-38. The online version of the magazine is at http://www.java-pro.com/