Groovy está bastante vivo, conferencias como la G3 Summit lo demuestran (resumen y opinión)

La última semana de Noviembre estuve en Fort Lauderdale, Florida, en la conferencia G3 Summit en la que dí 2 hablas. Se trata de la primera edición de una conferencia centrada en Groovy, Grails y Gradle, y organizada por exactamente el mismo equipo que se ocupaba de la SpringOne 2GX. Debo aceptar que Miami es un buen sitio para organizar una conferencia a fines de Noviembre. Pasar de los ocho grados y la lluvia de la capital de España a los más de veinticinco grados y el sol de la ciudad de Miami es algo de dar las gracias.

La agenda incluía más de cincuenta conversas y a los primordiales líderes de los diferentes proyectos del ecosistema Groovy. En G3 Summit estuvieron presentes tanto Graeme Rocher, líder del proyecto Grails como Jeff Brown, co-creador del mismo framework; Guillaume Laforge líder de Groovy o bien Ken Kousen de Groovy Podcast y autor del libro Making Java Groovy.

Talleres y charlas

A lo largo de la conferencia asistí a un taller, 3 keynotes y 8 hablas y por lo general todas y cada una fueron buenas. De ellas, mis preferidas son:

Build Web Applications with Ratpack

Comencé la conferencia con el taller de Dan Woods sobre Build Web Applications with Ratpack. Dan, aparte de ser miembro del equipo de Ratpack ha escrito el primer libro sobre el framework: Learning Ratpack.
El taller me encantó: realmente bien estructurado con pequeños fragmentos de código que había que llenar y tests ya preparados que servían para demostrar que todo era adecuado. Aparte de buenísimas explicaciones por la parte de Dan y asimismo buena administración del tiempo entre los diferentes ejercicios. Lo cierto es que en 8 horas de taller dio tiempo a ver muchos aspectos diferentes de Ratpack y probar en profundidad diferentes opciones y formas de solucionar los inconvenientes.
Si alguien está interesado en el taller está libre en el github de Dan.

High Performance Groovy

De las mejores hablas que he visto en un buen tiempo sobre inconvenientes de desempeño, pitfalls y gotchas a eludir cuando se trabaja con Groovy y, en algunos casos, asimismo con Java. David Clark hizo un enorme trabajo explicando con muchos ejemplos y con gran detalle diferentes aspectos que debemos tener en consideración cuando desarrollamos aplicaciones Groovy. Me quedo con:

Emplea Java ocho si puedes. El desempeño de Groovy en Java ocho ha mejorado mucho.
Cuidado con el boxing/unboxing, puede afectar mucho al desempeño. En un caso así se trata de un inconveniente de Java y no solo de Groovy.
Abuso de dispatch activo. Si tu código verdaderamente no es activo es mejor anotarlo con @CompileStatic, la diferencia de desempeño puede ser realmente grande, en especial si el código es CPU-bound.
Si tu código tiene IO (acceso a disco, base de datos, red,…) da lo mismo que sea activo o bien no, apenas se marcha a apreciar la diferencia de desempeño pues todo el tiempo lo gastarás aguardando por la latencias del disco o bien la red.

Por último acabó la conversación mostrando ciertas herramientas que podemos emplear para diagnosticar inconvenientes de desempeño. Comentó que la mejor con diferencia es YourKit si bien VisualVM asimismo ofrece buenos resultados.

Todo el código mostrado en la conversación está libre en este repositorio de Github en el que asimismo se incluyen las diapositivas

Functional Programming for Groovy Programmers

Si alguna vez estás en una conferencia y tienes la ocasión de ver a Venkat Subramaniam no dudes, no te defraudará. Venkat es un enorme speaker que sabe de qué manera sostener la atención de los asistentes a lo largo de toda la conversación y tiene una enorme sencillez para explicar y trasmitir sus conocimientos.
Esta vez hizo una introducción a la programación funcional, los beneficios, diferentes aproximaciones que tenemos en Groovy,… La conversación fue verdaderamente buena y leal al estilo que Venkat nos tiene acostumbrados: sin emplear diapositivas, solo una lista de temas de los que charlar y código, muchos ejemplos de código con los que dejó clarísimos todos y cada uno de los conceptos.
Es una pena que no se grabase pues merecería la pena verla nuevamente con más calma.

Groovy Puzzlers S03 – The Unstoppable Puzzlers Hit Again!

La conversación más entretenida de la conferencia. Esta vez Baruch Sadogursky con ayuda de Guillaume Laforge presentaron la tercera edición de los Groovy Puzzlers. Para el que no lo conozca la idea brotó hace cierto tiempo con una charla en la JavaOne por Joshua Bloch y Neal Gafter en la que mostraban fragmentos de código Java y daban diferentes opciones a la audiencia sobre como era la contestación o bien comportamiento adecuado.
En un caso así se trataba del mismo planteamiento mas con Groovy en vez de Java. Para cada fragmento de código había 4 posibles opciones y en el momento en que los asistentes votaban se mostraba la solución adecuada. Entre aquéllos que habían atinado la contestación debían intentar explicar el motivo para ganar una camiseta.
Debo aceptar que esta era la tercera vez que veía la conversación mas fue igualmente amena y entretenida que las veces precedentes puesto que jamás logro rememorar las contestaciones de una vez para otra.

