Comunicazioni tra processi in Java

D: Come possono interagire due processi Java (due JVM) sullo stesso computer, ovvero leggere i metodi l'uno dell'altro e scambiare oggetti? Sto usando RMI, ma sembra che dovrebbe esistere una soluzione più semplice.

R: La comunicazione tra processi è un importante argomento di programmazione e Java, come qualsiasi ambiente di programmazione serio, risolve il problema. Un approccio, come hai già imparato, è RMI. Un'alternativa strettamente correlata è CORBA. CORBA consente di scambiare oggetti e richiamare dinamicamente metodi in fase di esecuzione. (Per un rapido tutorial su CORBA, vedere la sezione Risorse di seguito.)

Tuttavia, come RMI, CORBA può essere eccessivo in alcune circostanze. Per una semplice comunicazione tra processi, è possibile utilizzare semplici vecchi socket per comunicare tra le applicazioni Java. Gli oggetti possono essere serializzati e trasmessi su socket tramite l'uso delle classi ObjectInputStreame ObjectOutputStream. Sebbene i socket siano più semplici di RMI o CORBA, nulla è definito per te, quindi dovrai definire tutto. Ciò significa che sarà necessario definire i propri protocolli di comunicazione, scrivere i propri servizi di ricerca e connessione, occuparsi della sicurezza e così via. (Per una buona introduzione alla programmazione socket Java, vedere Risorse.)

Ho quasi paura di parlarne, ma potresti sempre utilizzare i file di blocco per la comunicazione. I file di blocco sono un metodo primitivo di comunicazione tra processi sullo stesso sistema. Concettualmente, i file di blocco sono semplici: per comunicare, due o più processi leggono e scrivono su un file ben noto sul filesystem. Poiché questo è un approccio così primitivo, è spesso disapprovato e non considerato una forma legittima di comunicazione tra processi.

Tony Sintes è un consulente senior presso ObjectWave Corporation specializzato in telecomunicazioni. Tony lavora con Java dal 1997 ed è un programmatore Java 1.1 certificato da Sun e sviluppatore Java 2.

Ulteriori informazioni su questo argomento

  • "Introduzione a CORBA", da Java Developer Connection

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

  • "Java Programming Language Basics, Part 2Lesson 1Socket Communications", anch'esso da Java Developer Connection, fornisce un buon tutorial sulla programmazione socket

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

Questa storia, "Interprocess communications in Java" è stata originariamente pubblicata da JavaWorld.