Remote Method Invocation (RMI, deutsch etwa „Aufruf entfernter Methoden“), gelegentlich auch alsMethodenfernaufruf bezeichnet, ist der Aufruf einerMethode eines entferntenJava-Objekts und realisiert die Java-eigene Art desRemote Procedure Call. „Entfernt“ bedeutet dabei, dass sich das Objekt in einer anderenJava Virtual Machine befinden kann, die ihrerseits auf einem entfernten Rechner oder auf dem lokalen Rechner laufen kann. Dabei sieht der Aufruf für das aufrufende Objekt (bzw. dessen Programmierer) genauso aus wie ein lokaler Aufruf, es müssen jedoch besondereAusnahmen (Exceptions) abgefangen werden, die zum Beispiel einen Verbindungsabbruch signalisieren können.
Auf derClient-Seite kümmert sich der sogenannteStub um den Netzwerktransport. DerStub muss entweder lokal oder über das Netz für den Client verfügbar sein. Vor dem Erscheinen derJava 2 Standard Edition (J2SE) in Version 1.5.0 war derStub eine mit dem RMI-Compilerrmic erzeugte Klasse. Ab der Version 1.5 ist es nicht mehr notwendig, den RMI-Compilerrmic aufzurufen. Das Erstellen desStubs wird von derJava Virtual Machine übernommen.
Entfernte Objekte können zwar auch von einem bereits im Programm bekannten entfernten Objekt bereitgestellt werden, für die erste Verbindungsaufnahme werden aber die Adresse des Servers und ein Bezeichner (ein RMI-URL) benötigt. Für den Bezeichner liefert ein Namensdienst auf dem Server eine Referenz auf das entfernte Objekt zurück. Damit dies funktioniert, muss sich das entfernte Objekt im Server zuvor unter diesem Namen beim Namensdienst registriert haben. Der RMI-Namensdienst wird über statische Methoden der Klassejava.rmi.Naming angesprochen. Der Namensdienst ist als eigenständiges Programm implementiert und wirdRMI Registry genannt.
RMI bezeichnet außerdem ein auf TCP/IP undJRMP basierendesKommunikationsprotokoll, das für entfernte Aufrufe zwischen Java-Objekten verwendet wird, und eine Java-Standard-Klassenbibliothek, mit der diese Aufrufe realisiert werden können. Diese Klassenbibliothek ist Teil derJ2SE. Alternativ kann auchIIOP als Kommunikationsprotokoll eingesetzt werden. Für RMI sind zweiPorts reserviert. Port 1099 ist für die RMI-Registry reserviert, also den Namensdienst. Port 1098 ist für denActivator reserviert.

Als Ergänzung von RMI steht die sogenannteActivation („Aktivierung“) zur Verfügung. Ähnlich der RMI-Registry ist auch dies eine zentrale Anlaufstelle für RMI-Clients. Jedoch kann derActivator auch RMI-Server-Objekte erzeugen und neueVirtuelle Maschinen starten.