Вы находитесь на странице: 1из 44

Contenido Características de Java RMI

Introducción Arquitectura RMI


Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Programación Distribuida con Java RMI


(Java Remote Method Invocation)

1 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Contenido

• Introducción
• Conceptos Importantes
• ¿Qué es Java RMI?
• Objetivos de Java RMI
• Características de Java RMI
• Crear aplicaciones distribuidas con Java RMI
• Demostración
• Conclusiones
• Referencias

2 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Introducción

En la actualidad, el cómputo distribuido ocupa un lugar


preponderante tanto en las ciencias de la computación como en
la industria, debido a que muchos de los problemas a los que se
enfrentan son inherentemente distribuidos.

3 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Introducción

Dentro del ámbito del cómputo distribuido se incorpora


fuertemente la tecnología orientada a objetos, debido a que en
el paradigma basado en objetos el estado de un programa ya se
encuentra distribuido de manera lógica en diferentes objetos, lo
que hace a la distribución física de estos objetos en diferentes
procesos o computadoras una extensión natural.

4 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Introducción

La invocación remota de métodos de Java es un modelo de


objetos distribuidos, diseñado específicamente para el lenguaje
Java, por lo que mantiene la semántica del modelo de objetos
locales de Java, facilitando de esta manera la implantación y el
uso de objetos distribuidos.

5 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Introducción

En el modelo de objetos distribuidos de Java, un objeto remoto


es aquel cuyos métodos pueden ser invocados por objetos que se
encuentran en una máquina virtual (MV) diferente. Los objetos
de este tipo se describen por una o más interfaces remotas que
contienen la definición de los métodos del objeto que es posible
invocar remotamente.

6 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Introducción

La invocación remota de un método (RMI) es la acción de invocar


un método de una interfaz remota de un objeto remoto.

La invocación de un método de un objeto remoto tiene


exactamente la misma sintaxis de invocación que la de un objeto
local

7 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Aplicación distribuida
• Las funcionalidades de la aplicación han sido separadas.
• Distribución de las unidades funcionales.
• Comunicación.

8 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Objetivos de una aplicación distribuida


• Rendimiento y bajo costo.
• Tolerancia a fallos.
• Funcionalidad.

9 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Programación orientada a objetos


• La programación orientada a objetos se basa en el
concepto de objeto para establecer la estructura modular
de los programas.

10 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Características de la POO
• Modularización.
• Ocultamiento.
• Abstracción
• Herencia y polimorfismo.

11 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Serialización
• Consiste en convertir un objeto en un Stream de bytes
para ser trasmitido por una red.
• En Java los tipos primitivos son serializables por defecto.

12 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conceptos Importantes

• Si se trata de un objeto
1. La clase debe implementar la interfaz Serializable.
2. Se debe generar un serialVersionUID.
3. Los atributos del objeto que se desea serializar deben ser
de tipo primitivo o de tipo Serializable.
4. Asegurarse que la superclase del objeto a serializar es una
clase serializada.
5. Redefinir los métodos equals() y hashcode().

13 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

¿Qué es Java RMI?

Java RMI es una extensión al modelo de objetos de Java para


soportar objetos distribuidos.

RMI (Remote Method Invocation) es un mecanismo que permite


realizar llamadas a métodos de objetos remotos situados en
distintas (o la misma) máquinas virtuales de Java, compartiendo
así recursos y carga de procesamiento a través de varios
sistemas.

14 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Objetivos de Java RMI

Los objetivos que se pretenden alcanzar al soportar objetos


distribuidos en Java, son:
• Proporcionar invocación remota de objetos que se encuentran
en MVs diferentes.
• Soportar llamadas a los servidores desde las aplicaciones.
• Integrar el modelo de objetos distribuidos en el lenguaje Java
de una manera natural, conservando en medida de lo posible
la semántica de los objetos Java.

15 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Objetivos de Java RMI

• Hacer tan simple como sea posible la escritura de aplicaciones


