Java RMI (Remote Method Invocation)

Diamo un attimo uno sguardo ad una delle tecnologie che SUN offre per implementare software di rete.

RMI è l’acronimo di Remote Method Invocation ed è uno dei modi che Java offre nativamente per utilizzare oggetti remoti. Vediamo quindi come RMI funziona.

Remote Method Invocation

Remote Method Invocation

Come potete vedere abbiamo due diverse entità, client e server. Il client conosce soltanto l’interfaccia del servizio, mentre la vera e propria implementazione è disponibile sul server. Con RMI è possibile avere un vero e proprio riferimento all’oggetto remoto, nonostante questo sia presente su una JVM diversa dalla nostra.

In questo modo è possibile progettare in maniera distribuita un’applicazione, spezzettando la logica in diversi componenti distribuiti. Vediamo quindi le diverse fasi per sviluppare un’applicazione standard utilizzando RMI.

 

Registrazione del server

Prima di tutto dobbiamo definire l’interfaccia remota che il client conoscerà.

Ora dobbiamo scrivere una classe che implementa questa interfaccia.

Adesso dobbiamo compilare questi due file utilizzando javac. Dopo aver fatto ciò dobbiamo utilizzare il comando rmic, presente nella cartella bin del SDK standard di Java. Questo compilatore crea lo stub e lo skeleton relativi alla nostra classe.

Lo stub è quello che viene utilizzato dal client, mentre lo skeleton dal server. Per completare l’inizializzazione lato server dobbiamo far partire rmiregistry ovvero il registro che permette di collegare istanze di oggetti Java per i client remoti.

Ora rimane da effettuare il vero e proprio bind del nostro oggetto.

Dal punto di vista del server abbiamo fatto tutto. Ora passiamo al client

 

Client

Nel client dobbiamo avere a disposizione lo stub che abbiamo creato nella fase precedente. Per fare ciò dobbiamo semplicemente copiarlo nel CLASSPATH del client. Procediamo quindi alla vera e propria chiamata.

Ecco quindi completato il nostro breve esempio. Chiaramente l’utilizzo di RMI và ben oltre far 1+1, però come esempio iniziale dovrebbe aver reso bene l’idea. Infatti pensando oltre questo banale esempio potremmo costruire un’architettura di chat su RMI o altri programmini sfiziosi.
Buon divertimento 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *