Communications interprocessus en Java

Q: Comment deux processus Java (deux JVM) sur le même ordinateur peuvent-ils interagir, c'est-à-dire lire les méthodes de l'autre et échanger des objets? J'utilise RMI, mais il semble qu'une solution plus simple devrait exister.

R: La communication interprocessus est un sujet de programmation important et Java, comme tout environnement de programmation sérieux, résout le problème. Une approche, comme vous l'avez déjà appris, est RMI. Une alternative étroitement liée est CORBA. CORBA vous permet d'échanger des objets et d'appeler dynamiquement des méthodes lors de l'exécution. (Pour un didacticiel CORBA rapide, consultez la section Ressources ci-dessous.)

Cependant, comme RMI, CORBA peut être excessif dans certaines circonstances. Pour une communication interprocessus simple, vous pouvez utiliser d'anciennes sockets simples pour communiquer entre les applications Java. Les objets peuvent être sérialisés et transmis via des sockets via l'utilisation des classes ObjectInputStreamet ObjectOutputStream. Bien que les sockets soient plus simples que RMI ou CORBA, rien n'est défini pour vous, vous devrez donc tout définir. Cela signifie que vous devrez définir vos propres protocoles de communication, rédiger vos propres services de recherche et de connexion, prendre soin de la sécurité, etc. (Pour une bonne introduction à la programmation de socket Java, voir Ressources.)

J'ai presque peur de le mentionner, mais vous pouvez toujours utiliser des fichiers de verrouillage pour la communication. Les fichiers de verrouillage sont une méthode primitive de communication entre les processus d'un même système. Conceptuellement, les fichiers de verrouillage sont simples: pour communiquer, deux ou plusieurs processus lisent et écrivent dans un fichier bien connu sur le système de fichiers. Parce qu'il s'agit d'une approche si primitive, elle est souvent mal vue et n'est pas considérée comme une forme légitime de communication interprocessus.

Tony Sintes est un consultant senior chez ObjectWave Corporation qui se spécialise dans les télécommunications. Tony travaille avec Java depuis 1997 et est un programmeur Java 1.1 certifié Sun et un développeur Java 2.

En savoir plus sur ce sujet

  • «Introduction à CORBA», de Java Developer Connection

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

  • «Java Programming Language Basics, Part 2Lesson 1Socket Communications», également de Java Developer Connection, fournit un bon tutoriel sur la programmation de socket

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

Cette histoire, "Communications interprocessus en Java" a été publiée à l'origine par JavaWorld.