Objetivos
Todo lo que un Administrador de Sistemas debería saber sobre la plataforma de ejecución Java y sus componentes.
- Comprender el funcionamiento básico de las principales aplicaciones Java, desde el punto de vista de de su explotación en entornos de ejecución.
- Conocer la diferencia entre Java como lenguaje y como plataforma de ejecución, los distintos componentes de la Máquina Virtual de Java de cara al rendimiento y disponibilidad del sistema.
- Sin necesidad de entrar a programar, entenderán qué es la plataforma de ejecución Java y cómo optimizarla para obtener el mejor rendimiento de las aplicaciones.
- Entender los principales problemas que encontramos trabajando con dichas aplicaciones para afrontarlos con mayor resolución/conocimiento.
¿A quién va dirigido?
Administradores de sistemas que trabajen con entornos Java y deseen conocer el funcionamiento de esta plataforma.
NO ES UN CURSO DE PROGRAMACIÓN, pero los desarrolladores pueden conocer Java desde el punto de vista de un administrador de sistemas: cómo se despliegan sus aplicaciones, las monitorizan y mantienen.
Contenidos
1. Introducción a Java
- ¿Qué es Java?
- Lenguaje y Plataforma: JRE y JDK
- Java Virtual Machine (JVM)
- Distribuciones
- La evolución de Java
- Empaquetado
- Classloaders
- Tipos de aplicaciones Java
2. Java en Aplicaciones Web
- Protocolo HTTP. Revisión.
- Conceptos de páginas dinámicas
- Contenedores de aplicaciones. Introducción
- Descriptor de despliegue: web.xml
- Servlets. Introducción a los Servlets Genéricos
- Servlets HTTP. Ejecución. Request y Response
- Servlets. Get VS Post
- Servlets. Ciclo de Vida
- Servlets. Despliegue y Configuración
- Servlets. Ventajas y Desventajas
- JSP. Introducción
- JSP. Sintáxis y Contenido Básico
- JSP. Etiquetas y librerías de Etiquetas
- JSP. Variables implícitas y Directivas
- MVC. Introducción
- MVC. Modelo + Vista + Controlador
- MVC. Contextos
- MVC. Frameworks más importantes
- Filtros
- Listeners
3. Despliegue en servidores
- Tipos de Contenedores de Aplicaciones
- Tomcat. Introducción
- Tomcat. Instalacion, Variables de Entorno y Classpath
- Tomcat en Cluster con Apache
- Tomcat. Problemas Comunes I
- Tomcat. Problemas Comunes II
- Otros Contenedores. Introducción
- Otros Contenedores. Eclipse Jetty
- Otros Contenedores. Apache TomEE
- Otros Contenedores. JBoss Wildfly
- Otros Contenedores. Oracle Weblogic Server
- Otros Contenedores. IBM WebSphere Application Server (WAS)
- Otros Servidores. Resumen de Características
- Despliegue de Múltiples Aplicaciones
- Concepto de sesión
- Sesión. Clúster de servidores y sesión: Mecanismos y Gestión en Tomcat
- Sesión. Configuración en Tomcat
- Nuevos sistemas de despliegue: Software Containers. Docker
- Certificados y el Keytool de Java
- Ajustes de Configuración: File Descriptors del Sistema Operativo
- Ajustes de Configuración: Conexiones en Apache: módulos MPM
- Ajustes de Configuración: Conexiones en Apache: KeepAlive
- Ajustes de Configuración: Impacto de Bases de Datos en la carga de la Arquitectura.
- Ajustes de Configuración: Tiempos de TimeOut
- Ejemplo: Infraestructura de Apache y Tomcat en DMZ
4. Acceso a Datos
- Especificación JDBC. Introducción
- Especificación JDBC. Driver
- Especificación JDBC. Tipos de Driver
- Especificación JDBC. Composición de la API
- Datasource
- Demo 1: Uso de un DataSource en Tomcat
- Demo 2: Uso de un DataSource en WildFly
- Pool de Conexiones
- Demo 3: Configuración del Pool de conexiones en Tomcat
- Gestión de Transacciones – JTA: Introducción a las Transacciones
- Gestión de Transacciones – JTA. Transacciones Locales VS Distribuidas
- Gestión de Transacciones – JTA. JTA API
- Gestión de Transacciones – JTA. Two-phase commit
- Gestión de Transacciones – JTA. Aislamiento y Concurrencia
- JNDI y definición de recursos a nivel global. Introducción
- JNDI y definición de recursos a nivel global. Servicio de Directorio en Java
- Demo 4: JNDI y definición de recursos a nivel global
5. Gestión de memoria en Java
- La gestión de memoria en Java. Introducción
- La gestión de memoria en Java. Introducción
- Estructura de memoria. Distribución de la memoria
- Estructura de memoria. Permgen y Metaspaces
- Estructura de memoria. Espacios de Generaciones
- Estructura de memoria. Configuración
- Garbage Collector. Introducción
- Garbage Collector. Memoria y Tipos
- Garbage Collector. Algoritmos e Implementaciones
- Garbage Collector. Configuración
- Monitorización e Impacto en el Rendimiento. Introducción a la Monitorización
- Monitorización e Impacto en el Rendimiento. Rendimiento
- Monitorización e Impacto en el Rendimiento. Trazas del Garbage Collector
- Monitorización e Impacto en el Rendimiento. Herramientas de Análisis de Memoria
- Demo 1: Análisis del Garbage Collector con HPJMeter
6. Monitorización y rendimiento
- JMX. Introducción
- JMX. Estructura
- JMX. Monitorización Remota
- JMX. Monitorización JVM y Consolas
- Parámetros de configuración de la JVM
- Demo 1: Plan de pruebas de carga con JMeter
- Demo 2: Uso de AppDynamics
- Demo 3: Uso de New Relic
7. Logging
- Introducción a las trazas en Java
- Introducción a las trazas en Java. Requisitos de un buen sistema de trazas
- Frameworks e Interfaces. Introducción
- Frameworks e Interfaces. Frameworks en Java
- Frameworks e Interfaces. Log4J 2.x
- Frameworks e Interfaces. Interfaces de Logging
- Frameworks e Interfaces. Recomendación de Arquitectura de Logging
- Configuración en Caliente. Introducción
- Configuración en Caliente. Modos de implementación
- Errores comunes en el Log. Excepciones y Mensajes