Eine abstraktere Art der Programmierung verteilter netzbasierter Anwendungen bietet die RMI-Schnittstelle von Java. RMI steht für Remote Method Invocation und bietet einen Mechanismus ähnlich dem in CORBA definierten RPC (Remote Procedure Call). RMI ermöglicht im wesentlichen die Programmierung von Java-Anwendungen bestehend aus im Netz verteilten Komponenten. Werden die im Package java.rmi definierten Schnittstellen (siehe Abb. 1) verwendet, können Methoden von Objekten, die auf einem entfernten Rechner im Netz existieren (Server) von einem anderen Rechner aus (Client) aufgerufen werden.
Im Gegensatz zu den in Abschnitt 5.2 erläuterten Methoden ist bei Verwendung von RMI keine expizite Erzeugung von Sockets notwendig, ein entfernter Methodenaufruf ist einem normalen Methodenaufruf eines lokalen Objektes syntaktisch gleich. Die Kommunikation zwischen Client und Server geschieht dabei mittels Stubs und Skeletons (siehe Abbildung 2).
Abbildung 2: RMI mittels Stubs und Skeletons
Diese können durch einen speziellen RMI-Compiler (rmic) erzeugt werden. Ein entfernter Methodenaufruf eines Client wird durch das Laufzeitsystem weitergereicht an das lokale Stub-Objekt. Dieses Stub-Objekt erzeugt mittels des Socket-Mechanismus eine Verbindung zum Server, auf dem dann die entsprechende Methode des Objektes aufgerufen wird. Mögliche Rückgabewerte gehen den entgegengesetzten Weg zurück zum Client.