Remote Method Invocation (RMI) is Object Oriented Remote Procedure Call (RPC). Where RPC allows a user to call procedures on remote machines, RMI allows the user to call methods on objects that may or may not exist on a remote machine. This has the advantage of being more natural and makes local and remote object interchangeable.