Buscar
Social
Ofertas laborales ES
« Efficient Java Matrix Library (EJML): librería para trabajar con matrices | Main | Ratpack: un framework ligero para Groovy basado en Sinatra »
miércoles
abr272011

Groovy 1.8 publicado al fin

Ha sido publicada la nueva versión del lenguaje Groovy, la 1.8, que es una versión que los comitters del proyecto han estado trabajando por varios meses. En esta versión se incluyen importantes mejoras, que puedes leer en las Release Notes, entre ellas  destacan:

Cadenas de comando para mejores DSL.

En Groovy, se pueden omitir los paréntesis para invocar a un método; lo que facilita la creación de DSLs. Sin embargo, no se podía hacer si se encadenaban invocaciones a métodos. En la 1.8 ya es posible, así podemos pasar de esto:

 check(that: margarita).tastes(good)

a un DSL mucho más legible:

 check that: margarita tastes good 

Un ejemplo completo de las Release Notes:

show = { println it }

square_root = { Math.sqrt(it) }

def please(action) {

  [the: { what ->

    [of: { n -> action(what(n)) }]

  }]

}

please show the square_root of 100 

Mejor performance

La desventaja que la mayoría señalan de Groovy es sin duda el performance, lento en comparación a Java. En esta versión se ha mejorado el soporte a Integers. Las operaciones con este tipo de datos es tan rápida como en Java y se ha mejorado la parte de invocación directa a métodos. Además se ha creado un branch en el proyecto donde se irán incorporando poco a poco otras mejoras, como el uso de primitivos donde sea posible.

Soporte a JSON nativo

Ahora tenemos un JSONBuilde y un JSONSluper que nos ayudan a generar y leer documentos en ese formato

GPars es parte de la distribución oficial

El proyecto de Paul King: GPars, ahora vendrá en la distribución oficial. Este proyecto permite construir aplicaciones concurrentes, asíncronas y distribuidas con Groovy. Para ello tiene soporte para ejecutar closures de forma asíncrona, trabajar con colecciones de forma paralela y Actores para procesamiento concurrente.

Transformaciones AST.

Para mi, lo que más he esperado de Groovy 1.8. Los que pudistéis asistir al Spring I/O, Andrés Almiray dio una charla donde explicaba el gran número de transformaciones AST que se han agregado a esta versión. Estas transformaciones permiten mediante anotaciones indicarle al compilador de Groovy que haga modificaciones en el Abstract Syntax Tree para agregar comportamiento a una clase que antes no tenía. Por lo que tienen mejor performance que usar el antiguo método de modificar la meta clase y además este comportamiento vendrá en el bytecode logrando que desde otros lenguajes de la JVM puedan "verlo".

Entre las más interesantes:

@Log, @Log4j, @Commons, @SLF4J -> agrega un logger a tu clase  con la implementación que hayas puesto.

@EqualsAndHashCode -> construye el método equals y el hashcode basado en los atributos de tu clase

@ToString -> autoexplicativo

@WithReadLock, @WithWriteLock -> simplica el uso de java.util.concurrent.locks.ReentrantReadWriteLock para construir el típico mapa para cache thread safe:

 

class ResourceProvider {

    private final Map data = new HashMap<>()

    @WithReadLock

    String getResource(String key) {

        return data.get(key)

    }

 

    @WithWriteLock

    void refresh() {

        //reload the resources into memory

    }

Enhorabuena al equipo de Groovy que han seguido trabajando en mejorar uno de los lenguajes más populares de la JVM. 

 

Los que estáis interesados en aprender Groovy aquí podéis acceder a dos videos- tutoriales introductorios (en español). Y los que cree saber más sobre DSL en Groovy podéis ver estos otros dos videos (también en español). 

 

 

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.