title: Remote Method Invocation
text: # Remote Method Invocation
  
  In informatica, e in particolare nel contesto del linguaggio di programmazione object-oriented Java, Remote Method Invocation (invocazione remota di metodi) o RMI è una tecnologia che consente a processi Java distribuiti di comunicare attraverso una rete.
  
  ## Descrizione
  
  Questa tecnologia include una API (application programming interface) il cui scopo esplicito è quello di rendere trasparenti al programmatore quasi tutti i dettagli della comunicazione su rete. Essa consente infatti di invocare un metodo di un oggetto remoto (cioè appartenente a un diverso processo, potenzialmente su una diversa macchina) quasi come se tale oggetto fosse "locale" (ovvero appartenente allo stesso processo in cui viene eseguita l'invocazione). In questo senso, la tecnologia Remote Method Invocation può essere ricondotta, da un punto di vista concettuale, all'idea di chiamata di procedura remota (RPC) riformulata per il paradigma object-oriented (in cui, appunto, le procedure sono sostituite da metodi).
  
  L'utilizzo di un meccanismo di invocazione remota di metodi in un sistema object-oriented comporta notevoli vantaggi di omogeneità e simmetria nel progetto, poiché consente di modellare le interazioni fra processi distribuiti usando lo stesso strumento concettuale che si utilizza per rappresentare le interazioni fra i diversi oggetti di una applicazione, ovvero la chiamata di metodo. Per contro, meccanismi di comunicazione fra processi remoti più primitivi (come lo scambio messaggi) rappresentano una forma di interazione "estranea" al paradigma object-oriented.
  
  Il termine Remote Method Invocation identifica ufficialmente sia la Application Programming Interface messa a disposizione del programmatore sia il protocollo di rete usato "dietro le quinte" per il dialogo fra le macchine virtuali Java coinvolte nella comunicazione. Dell'Application programming interface e del protocollo esistono due implementazioni di uso comune. La prima (meno recente) ha nome JRMP (Java Remote Method Protocol) ed è implementata sul protocollo TCP; la seconda, nota come RMI-IIOP, è invece basata sul protocollo IIOP della piattaforma middleware CORBA.
  
  Componente fondamentale è il registro Remote Method Invocation, che si occupa di registrare i server remoti e fornire le referenze remote ai richiedenti che effettuano una lookup su questo.
  
  