Entornos orientados a objetos

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
APLICACIONES DISTRIBUIDAS
Curso de Java “Java para Web” Rogelio Ferreira Escutia.
Curso de Java Java – Redes Rogelio Ferreira Escutia.
Complejidad Computacional
Internet y tecnologías web
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Curso de java básico (scjp)
Introduccion a UML Wilson Peláez Hernández
EXCEPCIONES UNIDAD 5.
Esquema de Mapeo de Base de Datos Relacionales a Objetos
Programación Interactiva Introducción a Java
POLIMORFISMO "una interfaz, múltiples métodos".
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Práctica II: Java RMI.
Common Object Request Broker Architecture
INTRODUCCIÓN A JAVA.
"java del lado del servidor" Servlet y JSP Java Server Pages.
Introducción a Remoting
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Sistemas Operativos Distribuidos
RMI Remote Method Invocation
RMI (Remote Method Invocation)
Programación Orientada a Objetos en Java
Objetos Distribuidos – Aplicaciones RMI
Marzo 2007 Lenguajes Visuales Clase III.
PROGRAMACION DISTRIBUIDA
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Medio de tele-comunicación
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Ejemplo CORBA: Java IDL
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Invocación de Métodos Remotos RMI: Remote Method Invocation
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
Programación Orientada a Aspectos (POA)
Tema 11: Excepciones Antonio J. Sierra.
Patrones Creacionales
JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I
Tema VI: Java RMI Luis López Fernández.
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
Patrones de Diseño: Command
Haga clic para modificar el estilo de subtítulo del patrón 28/04/09 Por ARLEDY SARRIA MOLINA NAZLY DIAZ ARIZA JHOANNA MARQUELLA DESARROLLO DE SOFTWARE.
Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.
Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.
Manuel I. Capel Tuñón Ramón A. Carrasco González
Detalles Generales sobre Java
Invocación Dinámica en CORBA
Patrón de diseño BROKER
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
RMI: Invocación a método remoto, y Java RMI
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Transcripción de la presentación:

Java RMI Sistemas distribuidos María de los Santos Pérez Hernández mperez@fi.upm.es

Entornos orientados a objetos Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí. Un programa solicita servicios invocando los métodos que ofrece un objeto. La invocación de métodos se ve como un paso de mensajes. Sistemas Distribuidos 1

Entornos orientados a objetos op1 DATOS op2 Implementación de métodos (op1, op2, ..., opN) opN Sistemas Distribuidos 2

Entornos orientados a objetos Comunicación entre objetos: Mensajes. Encapsulación. Identidad del objeto (Identificación). Herencia. Acciones. Clases. Instancias. Interfaces vs implementaciones. Herencia múltiple. Enlace dinámico. Recolección de basura. Sistemas Distribuidos 3

Enlace dinámico Shape *aShape; ShapeList *aList; int n = aList ->numberElements(); for (int i=1; i<=n; i++) { aShape = aList -> nthELement(); cout << “Perimeter:” << aShape->perimeter() << “\n”; } El método que se ejecuta se selecciona de acuerdo a la clase del receptor de los mensajes. Sistemas Distribuidos 4

Modelo de objetos Sistemas Distribuidos 5

Modelo de objetos en sistemas distribuidos

Modelo de objetos en sistemas distribuidos Aplicaciones inherentemente distribuidas. Se caracterizan por su complejidad. Sistemas orientados a objetos. Más cercanos al lenguaje natural. Facilitan el diseño y la programación. Sistemas Distribuidos 7

Modelo de objetos en sistemas distribuidos ANSA (1989-1991) fue el primer proyecto que intentó desarrollar una tecnología para modelizar sistemas distribuidos complejos Utilizaba un diseño orientado a objetos Estándares: RMI: invocación de métodos remotos de Java CORBA: expande DCE con servicios orientados a objetos DCOM: versión CORBA de Microsoft Sistemas Distribuidos 8

Modelo de objetos en sistemas distribuidos ROID: Remote Object IDentifier. Java RMI: ObjID. Localización de objetos. Servicio de nombres. Control de concurrencia. Transacciones. Protección de objetos. Recolección de basura de objetos remotos. Sistemas Distribuidos 9

Invocación de métodos remotos (RMI) Comunicación cliente/servidor => RPC. Sistemas distribuidos basados en objetos => RMI (Remote method invocation). RMI: Acción de invocar un método de un interfaz remoto en un objeto remoto. RMI ofrece: Mecanismos para crear servidores y objetos cuyos métodos se puedan invocar remotamente. Mecanismos que permiten a los clientes localizar los objetos remotos. Sistemas Distribuidos 10

Invocación de métodos remotos en Java Java RMI El soporte para RMI en Java está basado en las interfaces y clases definidas en los paquetes java.rmi y java.rmi.server Características de Java RMI: No requiere un IDL (Interface Definition Language). La transferencia de objetos de tipos de datos complejos se lleva a cabo mediante mecanismos de serialización. Es necesario tratar mayor número de excepciones que en el caso de invocación de métodos locales. Sistemas Distribuidos 11