Dockerize your Grails!

Esta fue mi primera charla. En ella charlé de los diferentes inconvenientes que tenemos al desarrollar aplicaciones Java, particularmente centrándome en Grails, y expuse 3 problemas:

El ambiente de desarrollo no es exactamente el mismo para todo el equipo de desarrollo.
Los ambientes de desarrollo y producción son muy, muy diferentes.
Los inconvenientes cuando tenemos un nuevo miembro en el equipo y el tiempo que tarda esta persona en comenzar a ser productiva.

Tras esta introducción presenté Docker como la solución a estos inconvenientes. Di un repaso a los conceptos básicos, expliqué las diferencias entre una máquina virtual y Docker y enseñé pequeños ejemplos de de qué forma se puede usar Docker.
Por último llegó el instante de las demos. Había preparado una aplicación sencillísima mas que tenía diferentes partes móviles en la arquitectura. La aplicación tenía una aplicación Grails que se hace cargo de generar un mensaje de texto, otra aplicación Grails que recibía dicho mensaje de texto a través de RabbitMQ y por último daba la vuelta al mensaje y lo guardaba en una base de datos Postgresql. Con esta fácil aplicación pude enseñar de qué forma podíamos usar Docker para solucionar los 3 inconvenientes comentados previamente.

Todo el código se halla en este repositorio y las diapositivas son:

G3 Summit dos mil dieciseis – Dockerize your Grails! from Iván López

Taking advantage of Groovy Annotations

Para mi segunda charla me centré en todas y cada una de las tranformaciones que nos ofrece Groovy. Como desarrolladores debemos aprovecharnos de todas y cada una de las peculiaridades y ventajas de nuestro lenguaje de programación y Groovy da un sinnúmero de anotaciones que nos hacen la vida más simple al desarrollar. Tras explicar las diferentes categorías y numerosas transformaciones hice una demo creando desde cero una fácil transformación AST para agregar un campo VERSION a una clase. La idea era probar de qué forma es posible crear nuestras anotaciones para poder solventar algunos inconvenientes que de otro modo serían más difíciles de solucionar.

El código de esta transformación como los tests están libres en este repositorio y las diapositivas aquí:

G3 Summit dos mil dieciseis – Taking Advantage of Groovy Annotations from Iván López

La comunidad Groovy

La comunidad Groovy no es demasiado grande con lo que tras haber asistido a varias conferencias de Groovy y haber dado conversas en ellas conozco a bastante gente. Esta conferencia me ha servido para rencontrarme con viejos amigos que hacía tiempo que no veía y conocer gente nueva. Además de esto asimismo ha servido a fin de que todo el equipo de Grails de OCI nos reuniéramos por vez primera :)

Me agradaría dar las gracias a los organizadores de la conferencia por su trabajo pues esta ha sido estupenda. Se apreciaba que el equipo de NFJS se había encargado de todos y cada uno de los detalles: comidas, salas, breaks, wi-fi,… Todo funcionó sin inconveniente.

En lo que se refiere a las conversas, aparte de las que he señalado todas y cada una me parecieron buenas y con un buen nivel por la parte de los speakers. El único aspecto negativo (por comentar algo) son las nueve horas y treinta minutos de aeroplano desde la villa de Madrid a Miami, si bien eso es una cosa que no tiene simple solución… ;-)

Conclusión

Hay gente que afirma que Groovy ha muerto mas conferencias como está no hacen más que probar que se confunden

Me llevo 3 ideas y cosas a mirar con más detalle para el futuro por el hecho de que seguro que en el ecosistema Groovy van a proseguir dando de que hablar:

Grails: Evidentemente conozco Grails en detalle mas no deja de sorprenderme todo cuanto ha avanzado el framework a lo largo del último año: grandes mejoras de desempeño, diferentes perfiles para integrarse con Angular dos o bien React, GORM seis con soporte para Hibernate cinco, MongoDB, Neo4j y Cassandra, y un largo etc. de mejoras. Vale la pena proseguir todas y cada una de las novedades para no quedarse atrás.
Ratpack: Tras haber estado un día completo en el taller me semeja una pasada lo que el equipo de desarrollo de Ratpack hace. Ahora que todo semeja que debe ser microservices, reactive y asíncrono creo que Ratpack tendrá mucho que decir y aportar a lo largo de el año próximo en el momento de desarrollar algunos proyectos en la JVM.
Groovy: Lógicamente el tema central de la conferencia era Groovy en tanto que en la mayor parte de los casos es el vínculo común que tienen el resto de herramientas y frameworks. Groovy prosigue evolucionando y ya se trabaja en Groovy treinta con su nueva gramática, el nuevo Meta Object Protocol (MOP), soporte para Java nueve y gran cantidad de mejoras.

Hay gente que afirma que Groovy ha muerto mas conferencias como está no hacen más que probar que se confunden.

Asimismo te invitamos a

9 anotaciones de Groovy que te van a hacer la vida más simple al desarrollar

Mejora tu código Java utilizando Groovy

De qué manera ir de