The Java programming language already has two APIs for making remote procedure calls, Java IDL and Remote Method Invocation (RMI). Both have an API for marshalling and unmarshalling arguments and for transmitting and receiving procedure calls.
Java IDL is based on the Common Object Request Broker Architecture (CORBA) and uses the Object Management Group's Interface Definition Language (OMG IDL). RMI is based on RPC where both the method calls and the methods being invoked are in the Java programming language—although with RMI over IIOP, the methods being invoked may be in another language.
The Java API for XML-based RPC (page 305) (JAX-RPC) is another API for making remote procedure calls. JAX-RPC uses SOAP to make a remote procedure call (RPC).