CAPÍTULO 1. INTERFACES GRÁFICAS Y NUEVAS CARACTERÍSTICAS DE JAVA 1.1 JAVA, LENGUAJE DE PROGRAMACIÓN DE GUIONES 1.2 INFERENCIA DE TIPOS PARA VARIABLES LOCALES 1.3 REGISTROS. INMUTABILIDAD 1.4 CLASES SELLADAS 1.5 RECONOCIMIENTO DE PATRONES. TIPOS DE DATOS ALGEBRAICOS 1.6 INTERFACES GRÁFICAS DE USUARIO CON SWING 1.7 DESARROLLO DE UN JUEGO CON SWING: BUSCAMINAS 1.8 LECTURA DE UN FICHERO DE LA CARPETA DE RECURSOS CAPÍTULO 2. ESTRUCTURAS DE DATOS AVANZADAS 2.1 TABLAS DE DISPERSIÓN 2.2 ÁRBOLES BINARIOS DE BÚSQUEDA 2.3 COLAS DE PRIORIDAD Y MONTÍCULOS DE FIBONACCI 2.4 PARTICIONES 2.5 GRAFOS CAPÍTULO 3. MÉTODOS ALGORÍTMICOS 3.1 RECORRIDO EN PROFUNDIDAD DE UN GRAFO 3.2 RECORRIDO EN ANCHURA DE UN GRAFO 3.3 CÓMO DETERMINAR SI UN GRAFO NO DIRIGIDO ES CONEXO 3.4 ORDENACIÓN TOPOLÓGICA DE UN GRAFO DIRIGIDO ACÍCLICO 3.5 MÉTODO ALGORÍTMICO VORAZ: CÁLCULO DE ÁRBOLES DE RECUBRIMIENTO DE COSTE MÍNIMO. ALGORITMOS DE PRIM Y KRUSKAL 3.6 MÉTODO ALGORÍTMICO VORAZ: CÁLCULO DE CAMINOS DE COSTE MÍNIMO. ALGORITMO DE DIJKSTRA 3.7 MÉTODO ALGORÍTMICO DE PROGRAMACIÓN DINÁMICA:CÁLCULO DE CAMINOS DE COSTE MÍNIMO ALGORITMO DE BELLMAN-FORD 3.8 MÉTODO ALGORÍTMICO DE PROGRAMACIÓN DINÁMICA:CÁLCULO DE CAMINOS DE COSTE MÍNIMO ALGORITMO DE FLOYD-WARSHALL 3.9 MÉTODO ALGORÍTMICO DE VUELTA ATRÁS: COLOREADO DE UN GRAFO 3.10 MÉTODO ALGORÍTMICO DE VUELTA ATRÁS: CICLOS HAMILTONIANOS DE UN GRAFO 3.11 DESARROLLO DE UN JUEGO CON ADVERSARIO Y EL ALGORITMO DE MINIMAX: TIC TAC TOE 3.12 DESARROLLO DE UN JUEGO CON ADVERSARIO, EL ALGORITMO DE MINIMAX Y LA PODA ALFA-BETA: CONECTA 4 CAPÍTULO 4. PROGRAMACIÓN CONCURRENTE 4.1 PROCESOS. HILOS 4.2 SINCRONIZACIÓN DE HILOS: FUNDAMENTOS TEÓRICOS 4.3 SINCRONIZACIÓN DE HILOS: CERROJOS 4.4 SINCRONIZACIÓN DE HILOS: CERROJOS IMPLÍCITOS 4.5 SINCRONIZACIÓN DE HILOS: SEMÁFOROS 4.6 SINCRONIZACIÓN DE HILOS: BARRERAS 4.7 SINCRONIZACIÓN DE HILOS: DIVISOR EN FASES 4.8 SINCRONIZACIÓN DE HILOS: CERROJO DE CUENTA ATRÁS 4.9 SINCRONIZACIÓN DE HILOS: INTERCAMBIADOR 4.10 VOLÁTIL Y ATÓMICO 4.11 ALGORITMOS NO-BLOQUEANTES 4.12 DETECCIÓN DE INTERBLOQUEOS 4.13 CENA DE LOS FILÓSOFOS 4.14 CÓMO GESTIONAR LA EXCEPCIÓN JAVA.LANG INTERRUPTEDEXCEPTION 4.15 DISEÑO DE ALGORITMOS CONCURRENTES SEGUROS CAPÍTULO 5. PROGRAMACIÓN FUNCIONAL AVANZADA 5.1 ESTRUCTURAS DE DATOS FUNCIONALES: LISTAS INMUTABLES 5.2 ENTRADA/SALIDA EN UN ENTORNO FUNCIONAL 5.3 REFACTORIZACIÓN DE PROGRAMAS IMPERATIVOS: CARGA DE UN FICHERO DE PROPIEDADES 5.4 REFACTORIZACIÓN DE PROGRAMAS IMPERATIVOS :LECTURA DE UN FICHERO XML 5.5 ESTRUCTURAS DE DATOS FUNCIONALES: ÁRBOLES BINARIOS DE BÚSQUEDA 5.6 ESTRUCTURAS DE DATOS FUNCIONALES: MAPAS. CAPÍTULO 6. PROGRAMACIÓN CONCURRENTE AVANZADA 6.1 PROGRAMACIÓN CONCURRENTE EN SWING 6.2 DESARROLLO DE UN GESTOR DE DESCARGAS 6.3 ESTRUCTURAS DE DATOS SINCRONIZADAS Y CONCURRENTES DEL API DE JAVA 6.4 EJECUTORES Y FLOTAS DE HILOS 6.5 PROGRAMACIÓN CONCURRENTE CON FORK/JOIN 6.6 DESARROLLO DE UN JUEGO: SUDOKU 6.7 PROGRAMACIÓN CONCURRENTE CON STREAMS 6.8 PROGRAMACIÓN CONCURRENTE ASÍNCRONA CON COMPLETABLEFUTURE BIBLIOGRAFÍA MATERIAL ADICIONAL
Java está presente a nuestro alrededor, se utiliza en servidores, en aplicaciones de escritorio, en dispositivos multimedia, en teléfonos móviles e incluso en juegos como el popular Minecraft. De ahíque haya estado presente en la cotidianidad de tus padres, está en la nuestra y estará presente en la de tus hijos. Este libro va dirigido a todas las personas que con conocimientos de programación desean profundizar y afianzar sus conocimientos. Con un lenguaje claro y didáctico, se exponen las últimas características añadidas al lenguaje, se estudian estructuras de datos y métodos algorítmicos avanzados, se desarrollan los conceptos de la programación concurrente con detalle, sin que falten las aplicaciones prácticas que ilustran las ideas explicadas.