Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2009-10


PROGRAMACIÓN EN ENTORNOS CLIENTE-SERVIDOR

Asignaturas
 

  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

Sesiones académicas teóricas:Si   Exposición y debate:No   Tutorías especializadas:Si  
Sesiones académicas Prácticas:Si   Visitas y excursiones:No   Controles de lecturas obligatorias:No  
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.