Entradas

Mostrando entradas de 2017

Revisando la jerarquía de dependencias de Spring Cloud Config

Imagen
Estos días he estado revisando la organización de los proyectos de Spring Cloud: cómo gestionan las dependencias, cuál es la jerarquía y las relaciones entre los proyectos a la hora de hacer las builds con Maven, etc. Spring Cloud está formado por un buen número de subproyectos (Spring Cloud Config, Spring Cloud Netflix, Spring Cloud Sleuth, ...) y se hace necesario, por un lado, controlar las dependencias transitivas de los proyectos (para alinear versiones y evitar conflictos que podrían darse si cada uno se compila con diferentes versiones de otras librerías), y por otro, ofrecer un BOM (Bill of Materials) o parent a los consumidores para que puedan utilizar los artefactos de Spring Cloud con facilidad, minimizando posibles conflictos a la hora de gestionar las versiones.

A pesar de haberle echado un ojo hace ya tiempo en el trabajo me había quedado con la espina de revisar en detalle todas las dependencias y construir un mapa con las versiones exactas de los proyectos en un moment…

¿Qué hay detrás de las lambdas de Java 8?

En este post trato de recoger, en español y de forma más resumida, buena parte del contenido del artículo: Java 8 Lambdas - A Peek Under the Hood.

¿Qué es una expresión lambda?  Las expresiones lambdas y el API Streams son dos de los añadidos estrella que nos trajo Java 8. Podemos explicar de forma muy sencilla qué es una expresión lambda: se trata de una función anónima, no ligada a un identificador concreto.

¿Para qué nos sirve una función anónima en Java? Pues, entre otros casos, para la infinidad de ocasiones en que hemos querido parametrizar comportamiento, pasando como parámetro a un método la lógica de una función... y en lugar de eso nos ha tocado crearnos una clase (o clase anónima) con un método conteniendo el comportamiento y pasar esa clase como argumento.
Por ejemplo,  muchas APIs de Java tienen como parámetro la interfaz Comparator. Esta interfaz tiene un único método, compare, que recibe dos objetos a comparar y devuelve un entero. Si quisiéramos ordenar una lista de cl…