RMI - Remote Method Invocation (Java)

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:

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.
Englischsprachige Anleitung von Oracle: https://docs.oracle.com/javase/8/docs/technotes/guides/rmi/hello/hello-world.html und detaillierter unter https://docs.oracle.com/javase/tutorial/rmi/overview.html