3.6 Patrón Factory y objetos persistentes. Políticas del POA asociadas

Tamaño: px
Comenzar la demostración a partir de la página:

Download "3.6 Patrón Factory y objetos persistentes. Políticas del POA asociadas"

Transcripción

1 3.6 Patrón Factory y objetos persistentes. Políticas del POA asociadas

2 Introducción Una factoría es un objeto CORBA que proporciona operaciones para crear otros objetos CORBA Juega un papel similar al new de Java/C++ El objeto se crea potencialmente en otro proceso/máquina Polimorfismo Es posible tener varias implementaciones de un interfaz factoría, cada una creando objetos de tipos concretos distintos pero que implementan el mismo interfaz <<IDL interface>> ThermostatFactoryLocator + lookup(amodel : Model) : ThermostatFactory + register(amodel : Model, factory : ThermostatFactory) : void <<return>> <<IDL interface>> ThermostatFactoryLocator + create(identifier: DeviceIdentifier, amodel : Model, alocation : Location, nominaltemperature : Temperature) : Thermostat

3 es::udc::fbellas::corbaws::tcsfactory::idl <<IDL interface>> Controller + findbyidentifier(identifier : DeviceIdentifier) : ThermostatListItem + findbylocation(alocation : Location) : ThermostatList + create(identifier : DeviceIdentifier, amodel : Model, alocation : Location, nominaltemperature : Temperature) : Thermostat <<create>> <<IDL interface>> Thermostat + getstate() : ThermostatState + setnominaltemperature(value : Temperature) : void + setlocation(alocation : Location) : void + destroy() : void

4 La operación destroy Debe destruir el objeto CORBA Invocar una operación sobre un objeto destruido, hará que el ORB lance la excepción OBJECT_NOT_EXIST Dónde colocar la operación destroy? En la factoría Problema: para destruir un objeto es preciso recordar la factoría que lo creó En el objeto a destruir Para destruir el objeto basta invocar destroy sobre él

