RMI-IIOP
# RMI-IIOP

RMI-IIOP (read as "RMI over IIOP") denotes the Java Remote Method Invocation (RMI) interface over the Internet Inter-Orb Protocol (IIOP), which delivers Common Object Request Broker Architecture (CORBA) distributed computing capabilities to the Java platform. It was initially based on two specifications: the Java Language Mapping to OMG IDL, and CORBA/IIOP 2.3.1.

With features inherited from CORBA, software components that work together can be written in multiple computer languages and run on multiple computers. In other words, it supports multiple platforms and can make remote procedure calls to execute, subroutines on another computer as defined by RMI.

## History

The Java RMI-IIOP specification was created to simplify the development of CORBA applications, while preserving all major benefits. It was developed by Sun Microsystems and IBM, combining features of Java RMI technology with features of CORBA technology.

## Specification

RMI-IIOP uses generated code for remote objects and does not require supplementary classes for non-trivial data, unlike CORBA. This results in less complexity and a smaller footprint. Both CORBA and RMI-IIOP utilize the General Inter-ORB Protocol communication standard.

RMI-IIOP is largely based on the Object by Value concept that serves as a container or direct replacement for CORBA structures, unions, sequences, arrays and strings. No separate IDL is necessary. Instead, the data structure definitions are discovered automatically via reflection mechanisms. However, it is possible to generate the IDL definitions for the involved RMI-IIOP data structures and use these definitions to exercise finer control between RMI-IIOP and CORBA communicating partners.

Recent versions of RMI-IIOP derive their servants from the standard Servant class. Hence, it is possible to connect them to a CORBA ORB manually, involving one or more of Portable Object Adapters, Portable Interceptors, CORBA naming services, along with other standard CORBA features.

