Introducción
A quién está destinado este libro
Contenido de este libro
Notas sobre plataformas
Convenciones empleadas en este libro
Obtener el código fuenteCapítulo 1. Introducción: Compilar, ejecutar y depurar
1.0. Introducción
1.1. Compilar y ejecutar Java: JDK
1.2. Editar y compilar con un editor que permita el uso de colorespara resaltar el contenido
1.3. Compilar, ejecutar y realizar pruebas con un entornode desarrollo integrado (IDE)
1.4. Utilizar CLASSPATH eficazmente
1.5. Utilizar las clases API com.darwinsys de este libro
1.6 .Compilar los ejemplos de código fuente de este libro
1.7. Automatizar la compilación con Ant
1.8. Ejecutar subprogramas
1.9. Trabajar con advertencias de desaprobación
1.10. Depuración condicional sin #ifdef
1.11. Depurar impresiones
1.12. Mantener la corrección del programa mediante aserciones
1.13. Depurar con JDB
1.14. Pruebas de unidades: evitar la necesidad de depuradores
1.15. Obtener registros de seguimiento legibles
1.16. Buscar más código fuente Java
1.17. Programa: Debug
Capítulo 2. Interactuar con el entorno
2.0. Introducción
2.1. Obtener variables de entorno
2.2. Propiedades del sistema
2.3. Escribir código dependiente de la versión de JDK
2.4. Escribir código dependiente del sistema operativo
2.5. Uso de extensiones en otras API comprimidas
2.6. Analizar argumentos de la línea de comandos
Capítulo 3. Cadenas y otras cosas
3.0. Introducción
3.1. Separar cadenas en subcadenas
3.2. Separar cadenas mediante StringTokenizer
3.3. Unir cadenas mediante +, StringBuilder (JDK 5.0) yStringBuffer
3.4. Procesar una cadena carácter a carácter
3.5. Alinear cadenas
3.6. Convertir entre caracteres Unicode y cadenas
3.7. Invertir una cadena por palabra o carácter
3.8. Ampliar y comprimir tabulaciones
3.9. Controlar las mayúsculas o minúsculas
3.10. Aplicar sangría a documentos de texto
3.11. Introducir caracteres no imprimibles
3.12. Recortar los espacios en blanco situados al final de una cadena
3.13. Analizar datos separados por comas
3.14. Programa: Un formateador de texto sencillo
3.15. Programa: Comparaciones de nombre Soundex
Capítulo 4. Coincidencia de patrones con expresiones regulares
4.0. Introducción
4.1. Sintaxis de las expresiones regulares
4.2. Utilizar expresiones regulares en Java: probar un patrón
4.3. Buscar texto que coincida
4.4. Sustituir el texto encontrado
4.5. Imprimir todas las ocurrencias de un patrón
4.6. Imprimir líneas que incluyan un patrón
4.7. Controlar las mayúsculas y minúsculas en expresiones regulares
4.8. Buscar caracteres compuestos o "acentuados"
4.9. Buscar líneas nuevas en un texto
4.10. Programa: Análisis del archivo de registro de Apache
4.11. Programa: Minería de datos
4.12. Programa: Grep completo
Capítulo 5. Números
5.0. Introducción
5.1. Comprobar si una cadena es un número válido
5.2. Almacenar un número más grande en uno más pequeño
5.3. Convertir números en objetos y viceversa
5.4. Tomar una fracción de un entero sin utilizar la coma flotante
5.5. Garantizar la precisión de los números de coma flotante
5.6. Comparar números de coma flotante
5.7. Redondear números de coma flotante
5.8. Formatear números
5.9. Realizar conversiones entre los sistemas binario, octal,decimal y hexadecimal
5.10. Trabajar con una serie de enteros
5.11. Trabajar con números romanos
5.12. Formatear con los plurales correctos
5.13. Generar números aleatorios
5.14. Generar números aleatorios mejores
5.15. Calcular funciones trigonométricas
5.16. Calcular logaritmos
5.17. Multiplicar matrices
5.18. Utilizar números complejos
5.19. Trabajar con números muy grandes
5.20. Programa: TempConverter
5.21. Programa: Palíndromos numéricos
Capítulo 6. Fechas y horas
6.0. Introducción
6.1. Conocer la fecha de hoy
6.2. Imprimir la fecha/hora en un formato dado
6.3. Representar la fecha en otros calendarios
6.4. Convertir AMDHMS en los segundos de una época o calendario
6.5. Analizar cadenas como fechas
6.6. Convertir segundos de época en DMAHMS
6.7. Añadir a o restar de una fecha o calendario
6.8. Diferencia entre dos fechas
6.9. Comparar fechas
6.10. Día de la semana/mes/año o Número de la semana
6.11. Crear la página de un calendario
6.12. Medir el tiempo transcurrido
6.13. Suspender el equipo durante un tiempo
6.14. Programa: Servicio de recordatorio
Capítulo 7. Estructurar datos con Java
7.0. Introducción
7.1. Utilizar matrices para la estructuración de datos
7.2. Cambiar el tamaño de una matriz
7.3. Como una matriz, pero más dinámica
7.4. Uso de iteradores para accesos independientes de datos
7.5. Estructurar datos en una lista vinculada
7.6. Realizar asignaciones con Hashtable y HashMap
7.7. Almacenar cadenas en Properties y Preferences
7.8. Ordenar una colección
7.9. Evitar la ordenación inmediata
7.10. Evitar duplicaciones
7.11. Buscar un objeto en una colección
7.12. Convertir una colección en una matriz
7.13. Desarrollar su propio Iterator
7.14. Pila
7.15. Estructuras multidimensionales
7.16. Al fin, las colecciones
7.17. Programa: Comparaciones temporales
Capítulo 8. Estructuración de datos con Generic, foreach y Enumeration (JDK 5.0)
8.0. Introducción
8.1. Utilizar colecciones genéricas
8.2. Utilizar bucles "foreach"
8.3. Evitar conversiones mediante genéricos
8.4. Permitir conversiones en Java mediante AutoBoxingy AutoUnboxing
8.5. Utilizar enumeraciones de seguridad de tipos
8.6. Programa: MediaInvoicer
Capítulo 9. Técnicas orientadas al objeto
9.0. Introducción
9.1. Imprimir objetos: formatear con toString()
9.2. Omitir el método Equals
9.3. Omitir el método hashCode
9.4. El método clone
9.5. El método finalize
9.6. Utilizar clases internas
9.7. Proporcionar devoluciones de llamada a través de interfaces
9.8. Métodos abstractos y de polimorfismo
9.9. Transmitir valores
9.10. Garantizar la aplicación del patrón Singleton
9.11. Ajustar sus propias excepciones
9.12. Programa: Plotter
Capítulo 10. Entrada y salida
10.0. Introducción
10.1. Leer una entrada estándar
10.2. Escribir una salida estándar
10.3. Imprimir con el formateador de la versión 5.0
10.4. Explorar un archivo con StreamTokenizer
10.5. Explorar datos de entrada mediante la clase Scannerde la versión 1.5
10.6. Abrir un archivo por nombre
10.7. Copiar un archivo
10.8. Leer un archivo en una cadena
10.9. Volver a asignar las secuencias estándar
10.10. Duplicar una secuencia mientras se escribe
10.11. Leer/escribir un conjunto de caracteres diferente
10.12. Esos molestos caracteres de fin de línea
10.13. Cuidado con el código de archivos que dependende la plataforma
10.14. Leer líneas que continúan con lo siguiente
10.15. Datos binarios
10.16. Búsquedas
10.17. Escribir secuencias de datos desde C
10.18. Guardar y restaurar objetos Java
10.19. Evitar excepciones ClassCastExceptions con SerialVersionUID
10.20. Leer y escribir archivos Zip o JAR
10.21. Leer y escribir archivos comprimidos
10.22. Programa: De texto a PostScript
Capítulo 11. Operaciones del sistema de archivos y directorios
11.0. Introducción
11.1. Obtener información de archivos
11.2. Crear un archivo
11.3. Cambiar el nombre de un archivo
11.4. Eliminar un archivo
11.5. Crear un archivo transitorio
11.6. Cambiar los atributos de archivo
11.7. Enumerar el contenido de un directorio
11.8. Obtener el directorio raíz
11.9. Crear directorios nuevos
11.10. Programa: Find
Capítulo 12. Programar dispositivos externos: Puertos en serie y paralelos
12.0. Introducción
12.1. Seleccionar un puerto
12.2. Abrir un puerto serie
12.3. Abrir un puerto paralelo
12.4. Resolver conflictos entre puertos
12.5. Leer y escribir: Bloqueo-Paso
12.6. Leer y escribir: Controlado por eventos
12.7. Leer y escribir: Subprocesos
12.8. Programa: Trazador gráfico Penman
Capítulo 13. Gráficos y sonido
13.0. Introducción
13.1. Pintar con un objeto Graphics
13.2. Probar componentes gráficos
13.3. Dibujar texto
13.4. Dibujar texto centrado en un componente
13.5. Dibujar una sombra
13.6. Dibujar texto en 2D
13.7. Dibujar texto con la fuente de una aplicación
13.8.Dibujar una imagen
13.9. Reproducir un archivo de sonido
13.10. Reproducir un archivo de vídeo
13.11. Imprimir en Java
13.12. Programa: PlotterAWT
13.13. Programa: Grapher
Capítulo 14. Interfaces gráficas de usuario
14.0. Introducción
14.1. Mostrar componentes de la interfaz
14.2. Diseñar la distribución de una ventana
14.3. Una distribución en fichas
14.4. Gestión de acciones: hacer que los botones funcionen
14.5. Gestión de acciones mediante clases internas anónimas
14.6. Terminar un programa con "Cerrar ventana"
14.7. Cuadros de diálogo: cuando "Más tarde" no es la solución
14.8. Capturar y formatear excepciones de la interfaz gráfica
14.9. Obtener el resultado de un programa en una ventana
14.10. Elegir un valor con JSpinner
14.11. Elegir un archivo con JFileChooser
14.12. Elegir un color
14.13. Formatear JComponents con HTML
14.14. Centrar una ventana principal
14.15. Cambiar la apariencia de un programa de Swing
14.16. Mejorar la interfaz gráfica para Mac OS X
14.17. Programa: Selector de fuentes personalizado
14.18. Programa: Administrador de distribuciones personalizado
Capítulo 15. Internacionalización y localización
15.0. Introducción
15.1. Crear un botón con recursos de internacionalización
15.2. Mostrar las configuraciones regionales disponibles
15.3. Crear un menú con recursos de internacionalización
15.4. Escribir rutinas de conveniencia de internacionalización
15.5. Crear un cuadro de diálogo con recursos de internacionalización
15.6. Crear un paquete de recursos
15.7. Extraer cadenas del código
15.8. Utilizar una configuración local concreta
15.9. Definir la configuración regional predeterminada
15.10. Mensajes de formato
15.11. Programa: MenuIntl
15.12. Programa: BusCard
Capítulo 16. Clientes de red
16.0. Introducción
16.1. Ponerse en contacto con un servidor
16.2. Buscar direcciones de red e informar sobre ellas
16.3. Gestionar errores de red
16.4. Leer y escribir datos textuales
16.5. Leer y escribir datos binarios
16.6. Leer y escribir datos serializados
16.7. Datagramas UDP
16.8. Programa: Cliente TFTP UDP
16.9. Programa: Cliente Telnet
16.10. Programa: Cliente de conversación
Capítulo 17. Java de servidor: Sockets
17.0. Introducción
17.1. Abrir un servidor comercial
17.2. Devolver una respuesta (datos binarios o cadena)
17.3. Devolver información de objetos
17.4. Controlar varios clientes
17.5. Proporcionar el protocolo http
17.6. Proporcionar seguridad a un servidor Web con SSL y JSSE
17.7. Registros de red
17.8. Registros de red mediante log4j
17.9. Registros de red con JDK 1.4
17.10. Buscar interfaces de red
17.11. Programa: Un servidor de conversación en Java
Capítulo 18. Clientes de red II: Subprogramas y clientes Web
18.0. Introducción
18.1. Incrustar Java en una página Web
18.2. Técnicas de subprogramas
18.3. Ponerse en contacto con un servidor en el host del subprograma
18.4. Hacer que un subprograma muestre un documento
18.5. Hacer que un subprograma ejecute JavaScript
18.6. Hacer que un subprograma ejecute una secuenciade comandos CGI
18.7. Leer el contenido de un URL
18.8. ¿URI, URL o URN?
18.9. Extraer HTML desde un URL
18.10. Extraer URL de un archivo
18.11. Convertir un nombre de archivo en un URL
18.12. Programa: MkIndex
18.13. Programa: LinkChecker
Capítulo 19. Java y el correo electrónico
19.0. Introducción
19.1. Enviar correo electrónico: versión de navegador
19.2. Enviar correo electrónico: en serio
19.3. Habilitar para correo un programa de servidor
19.4. Enviar correo MIME
19.5. Proporcionar parámetros de correo
19.6. Enviar correo sin utilizar JavaMail
19.7. Leer correo electrónico
19.8. Programa: MailReaderBean
19.9. Programa: MailClient
Capítulo 20. Acceso a bases de datos
20.0. Introducción
20.1. Acceso a base de datos sencillo mediante JDO
20.2. Bases de datos de archivos de texto
20.3. Bases de datos DBM
20.4. Configuración y conexión JDBC
20.5. Conectarse a una base de datos JDBC
20.6. Enviar una consulta JDBC y obtener resultados
20.7. Utilizar instrucciones preparadas de JDBC
20.8. Utilizar procedimientos almacenados con JDBC
20.9. Cambiar datos mediante un ResultSet
20.10. Almacenar resultados en un RowSet
20.11. Cambiar datos mediante SQL
20.12. Buscar metadatos de JDBC
20.13. Programa: SQLRunner
Capítulo 21. XML
21.0. Introducción
21.1. Generar XML a partir de objetos
21.2. Transformar XML con XSLT
21.3. Analizar XML con SAX
21.4. Analizar XML con DOM
21.5. Verificar la estructura con una DTD
21.6. Generar XML con DOM
21.7. Programa: xml2mif
Capítulo 22. Java distribuido: RMI
22.0. ntroducción
22.1. Definir el contrato RMI
22.2. Crear un cliente RMI
22.3. Crear un servidor RMI
22.4. Implementar RMI por una red
22.6. Programa: NetWatch
Capítulo 23. Paquetes y empaquetado
23.0. Introducción
23.1. Crear un paquete
23.2. Documentar clases con Javadoc
23.3. Más allá de Javadoc: Anotaciones/Metadatos (JDK 5.0)y XDoclet
23.4. Archivar con jar
23.5. Ejecutar un subprograma desde un archivo JAR
23.6. Ejecutar un subprograma con un JDK moderno
23.7. Ejecutar un programa principal desde un archivo JAR
23.8. Preparar una clase como JavaBean
23.9. Almacenar el bean en un archivo JAR
23.10. Empaquetar un servlet en un archivo WAR
23.11. Escribir una vez, instalar siempre
23.12. Escribir una vez, instalar en Mac OS X
23.13. Java Web Start
23.14. Firmar un archivo JAR
Capítulo 24. Subprocesos de Java
24.0. Introducción
24.1. Ejecutar código en un subproceso diferente
24.2. Mostrar una imagen en movimiento con animación
24.3. Detener un subproceso
24.4. Rendezvous y tiempos de espera
24.5. Sincronizar subprocesos con la palabra clave synchronized
24.6. Simplificar la sincronización con Lock 5.0
24.7. Sincronizar subprocesos con wait() y notifyAll()
24.8. Simplificar el patrón Productor-Consumidor con la interfazQueue 5.0
24.9. Guardado de fondo en un editor
24.10. Programa: servidor de red con subprocesos
24.11. Simplificar los servidores por medio de ConcurrencyUtilities (JDK 5.0)
Capítulo 25. Introspección o una clase llamada clase
25.0. Introducción
25.1. Obtener un descriptor de clases
25.2. Buscar y utilizar métodos y campos
25.3. Cargar y crear instancias de una clase de forma dinámica
25.4. Construir una clase desde cero
25.5. Programar el rendimiento
25.6. Imprimir información sobre clases
25.7. Programa: CrossRef
25.8. Programa: AppletViewer
Capítulo 26. Utilizar Java con otros lenguajes
26.0. Introducción
26.1. Ejecutar un programa
26.2. Ejecutar un programa y capturar su resultado
26.3. Mezclar Java y secuencias de comandos con BSF
26.4. Combinar Java y Perl
26.5. Combinar en código nativo (C/C++)
26.6. Invocar Java desde código nativo
26.7. Programa: DBM
Epílogo
Índice alfabético