
Hola:
Bienvenidos al curso de Java para Administradores de Sistemas.
Como sabes, Java es una de las plataformas más utilizadas en el mundo de las aplicaciones empresariales. A día de hoy, muchos de los grandes sistemas corporativos están realizados con esta tecnología.
Así mismo Java es uno de los lenguajes más populares y demandados entre los programadores, según el índice TIOBE…. ¿Pero qué conocen de Java los administradores de sistemas?
En este curso pretendemos reducir la distancia que hay en el mundo Java entre los programadores y los administradores de sistemas.
Pero tranquilo, no es un curso de programación. No tenemos intención reconvertir a los administradores de sistemas en programadores…
Lo que queremos es que los administradores de sistemas entiendan qué es Java y cómo funcionan los diferentes componentes que forman parte en las aplicaciones que despliegan día a día.
De este modo los administradores de sistemas podrán entender cómo optimizar las características de la infraestructura de los servidores, o estarán más preparados para aportar soluciones ante las incidencias.
Resumen del contenido
En el primer módulo comenzaremos con una introducción a la plataforma Java. Hablaremos del lenguaje y la plataforma, la máquina virtual, tipos de empaquetados que se producen o tipos de aplicaciones.
En el segundo módulo trataremos la relación de Java con las aplicaciones de Internet: veremos los componentes que se emplean para poder crear aplicaciones Web, tales como los servlets, JSP. También introduciremos el concepto de los frameworks modelo vista controlador
En el tercer módulo hablaremos de contenedores de aplicaciones en Java y arquitecturas de ejecución: proxies con Apache, clusters de tomcat, incluso algunas nuevas herramientas para la automatización del despliegue de aplicaciones como por ejemplo Docker.
El cuarto módulo lo hemos dedicado al acceso a Base de datos desde Java, con el protocolo JDBC, Datasources o transacciones y servicios de directorio.
La gestión de la memoria en Java protagoniza el quinto módulo. Veremos cómo está la memoria estructurada y dividida en zonas y los mecanismos del garbage collector, así como su impacto en el rendimiento y herramientas para el análisis de la memoria.
En el sexto módulo hablaremos sobre la monitorización y el rendimiento. Veremos el protocolo que utiliza Java para transmitir el estado de sus componentes, y veremos las herramientas existentes en la actualidad, desde las consolas de monitorización que vienen con el JDK hasta las nuevas herramientas de análisis tipo AppDynamics o New Relic.
Finalmente, en el séptimo módulo veremos las trazas o logging en Java. Qué tipos de frameworks de trazas existen en java y las características de cada uno. También veremos otros aspectos como el cambio de configuración en caliente o los principales mensajes que se pueden encontrar en un log y su explicación.
En este primer capítulo de introducción a Java vamos a explicar qué es Java y cómo se divide en JRE+JDK. Veremos tanto sus principales características como sus distintos componentes, módulos y versiones. Así podrás hacer una idea básica de esta plataforma.
En este tema vamos a ver una introducción con algo más de detalle a la máquina virtual de Java o JVM: Veremos sus principales componentes internos para así tener una noción básica de su funcionamiento. También trataremos la posibilidad de ejecutar otros lenguajes, y veremos más detalladamente el proceso de ejecución.
En esta lección vamos a ver las diferentes formas en las que se distribuye Java gracias a su arquitectura modular. Veremos desde las versiones normales, hasta otras empresariales, introduciendo el nuevo enfoque modular que inicia Java 8 con sus Compact Profiles y que continúa Java 9 con el proyecto Jigsaw.
En este tema vamos a ver brevemente la historia y la evolución de Java, guiada por los JSR y en el Java Community Process (JSP), y que lo han convertido uno de los lenguajes y plataformas más relevantes de nuestro tiempo.
En este tema vamos a tratar el tema del empaquetado de código en Java, que es una forma de compactar y distribuir las aplicaciones, facilitando la labor de despliegue y la especificación de dependencias. Veremos tanto el empaquetado Java básico (.jar) como los dedicados a web (.war) y aplicaciones empresariales (.ear)
Java, al ser un lenguaje orientado a objetos se basa en instancias de clases que contienen el código. Para cargar estas clases se utiliza un mecanismo particular de la plataforma llamados ClassLoaders. Veremos su funcionamiento y la importancia que tienen en la plataforma.
En esta lección vamos a ver una clasificación básica de los tipos de aplicaciones que se pueden desarrollar en Java, así podremos ubicar, dentro del ecosistema Java, las aplicaciones sobre las que trabajamos: stand-alone, Web, Applets, Empresariales, JavaFX...
En este vídeo veremos cómo crear una aplicación Java sencilla utilizando el entorno de desarrollo "Eclipse", cómo ejecutarla, y también empaquetarla en un ficheros distribuíble de tipo .jar
En este video vamos a ver cómo se crea una aplicación web sencilla en Java utilizando servlets, que son la piedra angular sobre la que se basan todas las aplicaciones en Web de Java. Crearemos un paquete de tipo .war y lo desplegaremos en un contenedor de servlets clásico como es Tomcat.
Las aplicaciones Web, sea cual sea la tecnología que utilicen, deben utilizar un protocolo para comunicarse con los clientes y entre ellas. Este protocolo es HTTP. Vamos a ver de qué trata para poder entender el papel de Java en este tipo de aplicaciones.
En esta lección vamos a ver unas primeras nociones sobre las páginas web dinámicas, que son fundamentales para entender cómo Java aporta valor a la hora de crear aplicaciones basadas en tecnologías Web.
Las aplicaciones Web escritas en Java necesitan de un entorno de ejecución. Este entorno de ejecución no puede ser el de un servidor Web estándar que sirve recursos estáticos como Apache, sino que es un tipo de servidor especial llamado Contenedor de aplicaciones. Vamos a ver una breve introducción a este tipo de servidores.
Los contenedores de servlets utilizan un descriptor de despliegue para saber cómo tienen que operar con los servlets de la aplicación y otros elementos como filtros y listeners. Este fichero está estandarizado en la API Servlet en forma de web.xml. En esta lección vamos a ver una introducción al contenido de este descriptor de despliegue.
Los servlets son la piedra angular de la tecnología de Java para la creación de aplicaciones Web. Están organizados en dos niveles: los genéricos y los dependientes del protocolo HTTP. En esta lección veremos los servlets genéricos
Cuando se trabaja con servlets para el desarrollo de aplicaciones Web se emplea una implementación del servlet genérico específica para HTTP. En esta lección vamos a ver cómo es un servlet de tipo HTTP, su modelo de ejecución y la relación con el request y el response del protocolo HTTP.
Dentro de los request que hace un usuario a una aplicación Web, destacan dos tipos principalmente: Las peticiones de tipo get y las de tipo post. Vamos a ver en esa lección las diferencias entre una y otra, y cómo le afectan a los servlets de tipo HTTP.
El modelo de servlets tiene un ciclo de vida que gobierna su comportamiento desde que se arranca el contenedor de servlets hasta que se dejan de usar, pasando claro está, por la recepción de las peticiones. Vamos a ver en esta lección las características de este ciclo de vida.
Los servlets de tipo HTTP no viven aisladamente en el contenedor de servlets. Existe una configuración que describe cómo tiene que ser su despliegue y qué valores iniciales se le asignan para poder dar el servicio para el que fueron creados. Éstos son los puntos que trataremos en esta lección.
Los servlets son el punto de entrada para hacer aplicaciones Web en Java, pero desde luego que no son los ideales para tareas complejas. Tienen sus ventajas y sus inconvenientes, que veremos en esta lección.
En esta lección vamos a ver una introducción a JSP o Java Server Pages, que es una tecnología de Java para el desarrollo de aplicaciones Web, y que combina HTML con código Java. Está basado en los servlets como veremos.
En esta lección vamos a ver los componentes básicos que utilizan para crear páginas JSP.
Una de las posibilidades más importantes de JSP es la posibilidad de facilitar el desarrollo en base a etiquetas propias del lenguaje y librerías, reduciendo la cantidad de código Java que es necesario escribir para muchas funcionalidades. Lo veremos en esta lección.
Las páginas JSP deben poder comunicarse con otros componentes que el contenedor de servlets utiliza para modelar el protocolo HTTP tal y como se hacía con los servlets. En esta lección vamos a ver las referencias a estos recursos en forma de variables implícitas y las directivas que se pueden usar en JSP para extender sus posibilidades.
Las aplicaciones empresariales actuales están construidas sobre la base de los Servlets y las páginas JSP, pero utilizando frameworks mucho más complejos. Estos frameworks están basados en el patrón MVC o Modelo Vista Controlador. Vamos a ver una introducción a esta arquitectura de aplicaciones.
En esta lección vamos a ver en detalle los componentes del patrón Modelo Vista Controlador o MVC, y que es el más utilizado para el desarrollo de aplicaciones Web, y en general para las aplicaciones que tienen interacción compleja con el usuario final.
Los contextos son otra de las piezas fundamentales para las aplicaciones Web en todas las arquitecturas y tecnologías. Java también los utiliza, y sobre ellos se modela gran parte de la funcionalidad de los frameworks. Vamos a ver cuáles son y qué se puede hacer con ellos.
El patrón MVC es seguido por la mayoría de los frameworks de aplicaciones Web en cualquier lenguaje, y cómo no, también por Java. En esta lección vamos a hacer un breve repaso por los frameworks más relevantes.
Dentro del esquema de las aplicaciones Web en Java, además de los servlets, no podemos dejar pasar por alto un componente muy útil que permite realizar operaciones previas al procesamiento del request y el response. En esta lección vamos a ver qué son los filtros en aplicaciones Web Java, para qué se pueden usar y cómo se crean y configuran.
Otro elemento de la arquitectura básica de Java en Web, además de los servlets y los filtros son los listeners. Vamos a ver qué son y cómo se utilizan.
En este vídeo veremos cómo se crean las páginas de tipo JSP, su sintáxis, librerías de tags y scriptlets de código.
En este vídeo veremos ejemplos de la funcionalidad que nos brindan los filtros y listeners, ilustrándolo con una pequeña aplicación de Login.
En este vídeo haremos uso de Maven y SpringMVC para crear una pequeña aplicación web de ejemplo que nos sirva para introducirnos en la arquitectura de Spring.
En esta lección vamos a tratar la distinción entre los tres tipos fundamentales de servidores que están involucrados en la distribución de las aplicaciones Web: estáticos, contenedores de servlets y servidores de aplicaciones.
El servidor más sencillo para las aplicaciones Web desarrolladas en Java es un Contenedor de Servlets, y el más popular es Apache Tomcat, que será el que veamos en esta lección.
En esta lección vamos a ver cómo podemos instalar Tomcat y comprender las variables de entorno que utiliza, así como su particular modo de establecer el classpath para acceder a las clases Java que ejecuta.
En los entornos en los que se requiere de alto rendimiento y disponibilidad es común contar con varias instancias de Tomcat que se ejecutan en modo cluster. En este caso Apache actúa como puerta de entrada y balanceador. Vamos a ver de qué se trata todo este sistema en esta lección.
En este vídeo vamos a hacer un repaso de los principales problemas que suelen surgir en Tomcat a la hora de poner en funcionamiento las aplicaciones Web.
En esta lección continuaremos viendo los problemas más comunes que nos podemos encontrar a la hora de tratar con el contenedor de servlets Tomcat, y que suelen repetirse en otros servidores de aplicaciones. Nos centraremos especialmente en problemas relacionados con la memoria, que son excepciones en tiempo de ejecución.
En este vídeo veremos cómo se instala y se pone en marcha el contenedor de servlets Tomcat 7 de forma manual usando wget con un vídeo de demostración práctico.
En este vídeo veremos como se instala y se pone en marcha el contenedor de servlets Tomcat 7 a través del gestor de paquetes APT que incluyen los servidores de tipo linux Debian.
En este vídeo de demostración veremos cómo se construye una arquitectura básica de clustering de servidores Tomcat detrás de un servidor web Apache a modo de proxy.
En este tema vamos a presentar algunos de los contenedores de aplicaciones (bien contenedores de Servlets o bien servidores de aplicaciones) más utilizados en el mundo Java.
Jetty es una de las alternativas más populares a Tomcat ya que se sitúan en el mismo nivel: como contenedores de Servlets. Además destaca por su capacidad de innovación y de implementación de las últimas evoluciones de las especificaciones de Java. Vamos a ver sus principales características.
Tomcat es un contenedor de servlets que no dispone de las capacidades de Java Enterprise Edition (Java EE) que pueden tener los servidores de aplicaciones más potentes. Existe una distribución llamada TomEE que complementa a Tomcat con módulos de JEE y una interfaz de gestión que lo asemeja a otras soluciones más completas, incluso comerciales. Vamos a repasar sus características en este vídeo.
WildFly es la alternativa de código abierto con más recorrido a los servidores de aplicaciones comerciales. Es el nuevo nombre del clásico JBoss Application Server (AS). Vamos a ver sus características principales en esta lección.
A grandes problemas grandes soluciones. Este parece ser el lema de la suite de Oracle para soluciones empresariales de alto calado, donde su servidor Weblogic Server juega un papel importante. Vamos a ver sus principales características en esta lección.
Otra de las soluciones comerciales para grandes sistemas es el conocido IBM Websphere Application Server o más conocido como WAS. Vamos a ver sus características principales en esta lección.
En este vídeo vamos a ver un cuadro resumen de las características de los servidores de aplicaciones Java vistos con anterioridad.
En este vídeo veremos un screencast de la instalación del servidor de aplicaciones JBoss Wildfly, principal alternativa a los servidores de Oracle e IBM.
Es bastante común que los servidores de aplicaciones no ejecuten una única aplicación sino varias de forma simultánea. De hecho es posible que una gran aplicación Web esté dividida en sub-aplicaciones que pueden o no compartir librerías. En este tema vamos a ver cómo los servidores de aplicaciones en Java se las arreglan para gestionar diferentes aplicaciones Web de forma paralela.
El concepto de sesión es uno de los mecanismos más importantes a la hora de la interacción entre los usuarios y los servidores. Vamos a ver en esta lección las particularidades de las sesiones en los servidores de aplicaciones.
La sesión es un mecanismo imprescindible par las aplicaciones Web actuales ya que almacena los datos del cliente en el servidor. Pero en los entornos reales de producción suelen existir clusters con varios servidores, lo que requiere tener especial cuidado en el tratamiento de la memoria. En esta lección vamos a ver los mecanismos de tratamiento de sesiones en servidores en cluster, tomando al servidor Tomcat como ejemplo.
En esta lección veremos el modo que tiene Tomcat para configurar las diferentes estrategias para gestionar la sesión distribuida cuando opera en un cluster de servidores.
Después del boom en la industria que produjo la virtualización de máquinas, empleadas como entornos de producción, una nueva tecnología de virtualización ligera ha emergido en los últimos tiempos, que parece ser el nuevo paso en entornos de este tipo. En esta lección veremos qué es Docker y sobre qué conceptos se asienta, así como las posibles arquitecturas que se pueden diseñar con ello.
En la actualidad suele ser requisito que las comunicaciones con las aplicaciones tengan que ir cifradas para proteger estas informaciones. En esta lección vamos a ver qué son los certificados y cómo se gestionan con el keytool de Java.
En este vídeo veremos las diferentes opciones que se nos presenta en un cluster de Tomcats para mantener la afinidad de sesión de los usuarios.
En este vídeo veremos como implementar un canal seguro de comunicación entre las instancias de un cluster de Tomcats con SSL.
En esta lección vamos a ver uno de los primeros puntos que se deben considerar a la hora de configurar un servidor que se ejecuta con el sistema operativo Unix o Linux. No es otro que los descriptores de ficheros.
En cualquier arquitectura, lo común es que existan unos servidores Apache que actúen como proxy o puerta de entrada al sistema completo. Por tanto las conexiones a estos servidores Apache son vitales. En esta lección veremos las diferencias entre los módulos que Apache utiliza para procesar las peticiones de los clientes.
En esta lección vamos a ver otro parámetro importante en Apache, sobre todo cuando actúa como frontal de una gran arquitectura. No es otro que el KeepAlive de las conexiones HTTP.
Una de las partes más importantes de una arquitectura es la base de datos, donde reside la información con la que se trabaja. También es fuente de problemas para la carga de la aplicación completa. Vamos a ver algunos consejos de interés.
En esta lección vamos a ver un concepto básico a la hora de establecer los parámetros de configuración de la red en una arquitectura compleja, como son los tiempos de time out.
En esta lección vamos a ver un ejemplo en el que implementamos una arquitectura de servidores Tomcat y Apache para cubrir unas necesidades típicas que pueden darse en un caso real. Vamos a verlo en detalle.
En esta demostración veremos como operar con las herramientas que Docker pone a nuestra disposición: desde descargar imágenes oficiales a desplegar nuestras propias aplicaciones haciendo uso de varios contenedores.
Una de las partes más importantes de una aplicación empresarial es la base de datos. Naturalmente Java cuenta con tecnologías para poder conectarse a estos repositorios de información. Vamos a ver una primera aproximación a la tecnología JDBC.
Una de las partes fundamentales de la tecnología JDBC de acceso a base de dato es el driver JDBC, que es el que canaliza la comunicación con la base de datos y permite a Java adaptarse a diferentes sistemas de gestión de bases de datos. Vamos a ver sus detalles. en este video.
Los drivers JDBC son un componente complejo que tiene una misión complicada: hacer de puente entre la base de datos y el API de JDBC. Como se enfrenta a diferentes escenarios, existen tipos de drivers para cada situación. Vamos a ver los que son.
Además del driver de JDBC, el otro componente necesario y fundamental es la API, que es lo que utiliza el desarrollador para poder programar funcionalidades que se conectan a la base de datos.
Aunque el modo inicial de obtener una conexión a una base de datos es a través del DriverManager,a lo largo del tiempo se ha demostrado que tiene una serie de problemas, por lo que se crearon los Datasource como Alternativa. Vamos a verlos en detalle.
En el siguiente vídeo veremos cómo se debe registrar y utilizar un DataSource en el contenedor de servlets Tomcat 7 para su uso dentro de una aplicación Java.
En el este vídeo veremos cómo se debe registrar y utilizar un DataSource en el servidor de aplicaciones WildFly para su uso dentro de una aplicación Java.
Uno de los mecanismos fundamentales para gestionar las conexiones en las aplicaciones empresariales son los pool de conexiones. Vamos a ver de qué tratan y cómo nos pueden ayudar.
En el siguiente vídeo veremos las opciones de configuración básicas concernientes a recursos externos que nos permite manipular Tomcat 7 para solucionar problemas de conectividad con, en este caso, un DataSource.
En las aplicaciones empresariales es común que el acceso a datos esté formado por operaciones complejas agrupadas en conjuntos de tareas que deben realizarse de forma simultánea. Esto se lleva a cabo a través de las transacciones. Vamos a ver una introducción a los conceptos básicos.
En esta lección veremos los dos tipos de transacciones con respecto a los recursos que involucran: las transacciones locales y las transacciones distribuidas.
Java proporciona una tecnología para el manejo de transacciones en sus aplicaciones. Se trata de JTA y su API. Vamos a ver sus principales características.
Las transacciones distribuidas necesitan un mecanismo que coordine todas las operaciones individuales que se ejecutan sobre los diferentes recursos. El mecanismo más utilizado es el Two Phase Commit. En este vídeo veremos en qué consiste.
Una de las características más importantes de las transacciones es el aislamiento. Este aislamiento tiene diferentes niveles, lo que posibilita que exista o no cierto grado de concurrencia en la ejecución. En esta lección vamos a ver los niveles de aislamiento y el impacto sobre la concurrencia.
Los servicios de directorio permiten definir recursos a nivel global en una arquitectura completa como es la de las aplicaciones empresariales, lo que permite un diseño más limpio y menos acoplado. Vamos a ver en esta lección una introducción a los conceptos básicos para entender cómo Java implementa esta tecnología.
Java Permite utilizar su implementación del sistema de nombres y directorio, llamado, JNDI. Es importante para las aplicaciones que involucran diferentes componentes porque actúa a modo de pegamento que permite unirlos para formar una aplicación completa. Vamos a ver en este vídeo los puntos más importantes de su especificación.
En este vídeo veremos cómo se registran nuevos contextos JNDI de forma programática desde Java, así como el acceso a los mismos.
Una de las características esenciales de todo lenguaje de programación y de Java en particular, es la gestión de la memoria. En esta lección veremos una introducción a las características principales de la gestión de la memoria en Java, que lo hacen tan especial.
La memoria es un recurso fundamental con el que tienen que trabajar las aplicaciones. La máquina virtual de Java (JVM) presenta una forma particular de distribuir la memoria abstrayendo al programa en ejecución de la memoria real de la máquina física. Vamos a ver en esta lección cómo Java realiza la distribución de esta memoria.
Java es una plataforma en constante evolución, tanto en el lenguaje como en la estructura. En esta lección vamos a tratar un hito en la forma de gestionar la memoria que sucedió en la versión Java 8: el paso de un modelo con PermGen a un modelo con Metaspaces, que le permite ser más flexible.
Para que el mecanismo de garbage collector pueda actuar correctamente, Java organiza los objetos en memoria en diferentes zonas dependiendo de la logevidad de los objetos en memoria. Estas zonas son los espacios de generaciones. En esta lección veremos de qué tratan.
En este vídeo se verán las diferentes configuraciones que se pueden aplicar a las máquinas virtuales de Java para la gestión de la memoria.
El Garbage Collector es el mecanismo fundamental que interviene en la gestión de la memoria en Java. En este vídeo veremos una primera aproximación a las razones de su exitencia y funcionamiento.
El Garbage Collector es un mecanismo complejo que actúa sobre las diferentes zonas de la memoria de Java, por lo que realmente existen diferentes tipos especializados en cada área. En esta lección vamos a ver la hipótesis de distribución de la memoria sobre la que se sustentan y la tipología teórica de los garbage collectors con las características que hay que tener en cuenta para elegir uno u otro tipo.
Las características y tipos de Garbage Collector deben ser implementados en las diferentes distribuciones de la máquina virtual de Java. Estas implementaciones están basadas en algoritmos concretos. Vamos a ver los tipos generales y la implementación de la máquina virtual "Hotspot" de Oracle.
La máquina virtual de Java (JVM) permite la configuración de múltiples aspectos para la ejecución de los programas en Java. Esto incluye la configuración del tipo de garbage collector y sus principales características. Vamos a ver los parámetros más relevantes en esta lección.
La configuración de los parámetros de la máquina virtual, como el Garbage Collector y la memoria deberían estar basados en evidencias empíricas y razonadas. Estas evidencias se obtienen gracias a la monitorización, que será el tema principal de este vídeo.
Los ajustes que se realicen en el entorno en el que se ejecuta la aplicación impactan en el rendimiento de la aplicación. Dependiendo de la tipología de la aplicación, el rendimiento puede ser más o menos crítico. En este vídeo trataremos el rendimiento.
En esta lección veremos cómo se puede monitorizar el comportamiento del Garbage Collector a través de las trazas que deja en sus ejecuciones.
Además de los eventos del Garbage Collector y su impacto en el rendimiento, debemos vigilar el comportamiento de las diferentes zonas de memoria. Se realiza a través de herramientas específicas que se conectan a la máquina virtual de Java. Vamos a ver sus principales características en este vídeo.
En este vídeo utilizaremos la herramienta HPJmeter para analizar a posteriori y comparar, las trazas de ejecución de los diferentes Garbage Collectors de la JVM.
En este vídeo haremos uso de la herramienta VisualVM contenida dentro del JDK que, junto con el plugin VisualGC, nos permite realizar un análisis del comportamiento de la JVM en ejecución, centrándonos especialmente en la gestión de la memoria y en el funcionamiento del Garbage Collector.
En este vídeo usaremos la clásica herramienta de monitorización de la JVM, JConsole para mostrar sus capacidades de análisis de rendimiento.
En este vídeo mostraremos una parte de todas las capacidades que tienen las herramientas Java Mission Control (JMC) y Java Flight Recorder (JFR) para llevar a cabo exhaustivas operaciones de monitorización y profiling de aplicaciones Java.
En esta lección vamos a ver una introducción a JMX que es el framework de Java para las labores de monitorización, gestión y rendimiento. La mayoría de las aplicaciones actuales de monitorización y control están basadas en este estándard.
En esta lección vamos a ver la estructura interna de JMX, cómo se organizan los componentes de monitorización y cómo se exponen a las capas externas para poder ser consultados.
En esta lección vamos a ver cómo se debe configurar las máquinas virtuales de Java (JVM) para poder ser monitorizadas en remoto desde otros dispositivos, interfiriendo así mínimamente en la observación.
En esta lección veremos cómo nos ayuda JMX a poder monitorizar las máquinas virtuales de Java, y cómo existen productos, como las consolas, que facilitan al usuario el proceso de la monitorización.
En esta lección vamos a hacer un repaso a los parámetros más comunes que se pueden ajustar en la máquina virtual de Java (JVM). Estos parámetros nos ayudarán a optimizar el uso de los recursos para ejecutar las aplicaciones. Algunos de ellos son específicos de determinados componentes vitales como la gestión de la memoria o del garbage collector.
En este vídeo definiremos un plan de pruebas sencillo sobre una aplicación creada para la ocasión para mostrar las capacidades básicas del Apache Jmeter, y así comprender cómo se pueden simular diferentes cargas de trabajo sobre las aplicaciones. Será fundamental para poder realizar un proceso de monitorización.
En este vídeo se muestran algunas de las capacidades de la herramienta de monitorización AppDynamics, que junto con New Relic son los nuevos exponentes de la monitorizacion APM, que nos permite detectar fácilmente problemas en la ejecución que de otro modo nos podrían llevar días en descubrir.
En este vídeo usaremos el servicio de monitorizacion de tipo APM como es New Relic para monitorizar la aplicación de ejemplo. Emplearemos Apache JMeter para crear carga sobre los componentes.
En cualquier aplicación es interesante conocer qué está sucediendo en la ejecución, sin tener que estar acudiendo a detalles a nivel de máquina virtual (JVM). Es una práctica común intercalar instrucciones de código que van informando del estado de la ejecución de las aplicaciones, generando un log. En esta lección vamos a ver una introducción al concepto de sistema de logging o de trazas.
En cualquier aplicación siempre es interesante saber qué está sucediendo en la ejecución sin tener que estar acudiendo a detalles a nivel de máquina virtual. Es una práctica común intercalar instrucciones de código que van informando del estado de la ejecución de las aplicaciones, generando un log. En esta lección vamos a ver una introducción a los sistemas de logging y los requisitos que deben cumplir.
En Java existen diferentes alternativas para incorporar trazas a las aplicaciones, agrupadas en frameworks e interfaces de Logging. En esta lección vamos a ver una rápida introducción al panorama actual en este campo.
En esta lección vamos a ver la estructura típica de un framework de logging y haremos un repaso de las características de los más relevantes actualmente en Java.
Dentro de los frameworks disponibles para la gestión de trazas en Java el más novedoso es Log4J versión 2. En esta lección vamos a ver sus características internas y cómo utilizarlo.
Los frameworks de logging acaban condicionando el código fuente de las aplicaicones que los utilizan. Para evitar esto se crearon las interfaces de loging. En esta lección veremos qué son y qué relación guardan con los frameworks de logging.
En esta lección vamos a ver la recomendación actual de tecnologías que se deberían seguir en cualquier aplicación escrita en Java hoy en día.
El Logging es una actividad de apoyo para los desarrolladores y administradores de sistemas que manejan las aplicaciones. Esto quiere decir que debe adaptarse a las circunstancias que requiere su uso con el menor impacto posible. Por tanto es muy importante poder cambiar la configuración del framework de logging en caliente, para poder activar el nivel máximo cuando se quiera detectar un problema y dejarlo en un nivel mínimo cuando no sea necesario, sin que el servidor se vea afectado por este cambio.
Realizar el cambio de las características del sistema de logging no es complicado en Java con la ayuda de las herramientas adecuadas. Vamos a ver algunas de las alternativas que podemos seguir para realizar esta operación.
En este video veremos un ejemplo de uso básico del framework de logging log4j2, además de las capacidades de modificación de MBeans “en caliente” o en ejecución.
Como todas las tecnologías, los sistema de loggin pueden tener un mal rendimiento si no se utilizan correctamente. En esta lección vamos a ver algunos de los problemas más comunes que se suelen presentar a la hora de utilizar e implantar un sistema de logging.
Este vídeo es una continuación a los problemas más comunes que nos podemos encontrar a la hora de revisar la implantación de un sistema de logging en Java.
En esta lección vamos a ver brevemente el mecanismo de captura de excepciones y mensajes de error para entender el origen de la información de los errores que aparecen en los logs del servidor cuando hay problemas.
En esta lección vamos a hacer un repaso a los errores más comunes que se suelen encontrar los logs de las aplicaciones. Es imposible hacer un listado con todos los que se puede uno encontrar en su vida profesional, porque dependen de situaciones y tecnologías, pero al menos veremos algunos habituales que nos ayudarán a interpretar sus mensajes.
En las siguientes diapositivas vamos a hacer una breve presentación de algunas excepciones representativas que suelen suceder en programas Java.No se trata de verlas todas porque es imposible, máxime cuando se pueden crear nuevas excepciones, y los frameworks más utilizados contienen las suyas específicas, pero sí de dar una idea de cómo Java se comporta frente a sucesos más o menos habituales.
En este curso pretendemos enseñar a los Administradores de Sistemas todo lo que deberían conocer sobre Java para hacer un buen despliegue, monitorización y optimización de aplicaciones en esta plataforma.
Pero tranquilo, no es un curso de programación (ni tienes que saber programar). ¡No tenemos intención reconvertir a los administradores de sistemas en programadores!
Lo que queremos es que los administradores de sistemas entiendan qué es la Java y cómo funcionan los diferentes componentes que forman parte en las aplicaciones que despliegan día a día.
Veremos aspectos como:
La plataforma Java.
Las tecnologías que intervienen en las aplicaciones Web en Java.
Los tipos y características de los servidores de aplicaciones en Java.
El acceso a las fuentes de datos (bases de datos, transacciones, servicios de directorio).
La estructura y gestión de la memoria, y el mecanismo del Garbage Collector.
Monitorización y rendimiento de aplicaciones Java.