Chapter 1. Introduction

ORBit is an efficient, free C-based ORB, compliant to CORBA version 2.2. CORBA stands for Common Object Request Broker Architecture. CORBA in many ways is a successor to the Remote Procedure Call (RPC) system common on UNIX and other systems: the best oneline description of CORBA is that it is "Object Orientated RPC".

The key point about CORBA is that it provides a way for two programs to communicate information. The CORBA mechanism allows these two programs to be running on different machines and written in different programming languages while safely (and portably) exchanging data. They also could be running in the same program, on the same machine, in which case the process of communication is much quickeras ORBit recognises that it does not need to open any communication channel.

ORBit has some important features which distinguish it from other CORBA implementations. Firstly it is primarily a C-based implementation (using the standard C mapping), which many other CORBA implementations do not cater to. Secondly it is a fast implementation, meaning that it moves information on and off the communication channel into the programs quickly. Thirdly it is efficient in terms of its memory usage, meaning it can be run on small machines. Fourthly it works, and works in real life problems. Finally it is free software, that is free in terms of an open license to change the source code. This means that a number of different people (both academics and commerical people) can contribute to the source code and that bugs and problems can be fixed quickly. ORBit unsurprisingly is therefore licensed under the GNU Public License (GPL). More information about how the terms of this license affect you can be found in the FAQ, and you're encouraged to read the actual GPL text that comes in the distribution

The CORBA mechanism is ideal for classic client/server applications, say a graphical client GUI communicating to a database server, or much simpler applications, such as one program asking for a mail service from the CORBA system. ORBit was made principly for the latter case: that is communicating information between different programs running in a desktop enviroment (the Gnome enviroment). ORBit is a fully blown generic ORB and can be used in many other applications outside of the gnome desktop - there is absolutely no requirement to be running Gnome for ORBit.

This documentation is aimed principly at getting people with C programming experience started with ORBit and some discussion about the challenges of writing ORB aware software. If you are a looking for a more fluffy description about what CORBA is I would start at the Resource section below. If you want to know the technical nitty-gritty about ORBit, go to the source code, or hang out on the ORBit mailing list.

It is also hoped that this documentation will be a starting point for a more technical orientated documentation about how ORBit is structured and the internal functions.

1.1. About this documentation

This documentation is currently maintained by Frank Rehberger frehberg@gnome.org . For the definitive guide about what is going on, always go to the source code (with any luck, it will have documentation) or the C mapping document at the OMG. If you think there is mistake with this documentation, please email me. If you would like to contribute an example or another chapter, please also get in contact, or post to the orbit mailing list.

This documentation was written with major contributions from Ewan Birney, Michael Launsch and Todd Lewis, edited by Stéphane Genaud, ORBit update by Frank Rehberger. It is written in docbook XML. You can get :

1.1.1. Change Notes between 1.5 and 1.4

  • New sample "threaded-calculator" uses POA-setup THREAD_PER_REQUEST now, demonstrating usage of policies for child POAs. Furtheron Makefile has changed: Linker merges debug symbols of shared libraries correctly now into executable.

1.1.2. Change Notes between 1.4 and 1.3

  • Adding new sample "threaded-calculator" demonstrating usage of ORBit2 as background task.

  • For all samples initialize ORB with string "orbit-local-mt-orb", this string is valid for current ORB and also for older releases.

1.1.3. Change Notes between 1.3 and 1.2

  • Port back to docbook4.1.2 used by gnome-doc project

  • rename impl_*__destroy to impl_*__fini, being CORBA's nomenclature

  • fix memory-leaks in server implementations: deactivate servants at termination

1.1.4. Change Notes between 1.2 and 1.1

  • Introduced section for change notes

  • fixing __destroy __fini confusion

  • Add chapter for sample codes byteseq, badcall and name-resolve