Agradecimientos
Sobre el autor
Sobre el editor técnico
Introducción
La evolución de Java
Java SE 9
Organización del libro
Convenciones
No se necesita experiencia de programación
Requisitos de software
Código fuente
1. Conceptos de Java
Los orígenes de Java
Cómo Java afectó a Internet
La magia de Java: el código de bytes
Vida después de los applets
Términos principales de Java
Programación orientada a objetos
Obtener el kit de desarrollo de Java
El primer programa
Solucionar errores sintácticos
Otro sencillo programa
Otro tipo de datos
Dos instrucciones de control
Crear bloques de código
Puntos y coma y ubicación
Técnicas de sangrado
Palabras clave de Java
Identificadores en Java
Las bibliotecas de clases de Java
Evaluación de conocimientos
2. Tipos de datos y operadores
Importancia de los tipos de datos
Tipos primitivos de Java
El tipo boolean
Literales
Variables
Ámbito y duración de variables
Operadores
Operadores aritméticos
Operadores relacionales y lógicos
Operadores lógicos de cortocircuito
El operador de asignación
Asignaciones abreviadas
Conversión de tipos en asignaciones
Convertir tipos incompatibles
Precedencia de operadores
Expresiones
Evaluación de conocimientos
3. Instrucciones de control
Introducir caracteres desde el teclado
La instrucción if
Instrucciones if anidadas
La cadena if-else-if
La instrucción switch
Instrucciones switch anidadas
El bucle for
Variantes del bucle for
Componentes vacíos
Bucles sin cuerpo
Declarar variables de control de bucle dentro del bucle for
El bucle for mejorado
El bucle while
El bucle do-while
Utilizar break para salir de un bucle
Usar break como goto
Utilizar continue
Bucles anidados
Evaluación de conocimientos
4. Clases, objetos y métodos
Clases: aspectos esenciales
Crear objetos
Variables de referencia y asignación
Métodos
Añadir un método a la clase Vehicle
Devolver valores desde un método
Devolver un valor
Utilizar parámetros
Añadir un método con parámetros a Vehicle
Constructores
Constructores con parámetros
Añadir un constructor a la clase Vehicle
Revisión del operador new
Recolección de basura y uso de finalizadores
El método finalize()
La palabra clave this
Evaluación de conocimientos
5. Otros tipos de datos y operadores
Matrices
Matrices multidimensionales
Matrices irregulares
Sintaxis alternativa para declarar matrices
Asignar referencias de matriz
Usar el miembro length
El bucle for de estilo for-each
Cadenas
Utilizar argumentos de línea de comandos
Los operadores de orden de bits
El operador ?
Evaluación de conocimientos
6. Análisis detallado de métodos y clases
Controlar el acceso a los miembros de una clase
Pasar objetos a métodos
Devolver objetos
Sobrecargar métodos
Sobrecargar constructores
Recursión
Comprender static
Clases anidadas e internas
Argumentos de longitud variable: varargs
Evaluación de conocimientos
7. Herencia
Aspectos básicos de la herencia
Acceso a miembros y herencia
Constructores y herencia
Utilizar super para invocar constructores de superclase
Utilizar super para acceder a miembros de una superclase
Crear una jerarquía multinivel
Cuándo se ejecutan los constructores
Referencias de superclase y objetos de subclase
Reemplazar métodos
Los métodos reemplazados admiten polimorfismo
Por qué reemplazar métodos
Utilizar clases abstractas
Utilizar final
La clase Object
Evaluación de conocimientos
8. Paquetes e interfaces
Paquetes
Paquetes y acceso a miembros
Miembros protegidos
Importar paquetes
La biblioteca de clases de Java se incluye en paquetes
Interfaces
Implementar interfaces
Utilizar referencias de interfaz
Variables en interfaces
Ampliar interfaces
Métodos de interfaz predeterminados
Usar métodos estáticos en una interfaz
Métodos private de interfaz
Consideraciones finales sobre paquetes e interfaces
Evaluación de conocimientos
9. Controlar excepciones
La jerarquía de excepciones
Fundamentos del control de excepciones
Consecuencias de una excepción sin capturar
Utilizar varias instrucciones catch
Capturar excepciones de subclases
Anidar bloques try
Generar una excepción
Análisis de Throwable
Utilizar finally
Utilizar throws
Tres nuevas funciones de excepciones
Excepciones integradas de Java
Crear subclases de excepción
Evaluación de conocimientos
10. Utilizar E/S
E/S de Java se basa en flujos
Flujos de bytes y de caracteres
Clases de flujo de bytes
Clases de flujo de caracteres
Flujos predefinidos
Utilizar los flujos de bytes
Leer y escribir archivos con flujos de bytes
Cerrar automáticamente un archivo
Leer y escribir datos binarios
Archivos de acceso aleatorio
Utilizar los flujos basados en caracteres de Java
E/S de archivos con flujos de caracteres
Utilizar envoltorios de tipos de Java para convertir cadenas numéricas
Evaluación de conocimientos
11. Programación de subprocesamiento múltiple
Aspectos básicos del subprocesamiento múltiple
La clase Thread y la interfaz Runnable
Crear un subproceso
Crear varios subprocesos
Determinar el final de un subproceso
Prioridades de subprocesos
Sincronización
Utilizar métodos sincronizados
La instrucción synchronized
Comunicar subprocesos con notify(), wait() y notifyAll()
Suspender, reanudar y detener subprocesos
Evaluación de conocimientos
12. Enumeraciones, autoboxing, importación estática y anotaciones
Enumeraciones
Las enumeraciones de Java son tipos de clases
Los métodos values() y valueOf()
Constructores, métodos, variables de instancia y enumeraciones
Las enumeraciones heredan enum
Autoboxing
Envoltorios de tipos
Aspectos básicos de autoboxing
Autoboxing y métodos
Autoboxing/Unboxing en expresiones
Importación estática
Anotaciones (metadatos)
Evaluación de conocimientos
13. Genéricos
Aspectos básicos de los genéricos
Un sencillo ejemplo de genéricos
Tipos vinculados
Usar argumentos comodín
Comodines vinculados
Métodos genéricos
Constructores genéricos
Interfaces genéricas
Tipos sin procesar y código de legado
Inferencia de tipos con el operador de rombo
Supresión
Errores de ambigüedad
Restricciones genéricas
Ampliar su estudio de los genéricos
Evaluación de conocimientos
14. Expresiones lambda y referencias de método
Expresiones lambda: Introducción
Bloques de expresiones lambda
Interfaces funcionales genéricas
Expresiones lambda y captura de variables
Generar una excepción desde una expresión lambda
Referencias de método
Referencias de constructor
Interfaces funcionales predefinidas
Evaluación de conocimientos
15. Módulos
Fundamentos de los módulos
java.base y los módulos de plataforma
Código de legado y el módulo sin nombre
Exportar un módulo específico
Usar requires transitive
Usar servicios
Otras funciones de los módulos
Siga estudiando los módulos
Evaluación de conocimientos
16. Swing: Introducción
Los orígenes y la filosofía de diseño de Swing
Componentes y contenedores
Administradores de diseño
Un sencillo programa Swing
Manejo de eventos de Swing
Utilizar JButton
Trabajar con JTextField
Crear un componente JCheckBox
Trabajar con JList
Utilizar clases internas anónimas para procesar eventos
Crear un applet de Swing
Evaluación de conocimientos
17. Presentación de JavaFX
Conceptos básicos de JavaFX
Estructura de una aplicación JavaFX
Compilar y ejecutar un programa de JavaFX
El subproceso de la aplicación
Un sencillo control JavaFX: Label
Utilizar botones y eventos
Otros tres controles de JavaFX
Presentación de efectos y transformaciones
A continuación
Evaluación de conocimientos
Apéndice A. Respuestas
Apéndice B. Utilizar comentarios de documentación de Java
Etiquetas javadoc
Formato general de un comentario de documentación
Qué muestra javadoc
Un ejemplo de comentarios de documentación
Apéndice C. Introducción a Java Web Start
¿Qué es Java Web Start?
Cuatro claves de Java Web Start
Experimentar con Java Web Start utilizando el sistema de archivos local
Ejecutar una aplicación de Java Web Start con javaws
Usar Java Web Start con un applet
Apéndice D. Introducción a JShell
Fundamentos de JShell
Listar, editar y volver a ejecutar código
Añadir un método
Crear una clase
Usar una interfaz
Evaluar expresiones y utilizar variables integradas
Importar paquetes
Excepciones
Otros comandos de JShell
Explorar JShell más a fondo
Apéndice E. Más palabras clave de Java
Los modificadores transient y volatile
Instanceof
Strictfp
Assert
Métodos nativos
Otra forma de this
Índice alfabético
El diseño de Java, su robustez, el respaldo de la industria y su fácil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintas áreas de la industria de la informática. Su gran impacto en el desarrollo web, su protagonismo en el ámbito de las aplicaciones para dispositivos móviles, e incluso su sencillez y dinamismo para crear aplicaciones de escritorio, hacen de Java la plataforma de desarrollo número uno del mundo.
Herbert Schildt le presenta esta obra, totalmente actualizada para la plataforma Java Standard Edition 9 (Java SE 9), a través de un enfoque paso a paso repleto de ejemplos, evaluaciones y proyectos. Comienza con los aspectos básicos, como la forma de compilar y ejecutar un programa Java, para después analizar la sintaxis y las construcciones que conforman el núcleo del lenguaje Java.
También se describen las funciones más avanzadas, como la programación de subprocesamiento múltiple, los genéricos, las expresiones lambda, Swing, JavaFX, y, naturalmente, la nueva e innovadora función modular de Java SE 9. Por último, incluye una introducción a JShell, la nueva herramienta de programación interactiva de Java. Al finalizar el libro, dispondrá de una sólida base para programar con Java.