Java a fondo propone un curso de lenguaje y desarrollo de aplicaciones Java basado en un enfoque totalmente práctico. El libro comienza desde un nivel ?cero? y avanza hasta llegar a temas complejos como introspección de clases y objetos, acceso a bases de datos (JDBC), multiprogramación, networking y objetos distribuidos (RMI), entre otros. La obra explica cómo diseñar y desarrollar aplicaciones Java respetando los estándares y lineamientos propuestos por los expertos de la industria, esto la convierte en una herramienta fundamental para obtener las certificaciones internacionales SCJP (Sun Certified Java Programmer) y SCJD (Sun Certified Java Developer). - Lenguaje de programación Java - Teoría de objetos - Desarrollo de aplicaciones - AWT/Swing - Patrones de diseño - JDBC - Multithreading - TCP, UDP, RMI - XML - Introspección de clase y objetos - I/O StreamsÍndiceEL AUTOR INTRODUCCIÓN CAPÍTULO 1. INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN JAVA 1.1 COMENCEMOS A PROGRAMAR 1.1.1 El Entorno Integrado de Desarrollo (IDE) 1.2 ESTRUCTURAS DE CONTROL 1.2.1 Entrada y salida de datos por consola 1.2.2 Definición de variables 1.2.3 Comentarios en el código 1.2.4 Estructuras de decisión 1.2.5 Estructuras iterativas 1.3 OTROS ELEMENTOS DEL LENGUAJE 1.3.1 Tipos de datos 1.3.2 Algunas similitudes y diferencias con C y C++ 1.3.3 Definición de constantes 1.3.4 Arrays 1.3.5 Matrices 1.3.6 Literales de cadenas de caracteres 1.3.7 Caracteres especiales 1.3.8 Argumentos en línea de comandos 1.4 TRATAMIENTO DE CADENAS DE CARACTERES 1.4.1 Acceso a los caracteres de un String 1.4.2 Mayúsculas y minúsculas 1.4.3 Ocurrencias de caracteres 1.4.4 Subcadenas 1.4.5 Prefijos y sufijos 1.4.6 Posición de un substring dentro de la cadena 1.4.7 Concatenar cadenas 1.4.8 La clase StringBuffer 1.4.9 Conversión entre números y cadenas 1.4.10 Representación numérica en diferentes bases 1.4.11 La clase StringTokenizer 1.4.12 Usar expresiones regulares para particionar una cadena 1.4.13 Comparación de cadenas 1.5 OPERADORES 1.5.1 Operadores aritméticos 1.5.2 Operadores lógicos 1.5.3 Operadores relacionales 1.5.4 Operadores lógicos de bit 1.5.5 Operadores de desplazamiento de bit 1.6 LA MÁQUINA VIRTUAL Y EL JDK 1.6.1 El JDK (Java Development Kit) 1.6.2 Versiones y evolución del lenguaje Java 1.7 QUÉ VIMOS Y QUÉ VIENE CAPÍTULO 2. PROGRAMACIÓN ORIENTADA A OBJETOS 2.1 CLASES Y OBJETOS 2.1.1 Los métodos 2.1.2 Herencia y sobreescritura de métodos 2.1.3 El método toString 2.1.4 El método equals 2.1.5 Definir y ?crear? objetos 2.1.6 El constructor 2.1.7 Un pequeño repaso de lo visto hasta aquí 2.1.8 Convenciones de nomenclatura 2.1.9 Sobrecarga 2.1.10 Encapsulamiento 2.1.11 Visibilidad de métodos y atributos 2.1.12 Packages (paquetes) 2.1.13 La estructura de los paquetes y la variable CLASSPATH 2.1.14 Las APIs (?Application Programming Interface?) 2.1.15 Representación gráfica UML 2.1.16 Importar clases de otros paquetes 2.2 HERENCIA Y POLIMORFISMO 2.2.1 Polimorfismo 2.2.2 Constructores de subclases 2.2.3 La referencia ?super? 2.2.4 La referencia ?this? 2.2.5 Clases 2.2.6 Constructores de clases abstractas 2.2.7 Instancias 2.2.8 Variables de instancia 2.2.9 Variables de la clase 2.2.10 El Garbage Collector (recolector de residuos) 2.2.11 El método finalize 2.2.12 Constantes 2.2.13 Métodos de la clase 2.2.14 Clases utilitarias 2.2.15 Referencias estáticas 2.2.16 Colecciones (primera parte) 2.2.17 Clases genéricas 2.2.18 Implementación de una pila (estructura de datos) 2.2.19 Implementación de una cola (estructura de datos) 2.3 INTERFACES 2.3.1 Desacoplamiento de clases 2.3.2 El patrón de diseño factory method 2.3.3 Abstracción a través de interfaces 2.3.4 La interface comparable 2.3.5 Desacoplar aún más 2.4 COLECCIONES 2.4.1 Cambio de implementación 2.5 EXCEPCIONES 2.5.1 Excepciones declarativas y no declarativas 2.5.2 El bloque try?catch-finally 2.6 QUÉ VIMOS Y QUÉ VIENE CAPÍTULO 3. ACCESO A BASES DE DATOS (JDBC) 3.1 CONCEPTOS BÁSICOS SOBRE BASES DE DATOS RELACIONALES 3.1.1 Relaciones foráneas y consistencia de datos 3.1.2 Diagrama Entidad-Relación (DER) 3.1.3 SQL ? Structured Query Language 3.1.4 Ejecutar sentencias query 3.1.5 Unir tablas (join) 3.1.6 Ejecutar sentencias update 3.2 CONECTAR PROGRAMAS JAVA CON BASES DE DATOS 3.2.1 Invocar un query con un join 3.2.2 Updates 3.2.3 Ejecutar un INSERT 3.2.4 Ejecutar un DELETE 3.2.5 Ejecutar un UPDATE 3.2.6 El patrón de diseño ?Singleton? (Singleton Pattern) 3.2.7 Singleton Pattern para obtener la conexión 3.2.8 El shutdown hook 3.2.9 Inner classes (clases internas) 3.2.10 Manejo de transacciones 3.3 USO AVANZADO DE JDBC 3.3.1 Acceso a la metadata del resultSet (ResultSetMetaData) 3.3.2 Definir el ?Query Fetch Size? para conjuntos de resultados grandes 3.3.3 Ejecutar batch updates (procesamiento por lotes) 3.4 QUÉ VIMOS Y QUÉ VIENE CAPÍTULO 4. DISEÑO DE APLICACIONES JAVA (PARTE I) 4.1 ATRIBUTOS DE UNA APLICACIÓN 4.1.1 Casos de uso 4.2 DESARROLLO DE APLICACIONES EN CAPAS 4.2.1 Aplicación de estudio 4.2.2 Análisis de los objetos de acceso a datos (DAOs DTOs) 4.2.3 Análisis del façade 4.2.4 Diagrama de secuencias de UML 4.3 PORTABILIDAD ENTRE DIFERENTES BASES DE DATOS 4.3.1 DAOs abstractos e implementaciones específicas para las diferentes bases de datos 4.3.2 Implementación de un factory method 4.3.3 Combinar el factory method con el singleton pattern 4.3.4 Mejorar el diseño de los DAOs abstractos 4.4 DISEÑO POR CONTRATOS 4.4.1 Coordinación de trabajo en equipo 4.5 QUÉ VIMOS Y QUÉ VIENE CAPÍTULO 5. INTERFAZ GRÁFICA (GUI) 5.1 COMPONENTES Y CONTENEDORES 5.1.1 Distribución de componentes (layouts) 5.1.2 AWT y Swing 5.2 COMENZANDO A DESARROLLAR GUIS 5.2.1 Distribuciones relativas 5.2.2 FlowLayout 5.2.3 BorderLayout 5.2.4 GridLayout 5.2.5 Combinación de layouts 5.3 CAPTURAR EVENTOS 5.3.1 Tipos de eventos 5.3.2 Eventos de acción 5.3.3 Eventos de teclado 5.4 SWING 5.4.1 Cambiar el look and feel 5.5 MODEL VIEW CONTROLLER (MVC) 5.5.1 Ejemplo de uso: ListModel 5.5.2 Ejemplo de uso: TableModel 5.6 QUÉ VIMOS Y QUÉ VIENE CAPÍTULO 6. MULTITHREADING (HILOS) 6.1 IMPLEMENTAR THREADS EN JAVA 6.1.1 La interface Runnable 6.1.2 Esperar a que finalice un thread 6.1.3 Threads y la interfaz gráfica 6.1.4 Sistemas operativos multitarea 6.1.5 Ciclo de vida de un thread 6.1.6 Prioridad de ejecución 6.1.7 Sincronización de threads 6.1.8 Ejemplo del Productor/Consumidor 6.1.9 Qué vimos y qué viene CAPÍTULO 7. NETWORKING 7.1 CONCEPTOS BÁSICOS DE NETWORKING 7.1.1 TCP ? ?Transmission Control Protocol? 7.1.2 UDP ? ?User Datagram Protocol? 7.1.3 Puertos 7.1.4 Dirección 7.1.5 Aplicaciones cliente/servidor 7.2 TCP EN JAVA 7.2.1 El socket 7.2.2 Un simple cliente/servidor en Java 7.2.3 Serialización de objetos 7.2.4 Implementación de un servidor multithread 7.2.5 Enviar y recibir bytes 7.2.6 Enviar y recibir valores de tipos de datos primitivos 7.3 UDP EN JAVA 7.4 REMOTE METHOD INVOCATION (RMI) 7.4.1 Componentes de una aplicación RMI 7.4.2 Ejemplo de una aplicación que utiliza RMI