Java IDL adds CORBA (Common Object Request Broker Architecture)
capability to the
platform, providing standards-based interoperability and
connectivity. Java IDL enables distributed Web-enabled Java
applications to transparently invoke operations on remote
network services using the industry standard IDL (Object
Management Group Interface Definition Language) and IIOP (Internet
Inter-ORB Protocol) defined by the Object Management Group.
Runtime components include Java ORB for distributed
computing using IIOP communication.
Note: This release of the JavaTM 2 Platform, Standard Edition, includes
RMI-IIOP, a technology that integrates Java RMI (Remote Method Invocation)
and Java IDL. RMI-IIOP supersedes Java IDL
for most purposes, by enabling you to write CORBA interfaces
directly in Java rather than in the OMG-specified IDL (Interface Definition Language)
used with Java IDL. For details, see the
Where do I get the IDL-to-Java compiler?
The J2SDK, v.1.3, version of Java IDL includes a new version of the
IDL-to-Java compiler, named idlj. The idlj compiler supports new CORBA-standard features required for RMI-IIOP. The idlj compiler is placed in the SDK's .bin directory by the installer.
For better interoperability, see the note
about not using an interface name for a module name in OMG IDL code.
Should I use Java IDL or RMI-IIOP?
This is a fundamental question and it's important to understand the distinction between these two ways of integrating the Java programming language with CORBA.
Java IDL is for CORBA programmers who want to program in the Java programming language based on interfaces defined in CORBA Interface Definition Language (IDL). This is "business as usual" CORBA programming, supporting Java in exactly the same way as other languages like C++ or COBOL.
RMI-IIOP (Remote Method Invocation over Internet Inter-ORB Protocol) is for Java programmers who want to program to the RMI interfaces, but use IIOP as the underlying transport. RMI-IIOP provides interoperability with other CORBA objects implemented in various languages - but only if all the remote interfaces are originally defined as Java RMI interfaces. It is of particular interest to programmers using Enterprise JavaBeans (EJB), since the remote object model for EJBs is RMI-based.