The programmers of the original RMI API generalized the code somewhat to support different implementations, such as a [[Hypertext Transfer Protocol|HTTP]] transport. Additionally, the ability to pass arguments "[[Call by value|by value]]" was added to CORBA in order to be compatible with the RMI interface. Still, the RMI-IIOP and JRMP implementations do not have fully identical interfaces.
RMI functionality comes in the package {{Javadoc:SE|package=java.rmi|java/rmi}}, while most of Sun's implementation is located in the <code>sun.rmi</code> package. Note that with Java versions before Java 5.0 developers had to compile RMI stubs in a separate compilation step using <code>'''rmic'''</code>. Version 5.0 of Java and beyond no longer require this step.