Obwohl schon etwas in die Jahre gekommen, wird das RMI-Framework auch heute noch an vielen Universitäten in den Kursen rund um Verteilte Systeme gelehrt. Konzeptuell aufbauend auf RPC (Remote Procedure Call) geht es im Gegensatz zu Ansätzen wie SOAP (Simple Object Access Protocol bzw. XML-RPC) und dem heutzutage üblichen HTTP REST
funktionell weit darüber hinaus. Während bei erstgenannten Technologien
Client und Server strikt getrennt sind und der Client lediglich
'passive' Daten dem Server schickt bzw. von ihm empfängt, ermöglicht RMI
daneben noch folgende Szenarien:
- Ein
Server kann dem Client ein weiteres Objekt zurückliefern, wobei darauf
aufgerufene Methoden auf dem Server ausgeführt werden.
- Der Client kann dem Server ein Objekt schicken, sodass umgekehrt der Server Methoden auf dem Client aufruft.
D.h. die strikte Client/Server-Trennung wird dem Peer-2-Peer-Konzept zugunsten aufgeweicht.
Allerdings bestehen auch zwei größere Nachteile:
- Client und Server müssen in Java oder einer anderen JRE-Sprache entwickelt sein
- Standardmäßig unverschlüsselt und dynamische Portaushandlung, was die direkte Nutzung über das Internet verhindert. Abhilfe leisten VPN oder andere Tunneling-Verfahren wie SSH Port Forwarding.