Invocación de métodos remotos en Java Localización de objetos remotos: Servidor de nombres: java.rmi.Naming Ejemplo: BankAccount acct = new BankAccountImpl(); String url = “rmi://java.Sun.COM/account”; // enlazamos una url a un objeto remoto java.rmi.Naming.bind(url, acct); .... // búsqueda de la cuenta acct = (BankAccount) java.rmi.Naming.lookup(url); Sistemas Distribuidos 12

Arquitectura de Java RMI Sistemas Distribuidos 13

Arquitectura de Java RMI Nivel de transporte: se encarga de las comunicaciones y de establecer las conexiones necesarias Nivel de gestión de referencias remotas: trata los aspectos relacionados con el comportamiento esperado de las referencias remotas (mecanismos de recuperación, etc.) Nivel de resguardo/esqueleto (proxy/skeleton) que se encarga del aplanamiento (serialización) de los parámetros proxy: resguardo local. Cuando un cliente realiza una invocación remota, en realidad hace una invocación de un método del resguardo local. Esqueleto (skeleton): recibe las peticiones de los clientes, realiza la invocación del método y devuelve los resultados. Sistemas Distribuidos 14

¿Cómo escribir aplicaciones con Java RMI? Sistemas Distribuidos 15

Ejemplo Sistemas Distribuidos 16

Modelización de la interfaz remota (Sumador) public interface Sumador extends java.rmi.Remote { public int sumar(int a, int b) throws java.rmi.RemoteException; } Sistemas Distribuidos 17

Clase que implementa la interfaz (SumadorImpl) import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class SumadorImpl extends UnicastRemoteObject implements Sumador { public SumadorImpl(String name) throws RemoteException { super(); try { System.out.println("Rebind Object " + name); Naming.rebind(name, this); } catch (Exception e){ System.out.println("Exception: " + e.getMessage()); e.printStackTrace(); } public int sumar (int a, int b) throws RemoteException { return a + b; Sistemas Distribuidos 18

Código del servidor (SumadorServer) import java.rmi.*; import java.rmi.server.*; public class SumadorServer { public static void main (String args[]) { try { SumadorImpl misuma = new SumadorImpl("MiSumador"); } catch(Exception e) { System.err.println("System exception" + e); } Sistemas Distribuidos 19

Registro del servicio Antes de arrancar el cliente y el servidor, se debe arrancar el programa rmiregistry en el servidor para el servicio de nombres. El puerto que utiliza el rmiregistry por defecto es el 1099. rmiregistry [port_number] El método rebind es utilizado normalmente en lugar del método bind, porque garantiza que si un objeto rémoto se registró previamente con dicho nombre, el nuevo objeto reemplazará al antiguo. Sistemas Distribuidos 20

Código en el cliente (SumadorClient) import java.rmi.registry.*; import java.rmi.server.*; public class SumadorClient { public static void main(String args[]){ int res = 0; try { System.out.println("Buscando Objeto "); Sumador misuma = (Sumador)Naming.lookup("rmi://" + args[0] + "/" +"MiSumador"); res = misuma.sumar(5, 2); System.out.println("5 + 2 = " + res); } catch(Exception e){ System.err.println(" System exception"); } System.exit(0); Sistemas Distribuidos 21

Búsqueda Cualquier programa que quiera instanciar un objeto remoto debe realizar una búsqueda de la siguiente forma: Sumador misuma = (Sumador)Naming.lookup("rmi://" + args[0] + "/" +"MiSumador"); El método lookup devuelve una referencia remota a un objeto que implementa la interfaz remota. El método lookup interactúa con rmiregistry. Sistemas Distribuidos 22

Pasos Java RMI: Enlace a un nombre: bind(), rebind() Encontrar un objeto y obtener su referencia: lookup() refObj.nombre_met() Sistemas Distribuidos 23

Cuadro general Cliente Servidor Stub Skeleton Red op1 op2 opN Sistemas Distribuidos 24

¿Cómo se ejecuta? Compilación Generación de los esqueletos javac Sumador.java javac SumadorImpl.java javac SumadorClient.java javac SumadorServer.java Generación de los esqueletos rmic SumadorImpl Ejecución del programa de registro de RMI rmiregistry Ejecución del servidor java SumadorServer Ejecución del cliente java SumadorCliente <host-del-servidor> Sistemas Distribuidos 25

Java RMI vs CORBA Java RMI es más sencillo: Trata sólo con objetos Java. Java RMI permite pasar por valor cualquier objeto que se pueda “serializar”. CORBA es más flexible: Proporciona soporte RMI de objetos implementados en diversos lenguajes y clientes escritos también en distintos lenguajes. CORBA añade bastante complejidad. Sistemas Distribuidos 26

Referencias bibliográficas Distributed Systems. Concepts and Design. 2º edición G. Coulouris, J. Dollimore, T. Kindberg. Addison-Wesley, 1994 http://www.dcs.qmw.ac.uk/research/distrib/book.html Información on-line de Sun (Remote Method Invocation Specification): http://java.sun.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html Distributed Operating Systems A. S. Tanenbaum Prentice-Hall, 1995 Sistemas Distribuidos 27