Java Specialists Master Course

Extrema Sistemas
En Barcelona y ALCALÁ DE HENARES (España)

1.360€ - ($957.477)
Exento de IVA
¿O prefieres llamar ahora al centro?
+34 9... Ver más
Compara este curso con otros similares
Ver más cursos similares

Información importante

Descripción

Objetivo del curso: Extrema Sistemas y Javaspecialists.EU traen el curso más avanzado de Java a España. Durante este curso de cuatro días y guiados por el Java Champion Dr. Heinz M Kabutz se estudiarán más de 1000 transparencias de conceptos Java avanzados, acompañados de sus correspondientes ejercicios prácticos. Incluso los profesionales Java más experimentados sentirán el estímulo del desafío personal.
Dirigido a: Javaspecialists es un curso orientado a arquitectos y analistas-programadores con al menos dos años de experiencia en la plataforma que deseen controlar a fondo el lenguaje de programación Java.

Información importante
Instalaciones

¿Dónde se da y en qué fecha?

comienzo Ubicación
Consultar
ALCALÁ DE HENARES
C/ANTONIO SUÁREZ 10, BLOQUE A, OFICINA 228, 28802, Madrid, España
Ver mapa
Consultar
Barcelona
Pl. dels Països Catalans s/n, 08014, Barcelona, España
Ver mapa

Temario

Concurrencia:
Código que se ejecuta en paralelo o de forma concurrente y que no esté implementado de forma correcta puede producir errores en sus cálculos.
En algunos casos es simplemente un inconveniente, pero puede derivar en un problema serio.


El curso enseña a los desarrolladores cómo razonar e implementar código para ser accedido de forma concurrente previniendo bloqueos y condiciones de carrera, entre otros problemas. Un cliente descubrió que el código que funcionaba
perfectamente en Java 1.5 fallaba al migrarlo a Java 6.


Habían asumido que al pedir a un Thread que esperase un tiempo determinado, por ejemplo un segundo, el hilo esperaría el tiempo definido.
Sin embargo, la especificación siempre ha indicado que el método wait podría hacer que el Thread se reanudase antes del tiempo indicado. Ocurre que muchos programadores no son conscientes de ello.


En el curso mostraremos cómo codificar con la certeza de qué puede funcionar mal, de forma que podamos asegurarnos que el comportamiento es predecible.

Serialización
Java nos permite comunicarnos con multitud de dispositivos diferentes, a través de internet, con una base de datos o con datos almacenados en disco. Dado que Java es Orientado a Objetos esta comunicación con frecuencia es realizada mediante la conversión de objetos a secuencias de bytes.


Durante el curso mostraremos a los asistentes cómo pueden optimizar la forma binaria de los objetos reduciendo de forma significativa el ancho de banda necesario así como a gestionar la evolución de la estructura de los objetos donde una implementación simplista de serialización puede malgastar recursos.


Procesos
En el pasado era habitual desarrollar programas con una correlación directa entre el número de conexiones de clientes y el de hilos en ejecución sobre la máquina virtual de Java. Con esta solución el número de clientes conectados estaba limitado por el número de hilos soportados por la plataforma. En el curso revisaremos cómo podemos eliminar esta barrera artificial mediante el uso de comunicación no bloqueante con los usuarios. El código es más difícil de escribir pero aporta escalabilidad.


Al realizar en un cliente el cambio de comunicación bloqueante a no-bloqueante pudieron elevar el soporte de 1000 usuarios simultáneos hasta 20 millones. El uso de comunicación no bloqueante fue el catalizador para el escalado del sistema.

Gestión de Memoria
Una de las preguntas que se les realiza a los estudiantes en el curso es “¿Cuánta memoria ocupa la cadena de caracteres “Jim”? En C, esta cadena ocupa 4 bytes. En Java, cada carácter utiliza 2 bytes de memoria. Sin embargo, en Java, cada objeto también guarda información sobre el tipo, información que no se
almacena en C/C++. Esto lleva a que en una versión de 64 bytes de Java, la cadena “Jim” ocupa ¡72 bytes!.


En el curso explicaremos el cómo y porqué de este uso tan alto de memoria. Examinaremos el comportamiento del Garbage Collector y cómo configurarlo.
Finalizaremos viendo como evitar un uso excesivo de memoria con algunos tipos de referencia especial que actúan como válvula de escape cuando la memoria se agota. Estas referencias se usan más de 100 veces sólo en el JDK.

Reflexión
Java contiene mecanismos de reflexión que permiten escribir código que se puede adaptar dinámicamente. Las técnicas mostradas en este apartado pueden resultar realmente útiles para producir código que estudie y se integre con objetos producidos por terceros.

En el curso mostraremos cómo manipular Java de forma interna.
Mostraremos los beneficios de esta técnica pero también tendremos en cuenta sus peligros. Un cliente fue capaz de reemplazar 600.000 líneas de código con
un único proxy dinámico de 100 líneas, reduciendo de forma significativa el trabajo de mantenimiento.

Estructuras de datos
Existen algunos problemas en computación que son complejos de resolver. Incluso si los resolvemos para un conjunto pequeño de datos, cuando los datos crecen, el problema puede llegar a ser inmanejable.
Un cliente tenía una consulta a base de datos que relacionaba tablas muy grandes, y que tardaba en resolverse doce horas.

Una vez descubierto el problema, la solución consistió en reducir la complejidad de la consulta, de forma que la nueva consulta tardaba menos de un segundo.
En el curso, echaremos un vistazo a las estructuras de datos disponibles en Java y veremos cómo se comportan cuando los datos crecen. También revisaremos las mejores formas de acceder a dichas estructuras de forma paralela sin introducir
problemas de concurrencia.

Excepciones
Uno de los signos de un sistema vulnerable es lo bien o mal preparado que está para circunstancias excepcionales.

¿Qué ocurre si la base de datos se detiene? ¿Qué ocurre si un archivo ha sido borrado? Normalmente los desarrolladores son optimistas con los sistemas que construyen y presuponen que nada irá mal.
A lo largo del curso revisaremos las mejores prácticas para gestionar excepciones.

Optimización
Las empresas invierten millones de euros en producir software que funcione; sin embargo, el código a menudo falla cuando no se ejecuta lo suficientemente rápido. El lema: 'hazlo funcionar, hazlo bien, hazlo rápido', se supone que se centra primero en producir el código correcto y después en optimizarlo. Pero en la
mayoría de las ocasiones el lema se cambia a: 'Hazlo funcionar, hazlo bien, ¡véndelo!'
Los ordenadores solían duplicar su potencia cada dos años. Dado que los proyectos a menudo llevan dos años o más, podemos estar escribiendo código lento y luego ser salvados por una mayor potencia en el hardware.
Actualmente, la potencia de los equipos no crece tan rápido, pero suelen añadir más capacidad de paralelismo.

Por tanto, debemos ser cautos con la forma en que escribimos el código, optimizando las partes que son importantes. Por otro lado, escribir código rápido puede complicar el mantenimiento, y las empresas se quedan fuera de juego cuando producen sistemas que no son capaces de mantener.
En este curso mostraremos cómo descubrir los cuellos de botella y algunas mejoras para escribir código más rápido.

Logging
En producción existen multitud de situaciones que pueden ir mal, lo que hace necesario revisar a través de los logs el problema y su origen.

Examinaremos brevemente algunas buenas prácticas con las trazas y cómo configurarlas de forma óptima.

Información adicional

Información sobre el precio: Transferencia

Compara este curso con otros similares
Ver más cursos similares