background image
Bionic Buffalo Tech Note #20: Quick Start Guide to Writing CORBA Client Applications 
client application requires the object URL string. 
 
 External Mechanisms. Some environments use external or non-CORBA mechanisms. These are
dependent on the way the programming and system environments were constructed. For example,
the DSM-CC specification for interactive multimedia uses a secondary protocol (the User-Network
protocol) to, among other things, provide an initial object reference to the application. 
Determine Application Environment and Implementation
 
Before compiling the IDL, some aspects of the application environment and implementation must be
determined. This is because there may be options for the IDL compiler which depend on the
environment and implementation, which, in turn, may affect the application code itself. 
Most of these considerations are relatively minor, but Bionic Buffalo makes a distinction between two
application environments: a standard environment defined by the specification, and a lightweight
implementation (the 
sudan product) for very small embedded systems. The required library API for
the 
sudan environment is a subset of the library API for minimal CORBA. When the france IDL
compiler generates code for 
sudan, less code is generated, and some symbols expected by an
application in a standard CORBA environment may not resolve. Code generated for 
sudan, however,
will run in a standard CORBA environment (at least with Bionic Buffalo's software). Since it is useful
when developing application to know when a feature will not be available, it is a good idea to generate
for code for 
sudan if you are planning to host it in a very small embedded environment in the future.
That way, errors about unresolved and undefined symbols will be encountered early, possibly saving
rework later. 
Compile the Interface IDL
 
The IDL compiler generates header files, subroutines, and data structures from the IDL, mapping the
IDL into the programming language of choice. The application developer will use this generated code
to invoke operations on the server objects. 
The code generated by the IDL compiler depends on the programming language. For most common
programming languages, there is a formal specification from the Object Management Group defining
the mapping to that programming language. For a few common languages (such as Perl) there is no
formal specification, and the mapping is defined by the implementor or by informal convention. Even
where a formal specification exists, it might be slightly incomplete or ambiguous, so a developer
concerned about portability ought to investigate these mapping issues. 
Because of the many languages for which there are mappings, it is beyond the scope of this Tech Note
to consider them all. What follows is a general description of the code generated for the C
programming language. The C language serves as a good example because the language itself is
simple, and is not object oriented, so the object constructs defined by the mapping specification are a
close reflection of the thinking of the OMG regarding what a fundamental CORBA object should be,
do, and have. In the case of some object oriented languages, it is sometimes more difficult to see the
parts that are CORBA, and the parts that are intrinsic to the language. For example, a Perl object is
Page 4 of 11