RMI over IIOP is part of the JavaTM 2 Platform, Standard Edition, v1.3. RMI over IIOP provides the ability to write
CORBA applications for the Java platform without learning CORBA
Interface Definition Language (IDL). To work with CORBA applications
in other languages, IDL can be generated from Java programming
language interfaces using the rmic compiler with the -idl option. Use the rmic compiler with the -iiop option to generate IIOP stub and tie classes, rather than Java Remote Messaging Protocol (JRMP) stub and skeleton classes. For older versions of the JDK, the RMI over IIOP compiler is available as a separate download.
RMI over IIOP includes the full functionality of
a CORBA Object Request Broker (ORB). The good news for developers is that the JavaTM Standard Edition, v1.2 and higher includes a fully-functional ORB that is available in every deployment of the Java 2 Platform, Standard and Enterprise Editions. Now you can write Java CORBA code without having to license any other software!
RMI-IIOP combines the best features of Java Remote Method Invocation (RMI) with the best features of Common Object Request Broker Architecture (CORBA). It provides you with a powerful environment in which to do distributed programming using the Java platform.
Like RMI, RMI-IIOP speeds distributed application development by allowing developers to work completely in the Java programming language. When using RMI-IIOP to produce Java technology-based distributed applications,
there is no separate Interface Definition Language (IDL) or mapping to learn. Like RMI, RMI-IIOP provides flexibility by allowing developers to pass any serializable Java object (Objects By Value) between application components. Like CORBA, RMI-IIOP is based on open standards defined with the participation of hundreds of vendors and users in the Object Management Group. Like CORBA, RMI-IIOP uses Internet Inter-ORB Protocol (IIOP) as its communication protocol. IIOP eases legacy application and platform integration by allowing application components written in C++, Smalltalk, and other CORBA supported languages to communicate with components running on the Java platform.
With RMI-IIOP, developers can write remote interfaces in the Java programming language and implement them simply using Java technology and the Java RMI APIs. These interfaces can be implemented in any other
language that is supported by an OMG mapping and a vendor supplied ORB for that language. Similarly, clients can be written in other languages using IDL derived from the remote Java technology-based interfaces. Using
RMI-IIOP, objects can be passed both by reference and by value over IIOP.
The RMI Programming Model
The RMI Programming model enables the programming of CORBA servers and applications
via the rmi API. You can choose to work completely within the Java programming language, using the Java Remote Method Protocol (JRMP) or work with other CORBA-compliant programming languages using the Internet InterORB Protocol (IIOP). This page discusses using IIOP as the transport. For more information on using the JRMP transport, link to the RMI page at http://java.sun.com/j2se/1.3/docs/guide/rmi/.
There are several scenarios that will define how you will want to
create distributed applications. Here are some of them:
If you have been developing CORBA applications using IDL for some
time, you will probably want to stay in this environment. Create the
interfaces using IDL, and define the client and server applications
using the Java programming language to take advantage of its "Write
Once, Run AnywhereTM" portability,
its highly productive implementation environment, and its very robust
platform.
If all of your applications are written in the Java programming
language, you will probably want to use Java RMI to enable
communication between Java objects on different virtual machines and
different physical machines. Using Java RMI without its IIOP option
leverages its strengths of code portability, security, and garbage
collection.
If you writing most of your new applications using the Java
programming language, but need to maintain legacy applications written
in other programming languages as well, you will probably want to use
Java RMI with its IIOP compiler option.