1
Programación concurrente
- Los conceptos de la programación multihilo: el modelo de actividad de Java (Runnable y Thread).
- Creación/destrucción de hilos. Programación de hilos.
- Sincronización de hilos. Métodos e instrucciones de bloqueo (sincronizados). Monitores.
- Algunos problemas multihilo: interbloqueo (caracterización, evitación, prevención, detección), inanición.
- Extensiones de modelo introducidas en Java.5 (Callable<T>, Future<T>, ExecutorService. Nuevas colecciones.
- El modelo Fork/Join de Java 7. Extensiones de Java 8 (CompletableFuture).
- Diversas herramientas de gestión de la competencia: bloqueos compartidos/exclusivos, semáforos, barreras cíclicas.
Trabajo práctico
Creación de una aplicación multihilo con restricciones de concurrencia.
2
Comunicación por socket
- Recordatorio de los principales conceptos de red.
- Comunicación en modo conectado.
- El modelo cliente/servidor. Servidor secuencial frente a servidor concurrente. Uso de la serialización.
- Programación en modo offline. El modelo Peer to Peer.
Trabajo práctico
Programación del caso práctico en modo cliente-servidor (secuencial y concurrente).
3
Comunicación por invocación remota de métodos : RMI
- Los principios generales de los ORB (Object Request Brokers).
- El modelo RMI (conceptos, interfaces de clases básicas).
- El servicio de nombres.
- El proceso de desarrollo de clientes y servidores.
- Restricciones de seguridad y carga de clases.
Trabajo práctico
Programación del caso práctico mediante RMI.
4
Comunicación basada en mensajes: JMS
- Los principios generales de la comunicación de mensajes.
- El modelo básico (conceptos, interfaces y clases JMS).
- Los diferentes tipos de mensaje.
- Comunicación punto a punto.
- Comunicación en modo publicar/suscribir.
Trabajo práctico
Programación del caso práctico mediante JMS.
5
Administración de aplicaciones : JMX
- El modelo JMX (Java Management eXtension): conceptos, interfaces y clases correspondientes.
- MBeans y MBeanServers.
- Configuración de una capa de administración.
- La consola de administración (JConsole).
- Comunicación mediante adaptadores y conectores.
Trabajo práctico
Implementación de una capa de administración-supervisión para el caso de estudio.
6
Programación reflexiva
- Objetivos y principios.
- Descubrimiento dinámico de información relativa a una clase u objeto.
- Instanciación e invocación dinámicas.
- Reflexividad y anotaciones en Java 5.
Trabajo práctico
Programación del caso práctico en modo cliente-servidor (secuencial y concurrente).
7
Una visión general de las extensiones de Java 5 a...
- Tipos: genéricos, enumeraciones, autoboxing/autounboxing, registros.
- Expresiones lambda e interfaces funcionales.
- Flujos Java 8.
- Módulos Java 9.