Fichas de asignaturas 2009-10
![]() |
PROGRAMACIÓN EN ENTORNOS CLIENTE-SERVIDOR |
![]() ![]() |
|
Asignatura |
![]() |
| |
Profesorado |
![]() |
| |
Situación |
![]() |
| |
Competencias |
![]() |
| |
Objetivos |
![]() |
| |
Programa |
![]() |
| |
Actividades |
![]() |
| |
Metodología |
![]() |
| |
Distribucion |
![]() |
| |
Técnicas Docentes |
![]() |
| |
Evaluación |
![]() |
| |
Recursos Bibliográficos |
![]() |
Código | Nombre | |||
Asignatura | 1713054 | PROGRAMACIÓN EN ENTORNOS CLIENTE-SERVIDOR | Créditos Teóricos | 2,5 |
Descriptor | CLIENT/SERVER PROGRAMMING | Créditos Prácticos | 2 | |
Titulación | 1713 | INGENIERÍA EN INFORMÁTICA | Tipo | Optativa |
Departamento | C137 | LENGUAJES Y SISTEMAS INFORMATICOS | ||
Curso | ||||
Créditos ECTS | 4 |
Para el curso | Créditos superados frente a presentados | Créditos superados frente a matriculados |
2007-08 | 100.0% | 78.3% |
Pulse aquí si desea visionar el fichero referente al cronograma sobre el número de horas de los estudiantes.
Profesorado
Prof. Coordinador: Antonio J. Tomeu Hardasmal Prof. de Teoría: Jose M. Rodríguez Corral Prof. de Prácticas: Antonio J. Tomeu Hardasmal
Situación
Prerrequisitos
Ninguno.
Contexto dentro de la titulación
La asignatura es optativa y se encuadra en el perfil de segundo ciclo denominado Redes, Arquitectura de Computadores y Sistemas Operativos. A partir de él, consideramos que el contexto de la asignatura estará formado por el conjunto de asignaturas restantes que definen el perfil, y dentro de éste, fundamentalmente por dos: Administración de Servidores Web y Sistemas Operativos Distribuidos. Por tanto, durante la presentación de los contenidos teóricos insistiremos en los posibles nexos de unión que imbrican a los mismos con aquellos que previsiblemente se analizarán en las asignaturas citadas.
Recomendaciones
Se hacen al alumno las siguientes recomendaciones: 1) Más vale un mal libro que muchos buenos apuntes: por tanto, para cada tema concreto del curso se le propondrán como material de revisión/trabajo/estudio un mínimo de dos y un máximo de cuatro capítulos de referencias concretas (en inglés, claro está). También se le proporcionarán unos apuntes (en castellano), que como mucho debería usar como material de apoyo, pero nunca como texto base. 2) La copia de apuntes en clase ES UNA PÉRDIDA DE TIEMPO: por tanto, como profesor haré lo posible para que no tenga que copiar apuntes en clase, proporcionándole en la página de la asignatura con carácter previo a su explicación todo el material necesario para la preparación de la misma. En consecuencia, si copia apuntes, es porque es usted un copiador compulsivo; pero sepa que distraen su atención y suelen ser fuente de errores en el estudio posterior, ya que lo que se copia mal se estudia peor. 3) Una clase comienza antes de ser explicada y continua tras ser explicada: o lo que es lo mismo, llegar a clase a ver qué nos cuenta hoy este buen señor es un error. La mecánica de trabajo que les recomiendo a lo largo del curso para preparar una clase debe seguir las siguientes fases: 1. Lectura y revisión previa de los materiales indicados en el cronograma del curso para esa clase en concreto. Dicho cronograma estará disponible en la página virtual del curso cuando comience este. En él se establecerá la fecha (aproximada) donde se impartirá cada tópico del temario oficial, el material de lectura para esa clase en concreto, los problemas recomendados para ejercitar los contenidos teóricos explicados, y en ocasiones alguna tarea adicional de interés. 2. Asistencia a clase. Dado que no necesita tomar apuntes, preste atención a los desarrollos y explicaciones del profesor, y relaciónelos con lo previamente leído por usted. Tome notas de la dudas o discrepancias que le surjan, para su posterior discusión en la propia clase o en una tutoría individualizada. 3. Tras la clase, repase los contenidos de la misma, entiéndalos y aclare con el profesor los conceptos que no estén claros. Póngalos en práctica con los problemas de la relación que corresponda, y conéctelos con los contenidos a desarrollar en la próxima clase. Es decir, GO TO apartado 1. 3) Una asignatura NO se prepara en una semana. NO deje la preparación del mismo para los últimos días. Probablemente será inútil. Pida ayuda a su profesor para planificar el tiempo y su preparación de cara al examen final con antelación. Si no lo hace, el único perjudicado será usted. 5) Saber una asignatura NO es saber unos apuntes. Unos apuntes son, probablemente y en el mejor de los casos, un resumen de lo explicado por el profesor en clase, lo cual a su vez será un resumen de lo revisado por el profesor en la bibliografía específica. Por tanto, olvide aquello de "me sé los apuntes pero me han suspendido", o "esto no estaba en los apuntes, sino en tal libro" o "este problema no se parece a ninguno que hayamos hecho en clase". Si usted SABE la materia, estará preparado para aplicarla a situaciones nuevas y desconocidas. Y ello pasa por haber manejado bibliografía tal y cómo se indica en el criterio 1. Saber los apuntes es una condición necesaria para aprobar, pero no suficiente. Por tanto, si usted sabe sus apuntes, NO SABE la materia. Y recuerde que SABER no es MEMORIZAR. 6) La revisión de calificaciones NO es una subasta. La directriz que debe motivarle a solicitar y revisar sus calificaciones es saber DÓNDE, CÓMO Y POR QUÉ ha fallado, y PLANIFICAR con su profesor la fase posterior de estudio orientada a subsanar esos fallos. Por tanto, por favor, no acuda a revisión con la intención de discutir sobre: 1. Los criterios de corrección, ya que estos los define su profesor, y no es ni puede ser algo sujeto a negociación. 2. La distribución de la puntuación entre los diferentes enunciados de los ejercicios del examen, ya que su profesor sabe qué es más importante que usted haya aprendido, y cómo evaluar ese aprendizaje, y ajustará esa distribución en consecuencia. El que considere que esa distribución le perjudica es un error, ya que habrá sido aplicada por igual a sus compañeros, y además lo que hará será demostrar que no tiene claros aquellos conceptos que son más relevantes. 3. Lo parecido o distinto de los ejercicios del examen a los realizados en clase. (Ver principio 5) Un examen no tiene por qué parecerse a lo ya ejercitado. Los ejercicios de clase le CAPACITAN para dominar los conceptos. Los exámenes DEMUESTRAN que usted sabe aplicar esos conceptos aprendidos a situaciones novedosas o simplemente diferentes a las estudiadas. 4. La verificación de si determinado ejercicio estaba o no en sus apuntes (Ver principio 5) 5. La simple pataleta por no haber superado la asignatura. No entienda un suspenso más que con la siguiente lectura: el trabajo realizado ha sido válido, pero no suficiente. Debe trabajar más. Cualquier otra interpretación por su parte es un error (Ver principio 10) 7) Procure estar informado. Visite con asiduidad la sección de noticias del web de la asignatura y en caso de duda consulte por e-mail a su profesor. No utilice argumentos de "no sabía nada..." o "no me he enterado de que.." para excusar un fallo. Recuerde que ES su obligación y su responsabilidad estar enterado. 8) Utilice la tutoría. Es el único medio por el cual el profesor puede ofrecerle una enseñanza de carácter individualizado. Por tanto, aproveche la tutoría, en sus versiones presencial, electrónica, o vía el foro de la asignatura. Y hágalo con frecuencia: siga el método descrito en el principio 3 y visite a su profesor cada vez que tenga dudas. Con carácter ordinario, un mínimo de una visita al profesor cada tres semanas debería ser normal para usted. Si hay dificultades, tan a menudo como necesite. 9) NO se quede con una duda. Es muy habitual entre nuestros alumnos que cuando les surge una duda se queden con ella hasta el mismo momento del examen. Luego, durante la revisión reconocen: "sí, esto no me quedó claro, pero..." EVITE estos comportamientos. En una asignatura como esta, el progreso con garantías hacia nuevos contenidos implica haber asimilado correctamente los contenidos previos. 10) El profesor es su juez, NO es su verdugo. Mi labor en el momento de evaluarle se limitará a juzgar la cantidad y calidad del esfuerzo realizado por usted. Cualquier otro aspecto es irrelevante. 11) Participe en clase. Plantee sus dudas, y fomente la discusión entre sus compañeros y con el profesor. Ello contribuirá de forma positiva a su evaluación continua, y hará la dinámica académica más rica. Además, contribuirá positivamente a su crecimiento personal. 12. Sea consciente de sus derechos como alumno, pero también de las obligaciones que el serlo conlleva.
Competencias
Competencias transversales/genéricas
- Análisis y síntesis de contenidos técnicos - Lectura comprensiva y escritura comprensible - Determinación del ámbito de la solución de un problema - Elección del nivel de abstracción de solución de un problema - Capacidad de planificación temporal de tareas - Elaboración de juicios críticos sobre contenidos - Capacidad de elaborar documentación técnicamente correcta
Competencias específicas
Cognitivas(Saber):
a)Conocer los distintos niveles de programación cliente-servidor b)Decidir el nivel adecuando según el problemas de que se trate c)Conocer las tecnologías actuales que soportan la programación c/s d)Adaptar esas tecnologías a problemas específicos e)Diseñar la aplicación que dé soporte a esos problemas
Procedimentales/Instrumentales(Saber hacer):
a)Desarrollar programas orientados a objetos bajo lenguaje java incluendo compilación, compilación separada, generación automática de documentación, y programación estándar. b)Desarrollar programas multihebrados, incluyendo cuando sea necesario soporte a la exclusión mutua y a la sincronización. c)Desarrollar programas clientes y servidores utilizando como tecnología de base los sockets de datagrama y los sockets de stream. d)Desarrollar programas clientes y servidores utilizando como tecnología de base los canales desde una óptica de paso de mensajes. e)Desarrollar programas clientes y servidores utilizando como tecnología de base Remote Method Invocation, incluyendo serialización de objetos y control de las políticas de seguridad. f)Desarrollar programas clientes y servidores utilizando como tecnología de base CORBA-IDL bajo java, incluyendo soporte BOA y POA. g)Conocer los fundamentos básicos de la programación de dispositivos móviles bajo J2ME
Actitudinales:
-Autoaprendizaje e independencia de criterio. -Conciencia crítica sobre el trabajo propio bien hecho. -Conciencia de la necesidad del esfuerzo y el trabajo personal como medio de lograr los objetivos fijados. -Conciencia de la necesidad de cumplir en tiempo y forma con plazos prefijados, normas de redacción y entrega de productos, etc. -Conciencia de la necesidad de cumplir con las obligaciones en materia de asistencia a clase, trabajo personal, rendimiento y espíritu universitario que la legislación universitaria actualmente en vigor establece para el alumnado.
Objetivos
Considerando la generalización de las redes de comunicaciones, y el auge de los entornos distribuidos, fundamentalmente en el ámbito de las comunicaciones móviles, la asignatura debe tener como objetivo principal el dotar al alumno de los conocimientos teóricos y técnicos necesarios para abordar el desarrollo de aplicaciones de la naturaleza citada. Dada la limitación temporal que el número de créditos impone, y la imposibilidad de garantizar un nivel mínimo de conocimientos a priori sobre el tema, que sea común a todos los alumnos que puedan optar por elegir la asignatura, ésta se diseña como una toma de contacto con el paradigma de la programación cliente-servidor, que ofrezca al alumno una panorámica razonablemente amplia sobre el tema, con un nivel de profundidad necesariamente de grado intermedio. Por tanto, serán objetivos específicos a cubrir durante el curso los siguientes: a)Desarrollar programas orientados a objetos bajo lenguaje java incluyendo compilación, compilación separada, generación automática de documentación, y programación procedimental estándar. b)Desarrollar programas multihebrados, incluyendo cuando sea necesario soporte a la exclusión mutua y a la sincronización. c)Desarrollar programas clientes y servidores utilizando como tecnología de base los sockets de datagrama y los sockets de stream. d)Desarrollar programas clientes y servidores utilizando como tecnología de base los canales desde una óptica de paso de mensajes. e)Desarrollar programas clientes y servidores utilizando como tecnología de base Remote Method Invocation, incluyendo serialización de objetos, control de las políticas de seguridad, generación automática de resguardos. f)Desarrollar programas clientes y servidores utilizando como tecnología de base CORBA-IDL bajo java, incluyendo soporte BOA y POA. g)Conocer los fundamentos básicos de la programación de dispositivos móviles bajo J2ME.
Programa
Programa Teórico 1. Introducción a la Programación Cliente-Servidor (4 horas). 1.1 La era de la tecnología cliente/servidor. 1.2 Conceptos básicos. Características. 1.3 Modelos de dos y tres capas. 1.4 Evolución de la tecnología cliente/servidor. 1.5 Bloques: cliente, servidor y middleware. Canales y plataformas. 1.6 Clientes, servidores y sistemas operativos. 2. Bases Tecnológicas de la Programación Cliente-Servidor (4 horas). 2.1 Introducción. 2.2 Características. 2.2.1 Marshalling de argumentos y resultados. 2.2.1 Tratamiento de excepciones. 2.2.3 Semántica. 2.2.4 Transparencia. 2.2.5 Paquetes de usuario. 2.2.6 Stubs. 2.2.7 Ruta Crítica. 2.3 Definición de interfaz. 2.3.1 Abstracción de datos. 2.3.2 Procesamiento de una definición de interfaz. 2.4 El software de RPC. 2.4.1 Paso de mensajes. 2.4.2 Protocolos de intercambio. 2.4.3 Generación Autómatica de Resguardos. 2.5 RPC en Unix/Linux. 2.5.1 Generalidades. 2.5.2 Generación de Resguardos: rpcgen. 2.5.3 Registro del Servicio. 2.5.4 Ensamblaje de una aplicación completa. 3. Programación Cliente-Servidor de Bajo Nivel: sockets y canales (4 horas). 3.1 Concepto de socket. 3.1.1 Sockets en C. 3.1.1.1 Dominios y Tipos de sockets. 3.1.1.2 Creación y Supresión de sockets: sys/socket.h 3.1.1.3 Desarrollo del lado del servidor. 3.1.1.4 Desarrollo del lado del cliente. 3.1.2 Introducción a los sockets en Java. 3.1.2.1 La clase ServerSocket. 3.1.2.2 La clase Socket. 3.1.2.3 Programación del cliente con sockets. 3.1.2.4 Programación del servidor sockets. 3.2 Canales: CTJ en Java. 3.2.1 Canales en CTJ. 3.2.2.1 Procesos en CTJ. La interfaz Process. 3.2.2.2 La interfaz Channel. 3.2.2.3 Tipos de Canales. 3.2.2.4 Envío de mensajes con canales en CTJ. 3.2.2.5 Programación del lado del cliente. 3.2.2.6 Programación del lado del servidor. 4. Programación Cliente-Servidor de Nivel Intermedio: RMI (4 horas). 4.1 RMI vs. RPC. 4.2 El nivel de Interface. 4.2.1 La interfaz Remote. 4.2.2 Escritura e Implementación de la Interface. 4.3 Arquitectura de RMI: Stubs y Skeletons. 4.3.1 Necesidad y Utilidad del Nivel de Stubs. 4.4 Generando resguardos. 4.4.1 La herramientas rmic. 4.5 Registro del servicio: rmiregistry. 4.6 Uso del Objeto Remoto. 4.6.1 La clase java.rmi.Naming; 4.6.2 Registro de Objetos Servidores. 4.6.3 Dinamic Binding desde el Cliente. 4.7 Marshalling de objetos: la interfaz Serializable. 4.8 Seguridad. 4.8.1 La clase RMISecurityManager. 4.8.2 La herramienta policytool. 5 Programación Cliente-Servidor de Alto Nivel: CORBA (5 horas). 5.1 Principios de CORBA. 5.2 CORBA vs. a RMI. 5.2.1 Transparencia de localización. 5.2.1 Transparencia de migración. 5.2.3 Transparencia de activación. 5.3 Arquitectura de CORBA 5.3.1 El modelo OMA de OMG. 5.3.2 Concepto de ORB. 5.3.3 Stub, Skeleton, BOA y POA. 5.3.4 Invocación Estática y Dinámica. 5.3.4.1 Peculiaridades del modelo estático. 5.3.4.2 Peculiaridades del modelo dinámico: almacenes. 5.3.5 Metalenguaje de Definición de Interfaces (IDL). 5.3.6 El Protocolo IIOP. 5.4 Tecnología Java/IDL. 5.4.0 Descripción de IDL. 5.4.1 Mapping IDL-Java. 5.4.2 Precompilador idlj: del metalenguaje al lenguaje. 5.4.3 Servicios de Nombres (tnameserv, orbd). 5.4.4 Conceptos Avanzados: factorías de objetos, persistencia. 5.4.5 Desarrollo de una aplicación completa. 5.5. Tipologías de ORB. 5.5.1 VisiBroker. 5.5.2 Orbix. 5.5.3 Sun ORB. 6 Programación Cliente-Servidor para Dispositivos Móviles (3 horas). 6.1 Programación Java en telefonía móvil y PDA: J2ME. 6.1.1 Arquitectura de J2ME. 6.1.2 Máquina virtuales ligeras: CVM y KVM. 6.1.3 Conceptos de Configuración y Perfil. 6.2 Concepto de MIDLET. 6.2.1 Ciclo de vida de un MIDLET. 6.2.2 API para programación de MIDLETS. 6.3 Configuraciones y Perfiles de interés en telefonía móvil desde J2ME. 6.3.1 CLDC y su API. 6.3.2 MIDP 2.0 y su API. 6.4 Diseño de Programas 6.4.1 El Wireless Tool Kit. 6.4.2 Presentación del código de un MIDLET. 6.4.3 Compilación. 6.4.3.1 Compilación. 6.4.3.2 Preverificación. 6.4.3.3 Empaquetamiento Programa Práctico Se escoge Java como lenguaje de prácticas para concretar el aprendizaje de los modelos cliente-servidor por su versatilidad, disponibilidad en la jerarquía estándar de clases (versión J2SE) de todo el soporte necesario para comunicaciones vía sockets y RMI, por la existencia de un prototipo de terceras partes que soporta canales en Java, por la perfecta integración de la tecnología CORBA/IDL en el propio Java, y por la existencia de una versión específica del lenguaje para el desarrollo de aplicaciones en entornos móviles (J2ME), todo ello dentro de una misma filosofía general. Práctica 1: Entorno de Programación J2SE (2 horas) 1.1 Edición y compilación con JCreator. 1.2 Edición y compilación en línea de comandos: javac 1.3 Ejecución: java 1.4 Generación de Documentación en línea: javadoc Práctica 2: Programación Básica en Java (2 horas) 2.1 Tipos básicos 2.2 Estructuras de control 2.3 Entrada y salida Práctica 3: Programación Orientada a Objetos en Java (2 horas) 3.1 Clases y objetos en java 3.2 Sobrecarga, Herencia y Polimorfismo 3.3 Interfaces y Clases contenedoras Práctica 4: Programación Avanzada en Java (2 horas) 4.1 Multithreading 4.2 Sincronización y control de hilos 4.3 Java y las Bases de Datos: JDBC. 4.4 Multithreading y Bases de Datos en las aplicaciones distribuidas Práctica 5: Actividad Académicamente Dirigida con Presencia del Profesor I (2 horas) 5.1 Sockets de Datagrama 5.2 Sockets de Stream 5.3 Programación de Clientes y Servidores con Sockets Práctica 6: Actividad Académicamente Dirigida con Presencia del Profesor II (2 horas) 6.1 Procesos y Canales en Java: CTJ 6.2 Programación de Clientes y Servidores con CTJ Práctica 7: Actividad Académicamente Dirigida con Presencia del Profesor III (2 horas) 7.1 RMI en Java 7.2 Escritura de Interface 7.2 Generación de resguardos: rmic 7.4 Escritura de clientes y servidores 7.5 Registrando el servicio: rmiregistry 7.6 Políticas de Seguridad: policytool 7.7 Call-Back de Cliente 7.8 Activación de Objetos Remotos Práctica 8: Actividad Académicamente Dirigida con Presencia del Profesor IV (2 horas) 8.1 CORBA con Java-IDL 8.2 Escritura del fichero .dil 8.3 Precompilación: idlj 8.4 Implementación de servidores y clientes: 8.5 El orbd y el servicio de nombres. 8.6 Integrando la aplicación Práctica 9: Actividad Académicamente Dirigida con Presencia del Profesor V (2 horas) 9.1 Programación J2ME 9.2 Utilizando el Wireless Tool Kit 9.3 Escritura de un ejemplo 9.4 Precompilación, empaquetamiento y ejecución del ejemplo Práctica 10: Actividad Académicamente Dirigida con Presencia del Profesor VI (2 horas) 10.1 Tecnología AJAX en entornos cliente-servidor. 10.2 El objeto XMLHttpRequest. 10.3 Escritura de una aplicación sencilla.
Actividades
-Clases de Teoría, utilizando diapositivas y pizarra electrónica. -Clases de Prácticas, utilizando diapositivas y pizarra electrónica. -Elaboración de Trabajo Dirigidos en presencia del profesor, mediante el uso del guión de prácticas.
Metodología
El desarrollo de los contenidos teóricos se llevará a cabo mediante clases teóricas, con el apoyo de medios (proyector de transparencias o cañón de proyección) cuando sea necesario. Los contenidos prácticos irán precedidos de introducciones en la propia aula de prácticas, donde el profesor dará a los alumnos el soporte de programación necesario para abordar los casos prácticos con garantías. Los códigos objeto de análisis serán descargados por el alumnos desde el Campus Virtual, compilados y probados. Posteriormente, deberán desarrollar, bajo la dirección del profesor, el código que dé solución a los casos prácticos, bajo ciertas especificaciones que se harán públicas a lo largo del curso. El instrumento que se utilizará para todo ello será el guión de prácticas, para la toma de contacto con conceptos de programación mediante una aproximación basada en ejemplos, junto con el caso práctico, que se define como una secuencia de ejercicios graduados en dificultad que el alumno debe resolver y entregar para poder superar las prácticas de la asignatura. El alumno dispondrá de cronogramas de teoría y prácticas orientativos, donde se recogerá, al menos, la siguiente información: a) Fecha prevista para impartir cada tópico concreto del programa. b) Material de lectura mínimo recomendado para preparar la clase. c) Conjunto de lecturas y ejercicios para consolidar el tópico de que se trate d) Fechas de interés: entrega de asignaciones, exámenes, etc.
Distribución de horas de trabajo del alumno/a
Nº de Horas (indicar total): 100
- Clases Teóricas: 25
- Clases Prácticas: 8
- Exposiciones y Seminarios:
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas:
- Individules: 1
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado: 12
- Sin presencia del profesorado:
- Otro Trabajo Personal Autónomo:
- Horas de estudio: 45
- Preparación de Trabajo Personal: 7
- ...
El apartado Preparación de Trabajo Personal consistirá en la elaboración de una memoria de teoría.
- Realización de Exámenes:
- Examen escrito: 2
- Exámenes orales (control del Trabajo Personal):
Técnicas Docentes
|
||||||
Otros (especificar):
a) Autoevaluación de progresos mediante test de contenidos. b) Actividades Académicas con Presencia del Profesor. |
Criterios y Sistemas de Evaluación
La asignatura no se oferta durante el curso 09/10. En consecuencia, y para alumnos repetidores, el modelo de evaluación disponible con carácter único es la evaluación ordinaria, con prueba final (de teoría y de prácticas) según establecen los Estatutos de la Universidad de Cádiz. La calificación de la asignatura se obtendrá de acuerdo a las calificaciones de los exámenes teórico y prácticos de acuerdo a: CALIFICACIÓN = (Teoría*0.4)+(Prácticas*0.6)
Recursos Bibliográficos
[Arn01] Arnold, K., Gosling, J. & Holmes, D. El Lenguaje de Programación Java. Addison-Wesley, 2001. [Col94] Coulouris, G., Dollimore, J. and Kindberg, T. Distributed Systems. Concept and Design. 2nd ed., Addison-Wesley, 1994. [Eck00] Eckel, B. Piensa en Java. Prentice Hall, 2002. [Fro04] Froufe, A & Jorge, P. Java 2 Micro Edition: Manual del Usuario y Tutorial. Ra-Ma, 2004. [Fro05] Froufe, A. JAVA 2. Manual de usuario y tutorial. 4ª ed., Ra-Ma, 2005. [Hil00] Hilderink, G., Broenink, J., Bakkers, A. & Schaller, N. Communicating Threads for Java. Draft, disponible en formato electrónico en: http://www.ce.utwente.nl/javapp/downloads/CTJ_A4.pdf [Lea01] Lea, Doug. Programación Concurrente en Java. Addison-Wesley, 2001. [Liu04] Liu, M.L. Computación Distribuida. Fundamentos y Aplicaciones. Addison- Wesley, 2004. [Mul93] Mullender, S (ed.) Distributed Systems, Second Edition. Addison- Wesley, 1993. [Orf02] Orfali, R., Harkey, D. & Edwards, J. Cliente/Servidor y Objetos. Guía de Supervivencia. Oxford University Press, 2002. [Orf98] Orfali, R. & Harkey, D. Client/Server Programming with Java and Corba John Wiley and Sons, Inc. 1998. [Pri03] Prieto, Manuel J. Curso de J2ME. Disponible en formato electrónico. 2003. [Rif92] Rifflet, J.M. Comunicaciones en Unix. McGraw-Hill, 1992. [Rob96] Robbins, K. & Robbins, S. Practical Unix Programming: A Guide to Concurrency, Communication and Multithreading. Prentice Hall, 1996. [Sch97] Schmidt, D. & Vinoski, S. Object Interconnections. SIGS C++ Report Magazine, 1997. [SunA] Sun mycrosystems. Java IDL Documentation. Sun Mycrosystems. Disponible en http://java.sun.com/j2se/1.1.1/docs/guide/idl/index.html [SunB] Sun mycrosystems. Permissions in the Java 2 SDK. Sun Mycrosystems. Disponible en http://java.sun.com/j2se/1.4.1/docs/guide/security/permissions.html [SunC] Sun mycrosystems. Policy Tool. Sun Mycrosystems. Disponible en http://java.sun.com/products/jdk/1.2/docs/tooldocs/win32/policytool.html [SunD] Sun mycrosystems. Java Remote Method Invocation Specification. Sun Mycrosystems. [Sun03] Sun mycrosystems. Wireless Tool Kit, Version 2.1. Java 2 Platfom Micro Edition. Sun Mycrosystems, 2003. Disponible en http://java.sun.com [Tan93] Tanenbaum, A.S. Sistemas Operativos Modernos. Prentice-Hall, 1993. [Vin97] Vinoski, S. CORBA: Integrating Diverse Applications Within Distributed Heterogeneus Environments. IEEE Communications Magazine, Vol. 35, No 2, February 1997. [Wan00] Wang, P. Java. International Thompson Editores, 2000.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.