distribuidas.
• Preservar la seguridad proporcionada por el ambiente Java.
• Proporcionar varias semánticas para las referencias de los
objetos remotos (persistentes, no persistentes y de "activación
retardada" ).

16 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Características de Java RMI

• Concurrencia
• Para cada cliente que trate de acceder a un objeto remoto,
el servidor creará un nuevo hilo que se encargará de darle
servicio.

17 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Características de Java RMI

• Nombrado de objetos
• Utiliza la notación URL.
• Por Ejemplo: rmi://localhost:8080/miObjeto.
• Adicionalmente se cuenta con el servidor de nombres
rmiRegistry.

18 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Características de Java RMI

• Paso de parámetros
• La Serialización se encarga de informar al compilador y al
entorno de ejecución de Java que deberá pasar por valor
copias de los objetos de este tipo desde la JVM local a la
JVM remota.

19 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Características de Java RMI

• En una invocación a un método de un objeto remoto puede


contar con los siguientes parámetros
• Primitivos.
• Serializados.
• Objetos remotos.

20 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Características de Java RMI

• Recolector de basura
• En los sistemas distribuidos, las referencias a los objetos
son más complejas y de mayor tamaño que en un entorno
local.
• Una referencia a un objeto remoto indica la localización
del objeto, datos sobre el tipo del objeto e información de
seguridad.

21 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

22 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Capa de Aplicación:
• Implementación real de las aplicaciones cliente y servidor.
• Llamadas a alto nivel para acceder y exportar objetos
remotos.
• Se declaran métodos en una interfaz que herede de
java.rmi.Remote.

23 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Capa de Aplicación (Cont.):


• Una vez que los métodos han sido implementados, el
objeto debe ser exportado.
De forma implícita: si el objeto hereda de la clase UnicastRemoteObject
(paquete java.rmi.server)

De forma explícita: con una llamada al método exportObject () del mismo


paquete.

24 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Capa proxy, o capa Stub – Skeleton:


• Esta capa es la que interactúa directamente con la capa de
aplicación. Todas las llamadas a objetos remotos y
acciones junto con sus parámetros y retorno de objetos
tienen lugar en esta capa.
• http://www.osmosislatina.com/java/rmi.htm

25 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Capa de referencia remota:


• Responsable del manejo de la parte semántica de las
invocaciones remotas. También es responsable de la
gestión de la replicación de objetos y realización de tareas
específicas de la implementación con los objetos remotos,
como el establecimiento de las persistencias semánticas y
estrategias adecuadas para la recuperación de conexiones
perdidas.

26 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Capa de transporte:
• Es la responsable de realizar las conexiones necesarias y
manejo del transporte de los datos de una máquina a otra.
El protocolo de transporte subyacente para RMI es JRMP
(Java Remote Method Protocol), que solamente es
“comprendido” por programas Java.

27 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Arquitectura RMI

• Toda aplicación RMI normalmente se descompone en 2


partes:
• Un Servidor, que crea algunos objetos remotos, crea
referencias para hacerlos accesibles, y espera a que el
cliente los invoque.
• Un Cliente, que obtiene una referencia a objetos remotos
en el servidor, y los invoca.

28 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI

• Se deben seguir los siguientes pasos:


• Diseñar e implementar los componentes de la aplicación
distribuida.
• Compilar los fuentes y generar Stubs.
• Hacer las clases accesibles a la red.
• Arrancar la aplicación.

29 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI

• Diseñar e implementar los componentes de la aplicación


distribuida.
• Se decide la arquitectura de la aplicación y se determina
qué componentes son objetos locales y cuales deberían
ser accesibles remotamente. Este paso incluye.
• Definir las interfaces remotas.
• Implementar los objetos remotos.
• Implementar los clientes.

30 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI

• Compilar los fuentes y Generar Stubs.


• Se utiliza el compilador javac para compilar los ficheros
fuentes de Java que contienen las implementaciones de las
interfaces remotas, las clases del servidor y del cliente.
• Se utiliza el compilador rmic para crear los Stubs de los
objetos remotos. RMI utiliza una clase Stub del objeto
remoto como un proxy en el cliente para que los clientes
puedan comunicarse con un objeto remoto particular.

31 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI

• Hacer accesibles las clases en la red.


• En este paso, se tiene que hacer que todo (los ficheros de
clases Java asociados con las interfaces remotas, los Stubs
y otras clases que se necesiten descargar en los clientes)
sean accesibles a través de un servidor web.

32 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI

• Arrancar la aplicación.
• Arrancar la aplicación incluye ejecutar el registro de
objetos remotos de RMI, el servidor y el cliente.

33 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI
• Definir la interfaz remota.
• La interfaz debe ser pública.
• Debe heredar de la interfaz java.rmi.Remote, para indicar
que puede llamarse desde cualquier Máquina Virtual Java.
• Cada método remoto debe lanzar la excepción
java.rmi.RemoteException, además de las excepciones
que pueda manejar.

34 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI
Ejemplo:

35 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI
• Implementar la interfaz remota.

36 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI
• Implementar la interfaz remota (Cont.)

37 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI
• Posteriormente
• Compilamos la interfaz remota.
• Compilamos las clases que implementan las interfaces
para generar los Stub y Skeleton para mantener la
referencia con el objeto remoto.
• Arrancar el rmiRegistry.
• Lanzar el servidor.

38 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Servidor RMI

Una vez terminado, se compila la InterfazRemotaTiempo.java, Tiempo.java y


ervidorTiempoRMI.java. Estos programas generan el .class
Posteriormente hay que generar el Stub de la clase Tiempo con el comando
rmic TiempoRemoto(nota el archivo generado se debe copiar en el cliente
TiempoRemoto_Stub.class, junto con su Interfaz InterfazRemotaTiempo.class)

39 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Cliente RMI
• Definir la clase para obtener los objetos remotos necesarios.

40 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Crear aplicaciones distribuidas con Java RMI


Desarrollar un Cliente RMI

41 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Conclusiones

• La utilización de objetos en el desarrollo de sistemas


distribuidos, presenta varias ventajas que permiten ocultar las
dificultades inherentes a la distribución en niveles de
abstracción inferiores, dejando así a los programadores la
tarea de resolver únicamente su problema en particular.
• La invocación remota de métodos en Java parte del hecho de
correr sobre una plataforma homogénea y está diseñada para
tomar ventaja de esta característica, lo que le permite
presentar propiedades que otros modelos no poseen.
42 Programación Distribuida con Java RMI
Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Referencias

• Rolando Menchada Méndez y Félix García Carballeira, 2001.


Java RMI. Revista Digital Universitaria. Tomado de:
http://www.revista.unam.mx/vol.2/num1/art3/, el día 20 de
enero del 2012.
• Sun Microsystems. RMI Specification. 2002.
• Santi Caballé y Fatos Xhafa, 2008. Aplicaciones distribuidas en
java con tecnología RMI. Delta Publicaciones.

43 Programación Distribuida con Java RMI


Contenido Características de Java RMI
Introducción Arquitectura RMI
Conceptos Importantes Crear aplicaciones distribuidas con Java RMI
¿Qué es Java RMI? Conclusiones
Objetivos de Java RMI Referencias

Por su atención, Gracias!

44 Programación Distribuida con Java RMI

Вам также может понравиться