Las expresiones lambdas son funciones anónimas que están basadas en el concepto matemático de cálculo lambda.

Hay quien opina que son simplemente “syntactic sugar” y que no aportan mucho valor más allá de una mejor sintaxis. Pero si recordamos que como programadores pasamos más tiempo leyendo que escribiendo código podemos notar la importancia de las lambdas ya que nos ayuda a mejorar la legibilidad de nuestro código y que este sea más conciso y menos verboso.

En ocasiones concretas son especialmente útiles por ejemplo cuando trabajamos con RxJava facilitando la legibilidad de nuestros Observables y Observers.

Ejemplo:

  • Sin lambdas:
    01
  • Con lambdas:
    02

A pesar de que las lambdas fueron introducidas en Java 8 en el año 2014 junto con otras características proveniente del paradigma funcional, trabajar con ellas ellas en Android ha conllevado tener que hacer algunos ajustes extras debido a que Android no era compatible con Java 8 hasta la llegada de Android Nougat.

En este post vamos a ver dos maneras de configurar Android Studio para poder utilizar lambdas en nuestros proyectos. La primera será utilizando el plugin de Retrolambda y la segunda haciendo uso del compilador Jack (ver aviso importante sobre Jack más abajo).

 Asegúrate de tener instalado el JDK8. Si lo necesitas puedes descárgalo aquí.

Configuración con Retrolambda

Retrolambda nos permite ejecutar nuestro código con expresiones lambda de Java 8 en Java 7, 6 o 5. Esto lo hace transformando el bytecode compilado en Java 8 para que pueda ejecutarse en las versiones más antiguas de Java.

  • Añadir dependencias al build.gradle de nuestro proyecto:
    03 (1)
  • Aplicar el plugin en el build.gradle de nuestro módulo:
    04
  • Añadir opciones de compilado para Java 8:
    05

Configuración con Jack Toolchain

El compilador Jack nos proporciona otra manera de utilizar las lambdas y algunas otras funcionalidades de Java 8 sin tener que utilizar ningún plugin extra. Hay que destacar que Jack solo es compatible con Android Studio 2.1 y versiones superiores.

Aviso Importante:
Tres días posteriores a la elaboración de este articulo, Google anunció que añadirán la compatibilidad de las funcionalidades de Java 8 de forma nativa directamente en el javac y dx y que no seguirán con Jack. En el comunicado informan que esta compatibilidad llegará a Android Studio en las próximas semanas.

  • Habilitar Jack en el build.gradle de nuestro módulo:
    06
  • Añadir opciones de compilado para Java 8:
    07

En definitiva, actualmente podemos utilizar expresiones lambdas haciendo uso tanto del plugin de Retrolamba como del compilador Jack, pero como hemos visto antes, el compilador Jack se dejará de utilizar así que es recomendable que estés pendiente de las próximas actualizaciones de Android Studio debido a que se incluirá de forma nativa el soporte para Java 8 en el compilador actual.

Arthur AntunesArthur Antunes

Leave a Reply

Your email address will not be published. Required fields are marked *