martes, 17 de julio de 2018

Apache lanzo Groovy 2.5 y el preview de Groovy 3.0

La Apache Foundation lanzó recientemente la versión 2.5 de Groovy, con nuevas características que incluyen:
  • Mejoras en las transformaciones de AST
  • Nuevo soporte de macros
  • Otras mejoras...
Groovy 2.5 requiere JDK 7 y se ejecuta en JDK 9+ .

A pesar des crecimiento de otros lenguajes de JVM como Kotlin, Groovy todavía está experimentando un gran crecimiento. Los números de descarga de Groovy aún lo convierten en el segundo lenguaje más popular en JVM después de Java y los números siguen aumentando. Para el primer trimestre de este año, hubo 90 millones de descargas, el doble de descargas que el primer trimestre del año pasado. Como puede ver, todavía hay mucho interés en Groovy.

Groovy también ha ganado 30 nuevos committers en los últimos 12 meses.



Como se muestra en el siguiente diagrama, se mejoraron algunas de las transformaciones AST existentes para lograr consistencia entre las transformaciones y se agregaron 11 nuevas transformaciones para la versión 2.5. Se agregó una transformación adicional para Groovy 3.0, pero podrían aparecer más antes de la versión GA.

La metaprogramación en tiempo de compilación en Groovy permite la generación de código en tiempo de compilación. Esas transformaciones se denominan transformaciones AST. Las transformaciones de AST le permiten enganchar en el proceso de compilación, modificar el AST y continuar el proceso de compilación para generar bytecode regular. En comparación con la metaprogramación de tiempo de ejecución, esto tiene la ventaja de hacer que los cambios sean visibles en el archivo de clase mismo (es decir, en el bytecode). Hacerlo visible en bytecode es importante, por ejemplo, si desea que las transformaciones formen parte del contrato de clase (implementando interfaces, ampliando clases abstractas, ...) o incluso si necesita que su clase sea invocable desde Java (u otros lenguajes JVM) ) Por ejemplo, una transformación AST puede agregar métodos a una clase. Si lo haces con metaprogramación en tiempo de ejecución, el nuevo método solo sería visible desde Groovy. Si haces lo mismo con la metaprogramación en tiempo de compilación, el método también sería visible desde Java. Por último, pero no menos importante, el rendimiento probablemente sería mejor con la metaprogramación en tiempo de compilación (porque no se requiere una fase de inicialización).

Groovy 3.0.0-alpha-3 ha estado disponible desde finales de junio con versiones beta programadas para finales de este año y release candidates previstos para principios de 2019.

Dejo links:
https://objectcomputing.com/resources/events/webinars/groovy-update-webinar/recording