Rmi sistemas distribuidos
O RMI (Remote Method Invocation) é uma tecnologia suportada pela plataforma Java que facilita o desenvolvimento de aplicações distribuídas. Como o próprio nome indica, o RMI permite ao programador invocar métodos de objetos remotos, ou seja, que está alojado em máquinas virtuais Java distinta, duma forma muito semelhante às invocações a objetos locais. De certa forma, à custa de algum esforço adicional de engenharia de software, o programador pode desenvolver aplicações totalmente distribuídas como se de aplicações locais se tratassem, sendo quase toda a comunicação entre máquinas virtuais Java assegurada transparentemente pelo próprio RMI.
Evidentemente, há algumas diferenças fundamentais entre uma aplicação distribuída e uma aplicação não distribuída. A principal é a de que numa aplicação distribuída há uma infra-estrutura de comunicação subjacente que impõe um conjunto de condicionalismos à própria aplicação: risco de falhas de comunicação, latências variáveis, limites de banda, falha de servidores, etc... O RMI permite lidar com facilmente algumas destas contingências embora, como iremos ver futuramente, não com todas. Por outro lado, um ambiente distribuído significa normalmente (embora não necessariamente) que existe um suporte heterogéneo de hardware e de plataformas (Unix, Linux, Windows, etc.). Como é usado a tecnologia Java, o RMI torna esta heterogeneidade menos preocupante, resultando numa boa solução global para o programador no desenvolvimento de aplicações distribuídas.
2. Conceitos Básicos
Uma noção central ao RMI é o da separação entre interface e implementação de uma classe, que é aliás compatível com a filosofia OO. A particularidade mais relevante desta separação é que o RMI permite que a interface e a respectiva implementação se localizem em JVM's diferentes. O RMI torna possível que uma determinada aplicação cliente adquira uma interface (que define o comportamento) referente a uma classe (que contém a implementação) que