Interprozesskommunikation in Java

F: Wie können zwei Java-Prozesse (zwei JVMs) auf demselben Computer interagieren, dh die Methoden des anderen lesen und Objekte austauschen? Ich verwende RMI, aber es scheint, dass es eine einfachere Lösung geben sollte.

A: Interprozesskommunikation ist ein wichtiges Programmierthema, und Java behebt das Problem wie jede ernsthafte Programmierumgebung. Ein Ansatz ist, wie Sie bereits gelernt haben, RMI. Eine eng verwandte Alternative ist CORBA. Mit CORBA können Sie Objekte austauschen und Methoden zur Laufzeit dynamisch aufrufen. (Ein kurzes CORBA-Tutorial finden Sie im Abschnitt Ressourcen unten.)

Wie RMI kann CORBA jedoch unter bestimmten Umständen übertrieben sein. Für eine einfache Interprozesskommunikation können Sie einfache alte Sockets verwenden, um zwischen Java-Anwendungen zu kommunizieren. Objekte können mithilfe der Klassen ObjectInputStreamund serialisiert und über Sockets übertragen ObjectOutputStreamwerden. Während Sockets einfacher als RMI oder CORBA sind, ist für Sie nichts definiert, sodass Sie alles definieren müssen. Dies bedeutet, dass Sie Ihre eigenen Kommunikationsprotokolle definieren, Ihre eigenen Such- und Verbindungsdienste schreiben, für die Sicherheit sorgen usw. müssen. (Eine gute Einführung in die Java-Socket-Programmierung finden Sie unter Ressourcen.)

Ich habe fast Angst, es zu erwähnen, aber Sie könnten immer Sperrdateien für die Kommunikation verwenden. Sperrdateien sind eine primitive Kommunikationsmethode zwischen Prozessen auf demselben System. Konzeptionell sind Sperrdateien einfach: Bei der Kommunikation werden zwei oder mehr Prozesse aus einer bekannten Datei im Dateisystem gelesen und in diese geschrieben. Da dies ein so primitiver Ansatz ist, wird er oft verpönt und nicht als legitime Form der Interprozesskommunikation angesehen.

Tony Sintes ist Senior Consultant bei der ObjectWave Corporation und auf Telekommunikation spezialisiert. Tony arbeitet seit 1997 mit Java und ist ein Sun-zertifizierter Java 1.1-Programmierer und Java 2-Entwickler.

Erfahren Sie mehr über dieses Thema

  • "Einführung in CORBA" aus der Java Developer Connection

    //developer.java.sun.com/developer/onlineTraining/corba

  • "Grundlagen der Java-Programmiersprache, Teil 2Lektion 1Socket Communications", ebenfalls von Java Developer Connection, bietet ein gutes Tutorial zur Socket-Programmierung

    //developer.java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html

Diese Geschichte "Interprozesskommunikation in Java" wurde ursprünglich von JavaWorld veröffentlicht.