1. Historia y actualidad de Java
1.1. ¿Qué es Java?
1.2. Los más de 15 años de historia del lenguaje
1.3. Ediciones de la máquina virtual Java
1.4. Java en la vida cotidiana. ¿Dónde lo encontramos?
1.5. Un lenguaje muy ligado al mundo Open Source
1.6. Java Community Process y Java Specification Request
2. Máquina Virtual Java
2.1. Características
2.2. Arquitectura
2.3. El Bytecode
2.4. Garbage Collector
2.5. Comandos
2.5.1. Compilar un programa
2.5.2. Ejecutar programas
2.5.3. Otros comandos útiles
3. Fundamentos de la programación Java
3.1. Programación orientada a objetos
3.1.1. Propiedades de los objetos
3.1.2. Acciones del objeto libro
3.1.3. Relaciones entre objetos
3.1.4. Organización de objetos
3.2. Organización del código fuente
3.2.1. Librerías
3.2.2. Paquetes
3.2.3. Clases
3.3. Estructura de un programa
3.3.1. Importación de paquetes
3.3.2. Métodos
3.3.3. Variables o atributos
3.3.4. Palabras reservadas
3.4. Programación orientada a aspectos
4. Entornos de desarrollo
4.1. ¿Qué es un entorno de desarrollo integrado (IDE)?
4.2. Eclipse
4.3. Netbeans
4.3. Herramientas esenciales integradas en los IDEs
4.3.1. Ant
4.3.2. Maven
4.3.3. Repositorios de código fuente: CVS y SVN
5. Variables primitivas
5.1. Introducción
5.2. Variables de tipo numérico
5.3. Otros tipos de variables primitivas
5.4. Arrays de variables
5.5. Trabajando con variables
5.5.1. Declaración, inicialización y nomenclatura
5.5.2. Operaciones con variables
5.5.3. Ámbito de una variable
6. Control de flujo de un programa
6.1. Estructuras condicionales
6.1.1. BifurcacionesIf - Else - else if
6.1.2. Sentencia Switch
6.2. Estructuras de repetición
6.2.1. Bucle For
6.2.2. Bucle While y Do-While
7. Clases y Objetos
7.1. Creación de un nuevo objeto
7.2. Definición e invocación de métodos
7.2.1. Paso de parámetros
7.2.2. Retorno de valores
7.2.3. Sobrecarga de métodos
7.3. Constructores
7.3.1. Constructor por defecto
7.3.2. Sobrecarga del constructor
7.4. La variable this
7.5. Modificadores de acceso
7.6. Clases que envuelven los tipos primitivos
7.7. Una clase muy especial: String
7.8. Arrays de objetos
7.9. Operadores para trabajar con objetos
8. Jerarquía de clases
8.1. En qué consisten la herencia y el polimorfismo
8.2. Clases derivadas
8.2.1.S obrescritura de métodos
8.2.2. Sobrescritura de constructor
8.3. Clases abstractas e interfaces
8.3.1. Interfaces
8.3.2. Clases abstractas
8.4. Clases internas
8.5. Clases y variables estáticas
8.6. Clases y variables finales
9. Gestor de excepciones
9.1. ¿Qué es una excepción?
9.2. Jerarquía de clases que envuelven una excepción
9.3. Capturando excepciones
9.4. Levantar excepciones
9.5. Excepciones propias
10. Utilidades básicas del API
10.1. Introducción
10.2. La clase java.util.Objects
10.3. Tratamiento de cadenas de texto
10.3.1. Optimizando la concatenación de String con la clase StringBuilder
10.3.2. Introducción expresiones regulares
10.3.3. Troceando cadenas de texto
10.3.4. Buscar y reemplazar coincidencias dentro de una cadena de texto
10.3.5. Convertir a String cualquier dato primitivo mediante el método ValueOf
10.4. Trabajando con fechas
10.4.1. Principales clases para trabajar con fechas
10.4.2. Formateando fechas
10.5. Funciones matemáticas
10.6. Colecciones de objetos
10.6.1. Introducción
10.6.2. Implementaciones de la interfaz java.util.List
10.6.3. Implementaciones de la interfaz java.util.Set
10.6.4. Implementaciones de la interfaz java.util.Queue
10.6.5. Implementaciones de la interfaz java.util.Map
10.6.6. Genéricos
10.7. Flujos de entrada y salida de datos en el Sistema de Ficheros
10.7.1. I/O Streams
10.7.2. El paquete java.nio, manipulando el sistema de ficheros.
10.8. La clase java.lang.System
10.8.1. Salida por consola
10.8.2. Entrada de datos por consola
11. Anotaciones
11.1. Introducción
11.2. Anotaciones en tiempo de compilación
11.3. Anotaciones para la generación de ficheros fuente
11.4. Anotaciones para documentar el código
11.5. Anotaciones en tiempo de ejecución
12. Interfaz gráfica
12.1. Introducción a las interfaces gráficas en Java
12.1.1. AWT (Abstract Windows Toolkit) y Swing
12.2. Contenedores y componentes
12.2.1. Contenedores
12.2.2. Componentes más comunes
12.3. Layout Manager: Ordenando los componentes en la pantalla
12.3.1. FlowLayout
12.3.2. BoxLayout
12.3.3. CardLayout
12.3.4. BorderLayout
12.3.5. GridBagLayout
12.3.6. GridLayout
12.3.7. GroupLayout
12.3.8. SpringLayout
12.4. Gestión de eventos
12.5. Dibujando sobre los componentes
12.6. Juego del Memorión
13. Programación Multihilo
13.1. Introducción
13.2. ¿Qué es un thread?
13.2.1. Ciclo de vida de un thread
13.2.2. Creando unthread
13.3. Sincronización de métodos
14. Acceso a Base de Datos
14.1. Conociendo el API Java Database Connectivity (JDBC)
14.2. Drivers JDBC
14.3. Establecer la conexión con la Base de Datos
14.4. Lanzar comandos SQL
14.4.1. Lanzar comandos SQL de actualización
14.4.2. Lanzar comandos SQL de consulta de datos
14.5. Excepciones SQL
14.6. Pool de Conexiones y DataSource
15. Acceso a la Red
15.1. Introducción
15.2. Socket
15.2.1. ServerSocket
15.2.2. Socket cliente
15.3. Conectar con un dominio Web
15.4. RMI
16. Desarrollo de aplicaciones Web
16.1. Introducción
16.2. Servidores de aplicaciones Java
16.2.1. Instalación del servidor Apache Tomcat
16.3. Arquitectura de una aplicación Web
16.3.1. Creando un proyecto Web
16.4. Creando un Servlet
16.5. Creando una JSP
16.5.1. Directivas JSP
16.5.2. Librerías de etiquetas JSP
17. Applets y Java Web Start
17.1. Introducción
17.2. Applets: Ejecutando aplicaciones Java empotradas en un navegador Web
17.2.1. Ciclo de vida de un Applet
17.2.2. Integración en páginas HTML
17.3. Java Web Start: Descargar y ejecutar aplicaciones Java desde la Web
A. Resumen de novedades en la edición 7
B. Librerías, frameworks y productos de terceros generalizados en el mundo Java
C. Resumen alfabético