5 Factorías no combinadas vs combinadas (1) Factoría no combinada module es { module udc {... //... interface ThermometerFactory { Thermometer create(in DeviceIdentifier identifier, in Model amodel, in Location alocation) raises(duplicateidentifier,...); ; interface ThermostatFactory { Thermostat create(in DeviceIdentifier identifier, in Model amodel, in Location alocation, in Temperature nominaltemperature) raises(duplicateidentifier,...); ; ;

6 Factorías no combinadas vs combinadas (y 2) Factoría combinada module es { module udc {... //... interface ThermometerFactory { Thermometer createthermometer(in DeviceIdentifier identifier, in Model amodel, in Location alocation) raises(duplicateidentifier,...); Thermostat createthermostat(in DeviceIdentifier identifier, in Model amodel, in Location alocation, in Temperature nominaltemperature) raises(duplicateidentifier,...); ; ; Y si el software que gestiona termostatos y termómetros no está disponible para la misma plataforma? La implementación de una de las operaciones tendría que delegar en otra factoría El diseño anterior no tiene este problema

7 Otros aspectos El interfaz es::udc:fbellas::corbaws::tcsfactory::i dl::controller mezcla en un solo interfaz la funcionalidad de creación y búsqueda Un diseño más puro dividiría este interfaz en dos Factory::create Controller::findByIdentifier y Controller::findByLocation Creaciones en masa Cuado sea frecuente crear n objetos de golpe, se puede proporcionar una operación de creación que retorna una lista con los objetos creados (más eficiente que invocar n veces la operación simple create)

8 Caso de estudio: Creación de un servidor sencillo de objetos persistentes Ejemplo es::udc::fbellas::corbaws::tcsfactory Todos los objetos están en memoria, pero serán persistentes (con el significado de persistente en CORBA) Necesitamos aprender algo más sobre el POA La estructura de una IOR (referencia) Las políticas del POA El mapa de objetos activos Activación de servants Desactivación de servants Creación de POAs

9 Estructura de una IOR Identificador de repositorio Dirección de transporte Clave del objeto Nombre del POA Identificador del objeto La clave del objeto está en un formato propietario (específico a cada ORB)

10 Políticas del POA (1) Cada POA creado tiene 7 políticas asociadas Las políticas determinan las características de los objetos creados con el POA correspondiente Todas derivan de CORBA::Policy module CORBA { ; typedef unsigned long PolicyType; interface Policy { readonly attribute PolicyType policy_type; Policy copy(); void destroy(); ; typedef sequence<policy> PolicyList;

11 Políticas del POA (y 2) El módulo PortableServer especifica las 7 políticas LifespanPolicy IdAssignmentPolicy ImplicitActivationPolicy ThreadPolicy IdUniquenessPolicy RequestProcessingPolicy ServantRetentionPolicy

12 LifespanPolicy (1) Especifica si los objetos son persistentes o transitorios ( transient ) Una referencia a un objeto persistente sobrevive a caídas del servidor (el ORB re-arrancará el servidor si es preciso) Un objeto persistente también sobrevive a caídas del servidor, pero es responsabilidad del programador guardar/recuperar su estado enum LifespanPolicyValue {TRANSIENT, PERSISTENT; inteface LifespanPolicy : CORBA::Policy { readonly attribute LifespanPolicyValue value; ; TRANSIENT es el valor que usa el Root POA, y el valor por defecto si no se especifica uno cuando se crea un POA

13 Como norma general LifespanPolicy (y 2) Un objeto debe ser persistente cuando su tiempo de vida es potencialmente grande (días, meses, años,..) Ej.: un termostato, un usuario, etc. Un objeto deber ser transitorio si sólo existe durante un espacio de tiempo pequeño (ej.: durante la sesión de un usuario) Ej.: un objeto callback, etc. Objetos colección y/o factoría Normalmente deben ser persistenes, aunque los objetos que creen sean transitorios (porque el objeto colección y factoría siempre existe) En el servicio de nombres sólo se deben registrar objetos persistentes Evita que queden referencias colgadas ( dangling references )

14 IdAssignmentPolicy Especifica si los identificadores de objeto son creados por el ORB o por la aplicación enum IdAssignmentPolicyValue {USER_ID, SYSTEM_ID; inteface IdAssignmentPolicy : CORBA::Policy { ; readonly attribute IdAssignmentPolicyValue value; SYSTEM_ID es el valor que usa el Root POA, y el valor por defecto si no se especifica uno cuando se crea un POA

15 ImplicitActivationPolicy Especifica si un servant se puede activar implícitamente o debe ser activado explícitamente enum ImplicitActivationPolicyValue { IMPLICIT_ACTIVATION, NO_IMPLICIT_ACTIVATION; inteface ImplicitActivationPolicy : CORBA::Policy { ; readonly attribute ImplicitActivationPolicyValue value; IMPLICIT_ACTIVATION es el valor que usa el Root POA; NO_IMPLICIT_ACTIVATION es el valor por defecto si no se especifica uno cuando se crea un POA

16 ThreadPolicy Especifica si las peticiones a los objetos de este POA se serializan o si puede usar algún modelo multithread enum ThreadPolicyValue { ; ORB_CTRL_MODEL, SINGLE_THREAD_MODEL inteface ThreadPolicy : CORBA::Policy { ; readonly attribute ThreadPolicyValue value; ORB_CTRL_MODEL es el valor que usa el Root POA, y el valor por defecto si no se especifica uno cuando se crea un POA

17 Creación de políticas module PortableServer { ; interface POA { ; LifespanPolicy create_lifespan_policy( in LifespanPolicyValue value); IdAssignmentPolicy create_id_assignment_policy( in IdAssignmentPolicyValue value); ImplicitActivacionPolicy create_implicit_activation_policy( in ImplicitActivacionPolicyValue value); ThreadPolicy create_thread_policy( //... in ThreadPolicyValue value);

18 El mapa de objetos activos (MOA) Id. objeto Ptr. servant Id. objeto IOR servants

19 Activación de servants Añade una entrada al MOA Activación implícita Servant::_this(org::omg::CORBA::ORB) (apartado 3.3) Activación explícita typedef sequence<octect> ObjectId; //... interface POA { //... exception ObjectAlreadyActive {; exception ServantAlreadyActive {; exception WrongPolicy {; ; void activate_object_with_id( in ObjectId id, in Servant p_servant) raises(objectalreadyactive, ServantAlreadyActive, WrongPolicy);

20 Desactivación de servants interface POA { //... exception ObjectNotActive {; void deactive_object(in ObjectId oid) raises(objectnotactive, WrongPolicy); ; Elimina la entrada del MOA El ORB no elimina la entrada inmediatamente, sino que espera a que todas las peticiones activas sobre ese servant terminen

21 Creación de POAs module PortableServer { interface POAManager; exception AdapterAlreadyExists {; exception InvalidPolicy { unsigned short index; ; ; interface POA { POA create_poa(in string adapter_name, in POAManager manager, in CORBA::PolicyList policies) raises(adapteralreadyexists, InvalidPolicy); //... ;

22 Ejemplo tcsfactory Misma estructura de paquetes que tcs Principales cambios Paquete es::udc::fbellas::corbaws::tcsfactory::idl Operación para crear un termostato (Controller) y para destruirlo (Thermostat) Paquete es::udc::fbellas::corbaws::tcsfactory::serve r::wrappers Los termostatos y el controlador son objetos persistentes Paquete es::udc::fbellas::corbaws::tcsfactory::admin ::shell::commands Nuevos comandos para crear y destruir termostatos

23 es::udc::fbellas::corbaws::tcsfactory::server::wrappers (1) ControllerPOA es::udc::fbellas::corbaws::thermostats::drivermanager <<use>> ControllerImpl - thermostatimpls : java::util::map - thermostatpoa : org::omg::portableserver::poa + ControllerImpl(thermostatPOA : org::omg::portableserver::poa) remove(identifier : String) : void ThermostatPOA 1 1 <<use>> 0..n ThermostatImpl <<Interface>> es::udc::fbellas::corbaws::thermostats::driver 1 - driver : es::udc::fbellas::corbaws::thermostats::driver - identifier : String - model : String - nominaltemperature : short - location : String <<static>> - controllerimpl : ControllerImpl + ThermostatImpl(identifier : String, driver : es::udc::fbellas::corbaws::thermostats::driver) <<static>> setcontrollerimpl(controllerimpl : ControllerImpl) : void

24 es::udc::fbellas::corbaws::tcsfactory::server::wrappers (y 2) WrappersFacade + run(args : String[]) : void * Crea dos POAs persistentes: uno para el controlador y otro para los termostatos. * Crea una instancia de "ControllerImpl", la registra en el servicio de nombres con el nombre "es/udc/fbellas/corbaws/tcsfactory/controller", y se queda escuchando peticiones.

25 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (1) public class WrappersFacade { //... private static POA createpersistentpoa(string name, POA parentpoa) throws AdapterAlreadyExists, InvalidPolicy { /* Create policies. */ Policy[] policies = new Policy[2]; policies[0] = parentpoa.create_lifespan_policy( LifespanPolicyValue.PERSISTENT); policies[1] = parentpoa.create_id_assignment_policy( IdAssignmentPolicyValue.USER_ID); /* Create POA */ POA poa = parentpoa.create_poa(name, parentpoa.the_poamanager(), policies); /* Destroy policies. */ for (int i=0; i<policies.length; i++) { policies[i].destroy(); /* Return the poa. */ return poa;

26 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (2) public final static void run (String args[]) { ORB orb = null; try { /* Initialize ORB. */ orb = ORB.init(args, null); /* Get a reference to the Root POA. */ org.omg.corba.object rootpoaobject = orb.resolve_initial_references("rootpoa"); POA rootpoa = POAHelper.narrow(rootPOAObject); /* Activate the Root POA's manager. */ POAManager rootpoamanager = rootpoa.the_poamanager(); rootpoamanager.activate(); /* Register thermostat drivers. */ DriverManager.register(new Acme1DriverAdapter()); DriverManager.register(new Acme2DriverAdapter());

27 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (3) /* Create POAs. */ POA controllerpoa = createpersistentpoa("controllerpoa", rootpoa); POA thermostatpoa = createpersistentpoa("thermostatpoa", controllerpoa); /* * Create a servant for the controller, activate it and obtain * a reference to it. */ ControllerImpl controllerimpl = new ControllerImpl(thermostatPOA); controllerpoa.activate_object_with_id( new String("controller").getBytes(), controllerimpl); org.omg.corba.object controller = controllerpoa.servant_to_reference(controllerimpl);

28 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (4) Comentario Usar un POA para cada tipo de objeto persistente Evita conflictos de identificadores Las referencias a los termostatos y al controlador se han obtenido con... interface POA { exception ServantNotActive {; exception WrongPolicy {; Object servant_to_reference(in Servant serv) raises(servantnotactive, WrongPolicy); // y no con _this _this trabaja con el POA que devuelve el método _default_poa (del servant), que por defecto devuelve el RootPOA Para usar _this en vez de la alternativa servant_to_reference, habría que redefinir este método en las clases ThermostatImpl y ControllerImpl

29 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (5) << Register controller in Naming service with name es/udc/fbellas/corbaws/tcsfactory/controller. >> << Install ORB loop terminator. >> /* Allow the ORB to start processing requests. */ orb.run();

30 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::wrappersfacade (y 6) catch (Exception e) { e.printstacktrace(); finally { try { if (orb!= null) { /* * We intentionally do not remove controller's * name from Naming service. */ orb.destroy(); catch (Exception e) { e.printstacktrace();

31 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::thermostatimpl (1) public class ThermostatImpl extends ThermostatPOA { //... public ThermostatState getstate() throws es.udc.fbellas.corbaws.tcsfactory.idl.malfunctioningexception { try { /* "identifier" and "model" never change. */ ThermostatState state = new ThermostatState(); state.fidentifier = identifier; state.fmodel = model; synchronized(this) { /* * The temperature is the only attribute that can not be * cached. */ state.ftemperature = driver.gettemperature(identifier); state.fnominaltemperature = nominaltemperature; state.flocation = location; return state;

32 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::thermostatimpl (2) catch (es.udc.fbellas.corbaws.thermostats. MalfunctioningException e) { throw CommonIDLTypeConversor.toIDL(e); catch (es.udc.fbellas.corbaws.thermostats. ThermostatNotFoundException e) { // Thermostat has just been destroyed throw new OBJECT_NOT_EXIST("Thermostat '" + identifier + "' does not exist");

33 es::udc::fbellas::corbaws::tcsfactory::server::wrappers:: ThermostatImpl (y 3) public void destroy() throws es.udc.fbellas.corbaws.tcsfactory.idl.malfunctioningexception { //... // class try { synchronized(this) { driver.destroy(identifier); controllerimpl.remove(identifier); catch (es.udc.fbellas.corbaws.thermostats. MalfunctioningException e) { throw CommonIDLTypeConversor.toIDL(e); catch (es.udc.fbellas.corbaws.thermostats. ThermostatNotFoundException e) { // Thermostat has just been destroyed throw new OBJECT_NOT_EXIST("Thermostat '" + identifier + "' does not exist");

34 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (1) class ControllerImpl extends ControllerPOA { private Map thermostatimpls = new HashMap(); private POA thermostatpoa; ControllerImpl(POA thermostatpoa) throws es.udc.fbellas.corbaws.thermostats.malfunctioningexception, es.udc.fbellas.corbaws.thermostats.thermostatnotfoundexception, ServantAlreadyActive, ObjectAlreadyActive, WrongPolicy { this.thermostatpoa = thermostatpoa; /* Set ControllerImpl to thermostats. */ ThermostatImpl.setControllerImpl(this);

35 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (2) /* Activate thermostats in memory. */ Iterator drivers = DriverManager.drivers(); while (drivers.hasnext()) { Driver driver = (Driver)drivers.next(); String model = driver.getmodel(); Iterator identifiers = driver.findallidentifiers().iterator(); while (identifiers.hasnext()) { String identifier = (String)identifiers.next(); ThermostatImpl thermostatimpl = new ThermostatImpl(identifier, driver); thermostatimpls.put(identifier, thermostatimpl); thermostatpoa.activate_object_with_id( identifier.getbytes(), thermostatimpl);

36 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (3) public ThermostatListItem findbyidentifier(string identifier) throws es.udc.fbellas.corbaws.tcsfactory.idl.thermostatnotfoundexception, es.udc.fbellas.corbaws.tcsfactory.idl.malfunctioningexception { try { synchronized(this) { ThermostatImpl thermostatimpl = (ThermostatImpl)thermostatImpls.get(identifier); if (thermostatimpl == null) { throw new es.udc.fbellas.corbaws.tcsfactory.idl. ThermostatNotFoundException(identifier); Thermostat thermostat = ThermostatHelper.narrow( thermostatpoa.servant_to_reference(thermostatimpl)); return new ThermostatListItem(thermostat, thermostatimpl.getstate());

37 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (4) catch (OBJECT_NOT_EXIST e) { // Thermostat has just been destroyed throw new es.udc.fbellas.corbaws.tcsfactory.idl. ThermostatNotFoundException(identifier); catch (ServantNotActive e) { // It can only be thrown by error. throw new es.udc.fbellas.corbaws.tcsfactory.idl. MalfunctioningException(e.getMessage()); catch (WrongPolicy e) { // It can only be thrown by error. throw new es.udc.fbellas.corbaws.tcsfactory.idl. MalfunctioningException(e.getMessage());

38 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (5) public ThermostatListItem[] findbylocation(string alocation) throws es.udc.fbellas.corbaws.tcsfactory.idl.malfunctioningexception { Collection thermostatlist = new ArrayList(); synchronized(this) { Iterator thermostatimpliterator = thermostatimpls.values().iterator(); while (thermostatimpliterator.hasnext()) { try { ThermostatImpl thermostatimpl = (ThermostatImpl)thermostatImplIterator.next(); ThermostatState state = thermostatimpl.getstate(); if (state.flocation.equals(alocation)) { Thermostat thermostat = ThermostatHelper.narrow( thermostatpoa.servant_to_reference(thermostatimpl)); ThermostatListItem thermostatlistitem = new ThermostatListItem(thermostat, state); thermostatlist.add(thermostatlistitem);

39 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (6) catch (OBJECT_NOT_EXIST e) { // Nothing (thermostat has just been destroyed). catch (ServantNotActive e) { // It can only be thrown by error. throw new es.udc.fbellas.corbaws.tcsfactory.idl. MalfunctioningException(e.getMessage()); catch (WrongPolicy e) { // It can only be thrown by error. throw new es.udc.fbellas.corbaws.tcsfactory.idl. MalfunctioningException(e.getMessage()); /* Return thermostats in location. */ return (ThermostatListItem[])thermostatList.toArray( new ThermostatListItem[0]);

40 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (7) public Thermostat create(string identifier, String amodel, String alocation, short nominaltemperature) throws es.udc.fbellas.corbaws.tcsfactory.idl.duplicatethermostatexception, es.udc.fbellas.corbaws.tcsfactory.idl.incorrectmodelexception, es.udc.fbellas.corbaws.tcsfactory.idl.temperatureoutofrangeexception, es.udc.fbellas.corbaws.tcsfactory.idl.malfunctioningexception { try { synchronized(this) { /* * Check if the identifier already corresponds to an existing * thermostat. */ if (thermostatimpls.get(identifier)!= null) { throw new es.udc.fbellas.corbaws.tcsfactory.idl. DuplicateThermostatException(identifier);

41 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (8) /* Initialize the device. */ Driver driver = DriverManager.get(aModel); driver.create(identifier, alocation, nominaltemperature); /* Create servant. */ ThermostatImpl thermostatimpl = new ThermostatImpl(identifier, driver); /* Insert servant in the map. */ thermostatimpls.put(identifier, thermostatimpl); /* Add the servant to the Active Object Map. */ thermostatpoa.activate_object_with_id( identifier.getbytes(), thermostatimpl); /* Return reference. */ return ThermostatHelper.narrow( thermostatpoa.servant_to_reference(thermostatimpl)); catch ( <<... >> ) { <<... >>

42 es::udc::fbellas::corbaws::tcsfactory::server::wrappers::controllerimpl (y 9) void remove(string identifier) throws es.udc.fbellas.corbaws.thermostats.malfunctioningexception { /* Remove servant from the map and from the active object map. */ try { synchronized (this) { thermostatimpls.remove(identifier); thermostatpoa.deactivate_object(identifier.getbytes()); catch (Exception e) { // It can only be thrown by error. throw new es.udc.fbellas.corbaws.thermostats. MalfunctioningException(e); //... // class

43 Mejora de la concurrencia La mayor parte del código de findbyidentifier y findbylocation está en un bloque synchronized Si el servidor recibiese muchas peticiones findbyidentifier/findbylocation sobre el objeto controlador, y se ejecutase en un multiprocesador, podría ser mejor usar el patrón múltiples lectores - un solo escritor para implementar el control de concurrencia en los métodos del controlador

3.8 Patrón Default servant. Políticas del POA asociadas

3.8 Patrón Default servant. Políticas del POA asociadas 3.8 Patrón Default servant. Políticas del POA asociadas Introducción Cómo minimizar la cantidad de memoria que necesita un servidor para soportar un gran número de objetos? Servant por defecto => permite

Más detalles

3.9 Patrón Distributed callback

3.9 Patrón Distributed callback 3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima

Más detalles

3.7 Patrón Evictor. Políticas del POA asociadas

3.7 Patrón Evictor. Políticas del POA asociadas 3.7 Patrón Evictor. Políticas del POA asociadas Motivación Ejemplo tcsfactory El servidor tiene una instancia de ThermostatImpl (servant) en memoria por cada termostato (objeto) En general, este enfoque

Más detalles

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción CORBA desde Java Diego Sevilla Ruiz Sistemas Distribuidos Índice 1. Introducción 1 2. Primeros pasos 1 2.1. Fichero IDL................................... 1 2.2. Cliente......................................

Más detalles

Implementaciones de servidores CORBA con Java

Implementaciones de servidores CORBA con Java Implementaciones de servidores CORBA con Java Sistemas Distribuidos: Programación con CORBA Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Implementación de

Más detalles

3.5 Patrones básicos para favorecer la eficiencia, la escalabilidad y el mantenimiento

3.5 Patrones básicos para favorecer la eficiencia, la escalabilidad y el mantenimiento 3.5 Patrones básicos para favorecer la eficiencia, la escalabilidad y el mantenimiento Introducción Parámetros en conflicto en todo diseño Eficiencia Mantenimiento Escalabilidad Un buen diseño balancea

Más detalles

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a Java LSUB. 15 de enero de 2015 GSYC Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Práctica 5: Common Object Request Broker Architecture CORBA

Práctica 5: Common Object Request Broker Architecture CORBA Práctica 5: Common Object Request Broker Architecture CORBA Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es entender mejor el funcionamiento de CORBA (Common Object Request Broker

Más detalles

Colecciones. Nadjet Bouayad-Agha Programación 2007

Colecciones. Nadjet Bouayad-Agha Programación 2007 Colecciones Nadjet Bouayad-Agha Programación 2007 ArrayList Un ArrayList es un array dinámico. No tiene restricciones de capacidad. Su tamaño se ajusta de forma dinámica. Constructor por defecto: new ArrayList().

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

Más detalles

1. Visión general de RMI

1. Visión general de RMI 1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS Versión 1.0 Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Servicio de SMS Cliente NORMATIVA ATLAS Arquitectura

Más detalles

RMI [Remote Method Invocation]

RMI [Remote Method Invocation] RMI [Remote Method Invocation] Cuando utilizamos sockets, hemos de preocuparnos de cómo se transmiten físicamente los datos entre los extremos de una conexión (a nivel de bytes, ya que usamos los streams

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase? PRTIIPNT: MPRS: H: xamen de iagnóstico Programador Java Instrucciones: Lea cada pregunta cuidadosamente y marque la(s) respuesta(s) que sean correctas. 1) ada la siguiente clase: 1. class rrayopy3{ 2.

Más detalles

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para

Más detalles

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs CONTENIDO RMI AVANZADO Carga dinamica de stubs Callbacks Carga dinámica de Stubs Para tener acceso a un objeto remoto mediante RMI, el cliente debe recibir un stub serializado y deserializarlo. El stub

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) APRENDERAPROGRAMAR.COM INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha revisión:

Más detalles

Programación Orientada a Eventos

Programación Orientada a Eventos Programación Orientada a Eventos Técnicas de Programación Santiago Pavón V:2012.03.13 Programas Secuénciales El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08 Tema 2 Técnicas básicas de POO Técnicas de Programación - Curso 2007/08 Contenido Principios de POO Encapsulación Herencia Polimorfismo Ejemplos Técnicas básicas Delegación Uso de interfaces Interfaces

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Propedéutico de Programación

Propedéutico de Programación Propedéutico de Programación Coordinación de Ciencias Computacionales 6/13 Material preparado por: Dra. Pilar Gómez Gil Chapter 15 Pointers, Dynamic Data, and Reference Types (continuación) Dale/Weems

Más detalles

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera

Más detalles

Tutorial 1: Desarrollo de un plugin

Tutorial 1: Desarrollo de un plugin Tutorial 1: Desarrollo de un plugin En este tutorial introductorio se creará un plugin siguiendo una de las plantillas que ofrece Eclipse. Concretamente se extenderá una vista para mostrar cierta información

Más detalles

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA II. Objetos distribuidos y CORBA 1. Objetos Distribuidos 2. CORBA 1. Características 2. Modelo de trabajo 3. ORB 4. Arquitectura

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

Plataforma de Contratación del Sector Público

Plataforma de Contratación del Sector Público del Sector Público Dirección General del Patrimonio del Estado Subdirección General de Coordinación de la Contratación Electrónica Versión: 1. Fecha: 10/12/2015 DEL PATRIMONIO DEL DEL ESTADO CONTROL DE

Más detalles

Multitarea en Java. Rafa Caballero - UCM

Multitarea en Java. Rafa Caballero - UCM Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single

Más detalles

2.1. Introducción al lenguaje Java

2.1. Introducción al lenguaje Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Implementación de clientes con CORBA y Java

Implementación de clientes con CORBA y Java Implementación de clientes con CORBA y Java Sistemas Distribuidos: Programación con CORBA Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Facultad de Informática,

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados 5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados Introducción Qué tipos de EJBs ilustra MiniPortal? Entity Beans CMP (UserProfile) SLSBs

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

El Modelo de Geometrías

El Modelo de Geometrías El Modelo de Geometrías gvsig: Avanzando Juntos http://www.gvsig.gva.es http://www.gvsig.org Jorge Piera Llodrá Iver T.I. jpiera@gvsig.org Índice de la Presentación 1.El modelo anterior. 2.Las normas ISO.

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases

Más detalles

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1) Requisitos Oracle Java Development Kit (JDK) 6 NetBeans 6.9.1 con GlassFish Application Server 3 integrado Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK Introducción El

Más detalles

Arquitectura y Diseño de Sistemas Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre de 2015

Arquitectura y Diseño de Sistemas Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre de 2015 Trabajo Práctico N 3 DOO Principios SOLID 1. Mencione cuáles son los principios denominados SOLID y describa brevemente sus características. 2. Supongamos que en una organización, cuando se realizan transferencias

Más detalles

void main(void) { string lname; list <string> lnamelist; cout << "Please enter your list of last names finishing with `.`"<<endl;

void main(void) { string lname; list <string> lnamelist; cout << Please enter your list of last names finishing with `.`<<endl; Segundo Certamen 1.- Haga uso de la información adjunta y desarrolle un programa en C++ que lea apellidos de teclado y los almacene en una lista. Luego se pide listar los apellidos en orden alfabético

Más detalles

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

Cliente/Servidor en Java

Cliente/Servidor en Java Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

Programación Concurrente en Java

Programación Concurrente en Java Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006 Threads Extendiendo la clase java.lang.thread. public class PrThread extends

Más detalles

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI 5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura

Más detalles

Servicios pensados para optimizar los procesos de comunicación de voz y SMS.

Servicios pensados para optimizar los procesos de comunicación de voz y SMS. Checker de teléfono Servicios pensados para optimizar los procesos de comunicación de voz y SMS. Aspectos generales Basados en una aplicación de la tecnología ENUM. La ENUM API permite acceder a los servicios

Más detalles

Universidad de Cantabria corcuerp@unican.es

Universidad de Cantabria corcuerp@unican.es Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015 Patrón Fábrica Abstracta Julio Ariel Hurtado Alegría Ingeniería de Software II 2015 Contenido Descripción General Problema Solución Participantes Ejemplo: Fábrica de Carros Ejemplo: RelojVisual 2 Descripción

Más detalles

CORBA con Java IDL. Francisco Charte Ojeda ! " !# $ "$ % &'(!!! ) % #* %! " +,',' $! '(! $ - # " "! " '( %!.%# %%! +#! '(!! $!!#

CORBA con Java IDL. Francisco Charte Ojeda !  !# $ $ % &'(!!! ) % #* %!  +,',' $! '(! $ - #  !  '( %!.%# %%! +#! '(!! $!!# CORBA con Java IDL Francisco Charte Ojeda Sumario " Introducción # $ "$ % &'( ) % #* % " +,',' $ '( $ - # " " " '( %.%# %% +# '( $ # + $ '( '( ) " / % $ $ "'( El compilador idltojava ). * + #)$ '(". #)00"&'(

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

Tema 3: Especificación de portlets Java Anexo: JSR 286

Tema 3: Especificación de portlets Java Anexo: JSR 286 Tema 3: Especificación de portlets Java Anexo: JSR 286 JSR 286 (1) JSR 286 es la versión 2.0 de la especificación de portlets Java La versión final de la especificación saldrá a lo largo del 2008 Principales

Más detalles

Framework 2 Manual de usuario del Servicio de envío de SMS

Framework 2 Manual de usuario del Servicio de envío de SMS Manual de usuario del Servicio de envío de SMS Versión 1.0 Área de Aplicaciones Especiales y Arquitectura de Software 1 Hoja de Control Título Documento de Referencia Framework 2: Servicio de envío de

Más detalles

TEMA 3. CLASES. EJERCICIOS

TEMA 3. CLASES. EJERCICIOS TEMA 3. CLASES. EJERCICIOS EJERCICIO 1 Considere la siguiente clase: public class IdentifyMyParts { public static int x = 7; public int y = 3; a. Cuáles son las variables de clase? b. Cuáles son las variables

Más detalles

Tema 2: Introducción a CORBA

Tema 2: Introducción a CORBA Tema 2: Introducción a CORBA Qué es CORBA? (1) Permite invocar métodos de objetos remotos sin que importe el lenguaje en el que estén escritos el llamador y el llamado, ni las plataformas (s.o. y hw.)

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Introducción a la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores El lenguaje de programación Java Programa Java Un programa Java está formado por un conjunto de clases que interactúan entre sí La clase es la unidad básica de programación La ejecución depende de la clase

Más detalles

Servidores Web (II) Contenidos

Servidores Web (II) Contenidos Contenidos Servidores (II) Servidores/aplicaciones con/sin Estado Sesiones con Servlets Contextos compartidos con Servlets Acceso concurrente desde Servlets Servidores Cache Servidores Virtuales 1 2 Aplicaciones

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

11. Algunas clases estándar de Java (II)

11. Algunas clases estándar de Java (II) 122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación

Más detalles

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Ingeniero en Computación José Alfredo Cobián Campos josealfredocobian@gmail.com Facultad de Ciencias

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Sistemas Distribuidos

Sistemas Distribuidos Sistemas Distribuidos Sesión 3 CORBA: Sistemas de Información Diego Sevilla Ruiz DITEC Facultad de Informática Murcia, 2012 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia,

Más detalles

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los

Más detalles

Tema 14: Excepciones

Tema 14: Excepciones Tema 14: Excepciones 0 Excepción Definición Las Excepciones son objetos que definen el estado de la aplicación cuando se producen situaciones anómalas. Son un mecanismo usado por muchos lenguajes de programación

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu. CAPÍTULO 8 E V E N T O S 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Quéesunevento? Paraquésirve? Qué temas se deben dominar para implementar aplicaciones con eventos? Qué se requiere

Más detalles

envía al browser. El browser despliega el archivo.

envía al browser. El browser despliega el archivo. SERVLETS Dr. Raúl Perez Páginas web estáticas Como se despliega una página web en un browser Normalmente la página se crea usando HTML y se almacena como un archivo en el servidor de web. El usuario escribe

Más detalles

Introducción. En este apartado veremos

Introducción. En este apartado veremos 5.4 Seguridad Introducción En este apartado veremos En qué difiere la programación de un applet frente a una aplicación stand-alone? Problemas de seguridad en applets Uso de CORBA en entornos con firewalls

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2 Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Tema: Sobrecarga de Operadores.

Tema: Sobrecarga de Operadores. Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

Capítulo 6. Introducción a la POO

Capítulo 6. Introducción a la POO Capítulo 6. Introducción a la POO 6. 1. Clases, Objetos y Métodos Definición La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a cómo expresaríamos las cosas en

Más detalles

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC Colecciones de Java LSUB GSYC 17 de febrero de 2016 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Arquitecturas Distribuidas Práctica 6. Introducción a CORBA

Arquitecturas Distribuidas Práctica 6. Introducción a CORBA Arquitecturas Distribuidas Práctica 6. Introducción a CORBA 1. Objetivos Entender el funcionamiento básico de la Llamada a Procedimiento Remoto (LPR). Desarrollar aplicaciones distribuidas sencillas basadas

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Anexo de documentación

Anexo de documentación Anexo de documentación Autor: Daniel Hernández Jané Tutor: Juan Carlos Hernández Palacín Índice 1. Orden de fabricación... 2 1.1. Convertidor ÖBB... 2 1.2. Convertidor Civia... 5 1.3. Convertidor Desiro...

Más detalles