Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Módulo 9: Desarrollo de Aplicaciones.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Introducción a C#.
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.
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Curso de Java Capitulo 7: Continuación Poo Profesor:
EXCEPCIONES UNIDAD 5.
Lenguaje de programación Java
“GUI para Conexiones y Transferencia de Datos Seguros”
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Resolución de Problemas y Algoritmos Buffer - Read & Readln
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Introducción a Remoting
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
RMI (Remote Method Invocation)
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
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.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
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.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Tema 6: Clases Antonio J. Sierra.
Igor Santos Grueiro. Ahora tenemos datos y datos …
Archivos y Búsqueda Secuencial
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
Invocación de Métodos Remotos RMI: Remote Method Invocation
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
Manejo de Punteros y objetos en memoria dinámica en C++
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.
Java.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile – Av. Tupper 2007, Santiago - Fono: Fax: Módulo 8: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Primeros pasos en java. Definición de las librerías import java.applet.Applet; //cuando se crea un applet import java.awt.*; //importa todos los paquetes.
Arreglos de Objetos.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Detalles Generales sobre Java
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Clases “ Es una Abstracción de un elemento del mundo real ”
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,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Tema 1: Concurrencia con Java
Transcripción de la presentación:

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 1 Java Spaces

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 2 JavaSpaces es parte de Jini (spec.).  Jini es una colección de especificación de servicios  Ayuda a que ellos se encuentren mutuamente en la red  Máquinas provistas de Jini pueden encontrar servicios en la red a la cual se conectan y ofrecen los suyos  Las máquinas son clientes y servidores a la vez

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 3 Ejemplo ? ?

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 4 Services provistos por Jini Lookup Services (reggie) rmid HTTP-Server (tools.jar) Transaction Services (mahalo.jar) JavaSpace (outriggger) Fiddler Mercury Norm

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 5 ¿ Qué provee Jini concretamente ?  Un espacio en el cual se pueden guardar objetos, recuperar o sacar una coipa de ellos.  Métodos : write, read, take, (readIfExists, takeIfExists)  Un mecanismo para proveer completitud de transacciones  Un mecanismo para notificación de eventos

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 6 Los métodos write y read write Space read A copy

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 7 El método take X write Space take Existe solo aquí

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 8 Cómo crear un JavaSpace en una máquina  Un JavaSpace puede crearse levantando el servicio outrigger de Jini con un nombre como parámetro. Este será el nombre del espacio.  Pero antes de poder levantar el outrigger hay que levantar:  El servidor http que viene en tools.jar  Un rmid  El servidor de lookup rigger  El servidor de transacciones mahalo

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 9 Comandos  java -jar c:\jini_1\tools.jar –dir C:\jini1_1  rmid -J-Dsun.rmi.activation.execPolicy=none.  java -Djava.security.policy=policy.txt -jar C:\jini1_1\reggie.jar policy.txt reggie_log public  java -Djava.security.policy=policy.txt -jar $JINI/mahalo.jar dl.jar policy.txt txn_log public  java -Djava.security.policy=policy.txt - Djava.rmi.server.codebase= /outrigger-dl.jar - Dcom.sun.jini.outrigger.spaceName=JavaSpaces -jar C:\jini1_1\transient-outrigger.jar public

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 10 Como escribir objetos en el espacio  Las clases definidas por el usuario deben declarar que implementan la interfaz Entry.  Esto es solo una marca para decirle a Java que un objeto de esta clase puede ser escrito en un JavaSpace  Los campos (variables) en esta clase deben ser objetos. Si se necesitan primitivas (como nímeros enteros) deben usarse wrappers  Integer i = new Integer(4)

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 11 Ejemplo de una clase import net.jini.core.entry.Entry; public class Message implements Entry { public String content; public Integer counter; public Message() { //this is mandatory !!!!! } public Message(String content, int initVal) { this.content = content; counter = new Integer(initVal); } public String toString() { return content + counter + " times."; } public void increment() { counter = new Integer(counter.intValue() + 1); }

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 12 Guardando objetos en un espacio import net.jini.core.lease.Lease; import net.jini.space.JavaSpace; import java.io.*; public class WriteMessages { public static void main(String[] args) { try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); JavaSpace space = SpaceAccessor.getSpace(); System.out.print("Message ? "); String m = in.readLine(); Message2 msg = new Message2(m,0); space.write(msg, null, Lease.FOREVER); } catch (Exception e) {e.printStackTrace(); } }

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 13 Recuperando objetos import java.io.*; import net.jini.core.lease.Lease; import net.jini.space.JavaSpace; public class ReadMessage { public static void main(String[] args) { try { Message2 template; JavaSpace space = SpaceAccessor.getSpace(); BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Message (**=null)? "); String m = in.readLine(); template = new Message2(m); Message2 result = (Message2)space.read(template,null,Long.MAX_VALUE); System.out.println("Got "+result.toString()); } catch (Exception e) {e.printStackTrace(); }

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 14 Reglas para recuperar objetos  EL objeto debe coincidir con la estructura y contenidos del template  Referencias a null actúan como comodines  No hay reglas para decidir qué objeto será recuperado si hay más de uno que coincide  Los parámetros: un objeto template, una transacción (por ahora null) y un timeout por si no se encuantra un objeto que coincida con el dado. Long.MAX_VALUE hace que se espere para siemre

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 15 Tomando objetos  Funciona igual que el read pero borra el objeto que se lee del espacio  Para evitar deadlocks o esperas demasiado largas existe readIfExists y takeIfExists  Su estructura es la misma que read y write pero retornarán de inmediato si no existe el objeto buscado  La clase SpaceAccessor con el método getSpace no es standard, la usamos para simplificar el código y la explicación en este curso

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 16 Un arreglo “distribuido” index content index content index content WriteElements ReadElements UpdateElements

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 17 Sincronizando clientes Ticket Dispenser number Customer(.java) - Toma un número, - incrementa el Ticket Disp. - Toma el objeto de servicio - espera para ser servido - incrementa el número de servicio Un cliente será servido sólo si tiene el objeto de número de servicio Al principio el prog. TicketInit crea y pone en el espacio los dos objetos Service Number number

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 18 El Chatting Tail number Un objeto tail in indica cuál es el número del último mensaje para ese Channel Cada Message tiene un contenido y un número correlativo El canal identifica el „chat- thread“ Message number Message number Message number Channel

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 19 Archivos:  Tail: implementa la clase del objeto que marca el número del último mensaje para un canal de chat  MessageChat: contiene un mensaje  CreateChannel: crea un “canal” de chat nuevo (con un nombre y tail en 0)  ChatSpace: programa que permite usar el espacio para el chat (ChatClient), inicia 2 threads (leer y escribir)  ChannelChatRead: lee mensajes del espacio para un channel determinado  ChannelChatWrite: escribe mensajes en el espacio para un channel determinado

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 20 Eventos Distribuidos 1- Crear un objeto Listener 2- Notificar al servidor sobre el interés en recibir los eventos 3- Un objeto que coincide el template entra en el espacio 4- El oidor es notificado

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 21 Cómo escribir un Listener import java.rmi.server.*; import java.rmi.RemoteException; import net.jini.core.event.*; import net.jini.space.JavaSpace; public class Listener implements RemoteEventListener { private JavaSpace space; public Listener(JavaSpace space) throws RemoteException { this.space = space; UnicastRemoteObject.exportObject(this); } public void notify(RemoteEvent ev) { Message template = new Message(); try { Message result = (Message)space.read(template, null, Long.MAX_VALUE); System.out.println(result.content); } catch (Exception e) { e.printStackTrace(); }

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 22 Un programa que escucha import net.jini.core.lease.Lease; import net.jini.space.JavaSpace; public class HelloWorldNotify { public static void main(String[] args) { JavaSpace space = SpaceAccessor.getSpace(); try { Listener listener = new Listener(space); Message template = new Message(); space.notify(template, null, listener, Lease.FOREVER, null); } catch (Exception e) { e.printStackTrace(); }

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 23 Llamando al método notify  Después de esto, cuando cualquier programa que escriba un mensaje en el espacio (no importa el contenido) el objeto Listener del programa HelloWorldNotify será „notificado“, esto es, el método notify será llamado Message msg = new Message(); msg.content = "Hello World"; space.write(msg, null, Lease.FOREVER);

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 24 Transacciones  Es un conjunto de operaciones que deben realizarse atómicamente, o sea, todas o ninguna.  En JavaSpaces se puede definir un conjunto de operaciones write, read, y take que deban ser realizadas de esta manera.  Para esto, un objeto transaction debe ser creado y pasado como parámetro con cualquier operación que deba pertenecer a la transacción  Una vez que todas las opreaciones write, read, take, con la misma transacción han sido “ejecutadas” una operación commit va a ejecutar todas o nunguna.  En el ultimo caso se lanza una exception

Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores 25 Ejemplo JavaSpace space = SpaceAccessor.getSpace(); TransactionManager mgr = TransactionManagerAccessor.getManager(); //get a reference to the transaction manager service Try { Transaction.Created trc = TransactionFactory.create(mgr, 3000); Transaction txn = trc.transaction; SharedVar template = new SharedVar(url); SharedVar counter = (SharedVar) space.take(template, txn, Long.MAX_VALUE); counter.increment(); space.write(counter, txn, Lease.FOREVER); txn.commit(); } catch (Exception e) { System.err.println("Transaction failed"); return; }