Clases AutoCloseable en Java

Típicamente cuando necesitamos gestionar la integridad de un recurso en Java:

Me debo encargar de llamar al método close() en el bloque finally:

Java 7 introdujo el statement try-with-resources que se encarga de cerrar un recurso creado en el try.

Para usarlo basta implementar el interfaz AutoCloseable

El método close() se llama de forma automática incluso aunque se lance una excepción.

¿Es momento de migrar de Maven a Gradle?

¿Cambiamos? 😉

No soy yo un gran defensor de Maven (al menos no de Maven2, que sí lo fui de Maven1, y más comparado con ant), sobre todo por su verbosidad y poca claridad….

En este artículo Angela Stringfellow analiza las fortalezas y debilidades de cada uno de ellos:

Gradle Maven
Usa una DSL basada en Groovy para definir la configuración Usa XML para describir el proyecto
Determina el orden de las tareas por un grafo de dependencias Las dependencias, plugins,… se definen en XML
Creaado en 2007, en 2013 es adaptado por Google como build system para Android
Soporta multiproyectos
Soporta compilaciones incrementales al saber que ha cambiado en el código

Leer más

Novedades en Spring 5

El 18 de julio de 2017 se publicará la Release Candidate 3 (RC3) de Spring 5 (la milestone 1 de Spring 5 se publicó en julio de 2016).

Spring Framework 5 es la primera major release desde la versión 4 de Spring, que se publicó en diciembre de 2013.

Estas versión incluye nuevas características muy interesantes, alguna de ellas disruptivas en cuanto al desarrollo sobre Spring:

  • Actualización del JDK: todo Spring 5 ejecuta sobre Java 8 (inicialmente Spring 5 iba a correr sobre Java 9 pero el retraso de este ha hecho que se desacople de esta versión)
  • Actualización en el Core: por ejemplo ahora se soporta carga desde el component index además del classpath scanning, esto mejora mucho el tiempo de carga en grandes aplicaciones
  • Programación Funcional con Kotlin: Spring 5 incluye soporte para Kotlin (Kotlin ejecuta sobre la JVM aunque no está limitado a ejecutar sobre la JVM)
  • Modelo de Programación reactiva: el framework Web de Spring es fully reactive. Este soporte se implementa sobre el API Reactive Streams (que será parte de Java 8), concretamente sobre su implementación Reactor. Spring incluye un nuevo módulo spring-webflux que soporta clientes reactivos HTTP y WebSockets, además de aplicaciones reactivas sobre servers.

  • Mejoras en los Tests: para esto se soporta la extensión de JUnit 5, JUnit 5 Jupiter
  • Librerías soportadas:

  • Soporte discontinuado: si usamos alguna de estas librerías debemos mantenernos en Spring 4.3

¿Qué es OpenTracing?

OpenTracing es un estándar abierto y neutro para traceo distribuido.

En la actualidad con el paso de los sistemas monolíticos a las arquitecturas de microservicios un sistema en producción está compuesto de un buen número de servicios, lo que hace que tareas que antes eran sencillas como análisis de errores en backend se complican.

Por suerte existen un buen número de sistemas de traceo distribuido (Zipkin, Dapper, HTrace,…) que resuelven esto, aunque cada una usa su propia API. OpenTracing ofrece un API consistente y expresiva para que los desarrolladores puedan añadir trazas (o cambiar la implementación) a través de configuración.

OpenTracing ofrece librerías en 8 lenguajes: Go, JavaScript, Java, Python, Ruby, Objective-C, C++, C#

Existen bastantes librerías que soportan el estándar OpenTracing, como

· Zipkin que soporta OpenTracing en varios lenguajes

· Jaeger ˈyā-gər (el Sistema de trazas distribuido de Uber)

· LightStep en varios lenguajes

· Hawkular APM en Java

· Instana lo soporta en Java, Node y Go.

· sky-walking para aplicaciones Java

· inspectIT para aplicaciones Java

· Stagemonitor para aplicaciones Java

¿Qué es OpenStack4j?

OpenStack4j es una librería Java open-source que permite controlar y provisionar un Sistema OpenStack desde Java.

Ofrece abstracciones de estos servicios:

Seguir leyendo “¿Qué es OpenStack4j?”

Historia de Java

Aprovechando los 22 años que cumple Java, Jamie Mercer ha preparado este artículo.

Seguir leyendo “Historia de Java”