Common Object Request Broker Architecture (CORBA)

The Common Object Request Broker Architecture (CORBA) is an open, vendor-independent standard designed to enable collaboration of computer systems deployed on different operating systems, programming languages, and hardware platforms.

CORBA was defined by the Object Management Group (OMG), an international non-profit technology standards consortium.

Bottom line: CORBA enables communication between computers running on different platforms, using software written in different programming languages.

Brief History

The architecture described in the CORBA standard originally targeted software developers who wanted to create interoperable applications based on distributed interoperating objects.

The CORBA 1.0 specification was released in October 1991, introducing the CORBA object model, the Interface Definition Language (IDL), and the core set of programming APIs and language mappings for the C programming language.

CORBA 1.1 and 1.2 followed soon afterward, released in February 1992 and December 1993 respectively. These versions removed many ambiguities from the original specification.

The CORBA 2.0 release came in August 1996. It was the first major overhaul of the specification. The update introduced a bevy of new features, such as support for layered security and transaction services, new datatype extensions and interworking with OLE2/COM, and so on.

CORBA versions from 2.1 to 2.6 released between August 1997 and December 2001 was marked by incremental updates, with a focus on adding new and revised features to the specification.

The next significant release was CORBA 3.0 in July 2002. CORBA 3.1.1 from August 2011 was also formally published by ISO as the 2012 edition standard ISO/IEC 19500-1, 19500-2 and 19500-3.

The latest edition of CORBA is version 3.3 from November 2012. You can read more about all formally released versions and each specification in particular at the spec section of OMG's CORBA website.

CORBA Features

CORBA makes it possible for computers running software written in different programming languages on different platforms to communicate.

To accomplish this, CORBA uses an Interface Definition Language (IDL) to specify various interfaces that objects present to the outside world. CORBA specifies mappings from IDL to a specific programming language like C++ or Java.

Standard mappings for CORBA exist for Ada, C, C++, Java, Lisp, Object Pascal, PL/I, Ruby, Python and Smalltalk programming languages.

Non-standard mappings for C#, Erlang, Perl, Tcl and Visual Basic are implemented by Object Request Brokers (ORBs) written for these programming languages.

The CORBA specification strictly defines that an application must communicate with other objects through an Object Request Broker (ORB).

The application initializes the ORB and uses an internal Object Adapter for reference counting and object and reference instantiation policies. The Object Adapter is used to register instances of the generated code classes which are the result of compiling the user IDL code.

IDL mappings to some programming languages are quite straightforward, so using CORBA in Java or Python applications is simple.

The IDL to C++ mapping on the other hand, requires the programmer to learn the data types that predate the C++ Standard Template Library (STL). Or, the IDL to C mapping, where a programmer is required to manually emulate object-oriented features, since C is not object-oriented.

CORBA Usage and Applications

CORBA is useful in many situations.

Because of the easy way that CORBA integrates machines from different vendors, with sizes ranging from mainframes, through thin clients and desktops to handhelds and embedded systems, it is the middleware of choice for large (and even not-so-large) enterprises.

One of the most important, and most common CORBA uses is in servers that must handle a large number of clients, at high hit rates, with high reliability.

Specializations for scalability and fault-tolerance support these systems. CORBA is not used just for large applications; specialized versions of CORBA run real-time systems, and small embedded systems as well.

CORBA Resources

For a more detailed look into CORBA, we suggest checking out some of the following online resources:

CORBA Books

Books that specifically cover CORBA are hard to find, instead, you will usually find chapters about CORBA in books about programming languages. Also, many books that do mention CORBA are outdated. We singled out a few titles:

  • CORBA 3 Fundamentals and Programming, 2nd Edition (2000) by Jon Siegel: CORBA 3 makes distributed programming more powerful and productive than ever before. In this guide to CORBA programming, an OMG insider shows architects and programmers how to make the most of all of these features.

  • CORBA 3 (1998) by Reaz Hoque: this book covers dynamic invocation, the interface repository, security, and other key CORBA services. The author also presents new features of the CORBA 3 specification. The final section shows how to create CORBA Web applications, with examples that use Java, JavaBeans, and the new CORBA component and scripting features.

  • Java Programming with CORBA: Advanced Techniques for Building Distributed Applications (2007) by Brose, Vogel and Duddy: The authors present advanced techniques and real-world examples for building both simple and complex programs using Java with CORBA. This book also features in-depth code examples, as well as expanded coverage of cutting-edge topics, including Portable Object Adaptor (POA), Remote Method Invocation (RMI) over IIOP, and EJB.

Conclusion

The CORBA specification introduced some interesting possibilities for developers, like programming language and OS independence. The most popular programming languages used with CORBA are Java and C++.

These facts also proved to be the main source of trouble for the CORBA design committee, as interoperability increased competition and made it easier for customers to move between alternative implementations.

This, in turn, lead to a lot of political issues within the committee and produced frequent releases and revisions of CORBA.

CORBA is a very detailed standard with many features. Many early versions failed to implement the entire specification, which led to bad publicity. It simply took some time for robust CORBA implementations to surface and gain popularity.


Further Reading and Resources

We have more guides, tutorials, and infographics related to coding and development:

What Code Should You Learn?

Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn?

It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"