lunes, 9 de noviembre de 2009

Nuevas funcionalidades incluidas en Java 6

Voy a hacer un poco de autoaprendizaje, y voy a empezar por la parte principal de mi trabajo (siendo analista j2ee no puede ser otro que el lenguaje Java). Este el primero de lo que espero sea una indeterminada y larga lista de artículos de programación centradas en los entornos de programación basados en Java.

Creo que me había quedado un poco obsoleto y estancado en la versión 5 de este lenguaje, así que decidí dar un paso más y estudiar la versión de Java que se está utilizando ahora mismo en el panorama empresarial: Java 6, o  JDK 1.6 (del JSR 270).

Lo primero sería estudiar las diferencias con la versión anterior, aquí listo las mejoras que proporciona Java 6 con respecto a su anterior versión:

CAMBIOS EN EL CORE
  • Inclusión de motores de scripting: Se incluye el motor de Javascript  Rhino desarrollado por Mozilla.
  • Firma Digital XML (JSR 105): Sin necesidad de utilizar librerías externas (javax.xml.crypto). Esto viene muy bien para firmar peticiones SOAP.
  • API de compilación Java: Permitiría generar código automático en memoria, sin necesidad de fuentes. Esto pienso nos daría mucho juego, tiene muchas posibilidades (tengo que ver si se puede utilizar junto con el API Reflection), permitiendo generar clases dinámicas dependiendo de factores externos como, por ejemplo, datos de configuración o una bade de datos.
  • Procesamiento de anotaciones: Ahora siguiendo el JSR 269 en vez de la JSR 175 de la version 5, se estandariza el procesamiento de dichas anotaciones. Para procesar anotaciones únicamente hay que extender de la clase AbstractProccesor (indicando las anotaciones a capturar) y sobreescribir el método process.
  • Depurador en tiempo de ejecución: Se puede iniciar depuración en tiempo de ejecución, almacenando dentro de las clases compiladas más información que la que se almacenaba anteriormente. Para aplicaciones móviles JME CLDC, esto permite que éstas se ejecuten más rápidamente.
  • Nueva clase ServiceLoader: Permite estandarizar la creación de servicios de proveedores externos, realiza una búsqueda de la implementación de un servicio de forma más sencilla. Hay que indicar la clase que se quiere en el META-INF/services/{paquete.interfaz}. Se puede utilizar como una factoría para una interfaz dada que pueda tener una o varias implementaciones.
  • Colecciones Deque y BlockingDeque: Permiten crear colas doblemente enlazadas (permiten insertar datos al principio o al final). La implementación de la interfaz Deque es ArrayDeque, al cual no se accede a través de su índice. La inserción y obtención tiene un coste menor al de un ArrayList, a no ser que se necesite realizar búsquedas por índice. BlockingDeke, además, da soporte al bloqueo de operaciones de inserción y obtención.
  • Mejoras ordenamiento de colecciones Set y Map: Permitiendo realizar búsquedas bidireccionales y a partir o hasta un elemento dado si los elementos están ordenados (interfaces NavigableSet y NavigableMap).
  • Nueva clase java.io.Console: Permite leer contraseñas sin que se muestre en la pantalla.
  • Inclusión de Base de datos Derby JavaDB.
  • Modificación en la clase File para conocer el espacio en disco y poder cambiar sus atributos.
  • Mejoras en la concurrencia (JSR 166).
  • Inclusión del programa JConsole para monitorización de rendimiento de forma gráfica.
  • Incorporación de un pequeño servidor HTTP.
  • Implementación del manejador de cookies.
  • Internacionalización de los nombre de dominio IDN.
CAMBIOS ORIENTADOS AL CLIENTE
  • Acceso a las aplicaciones nativas.
  • Pantallas Splash.
  • Soporte barra de tareas del sistema.
  • Ordenamiento y filtrado de tablas.
  • SwingWorker.
CAMBIOS ORIENTADOS AL SERVIDOR
  • JDBC versión 4.0.
  • Procesamiento de XML usando StAX.
  • Anotaciones para Servicio Web.
  • Simplificación del mapeo Objeto/XML utilizando JABX 2.0.
  • Simplificación de la exposición de Servicios Web y la creación de clientes usando JAX-WS 2.0.
  • Estandarización de anotaciones comunes.
Son bastantes mejoras y cambios, sin embargo no tan significativos como los que se introdujeron con la versión Java 5 con respecto a su predecesora Java 1.4.

Imágenes Dockers

Estoy aprendiendo bastante sobre el tema de docker y docker swarm , gestión de Stacks, Servicios, Containers, Volumenes, .. y sus configurac...