Fig. 6.2 Remote invocation when client and server are using different ORBs
Indeed, some of the pages on the old Sun site referred to the IDL model and the Java
ORB as being separate entities. Mostly, however, Java IDL is referred to as the ORB
itself, with this taken to include the IDL-to-Java mapping.
IDL supports a class hierarchy, at the root of which is class Object . This is not
the same as the Java language's Object class and is identifi ed as org.omg.CORBA.
Object (a subclass of java.lang.Object ) in Java. Some CORBA operations (such as
name lookup) return an object of class org.omg.CORBA.Object , which must then be
'narrowed' explicitly (effectively, typecast into a more specifi c class). This is
achieved by using a 'helper' class that is generated by the idlj compiler (along with
stubs, skeletons and other fi les).
An IDL specifi cation is contained within a fi le with the suffi x .idl. The surround-
ing structure within this fi le is normally a module (though it may be an interface ),
which corresponds to a package in Java (and will cause a Java package statement
to be generated when the IDL is compiled). The module declaration commences
with the keyword module , followed by the name of the specifi c module (beginning
with a capital letter, even though the Java convention is for a package name to begin
with a lower-case letter). The body of the module declaration is enclosed by curly
brackets and, like C++ (but unlike Java), is terminated with a semi-colon. For a
module called Sales , then, the top level structure would look like this: