Resumen del Spring IO 2012 (muy resumido)

Bueno, pues os voy a contar un poco mis impresiones y las charlas a las que asistí en el Spring IO, aparte del taller que estuve impartiendo, claro :).

El primer día sólo asistí a unas pocas charlas, llegué un poco tarde y luego anduve pendiente de finiquitar el contenido de mi taller del segundo día. Deambulé por algunas charlas pero prefiero no nombrar ni valorar el contenido, principalmente porque de esas no me enteré más que de el título y quien era el ponente :D.

– El primer día asistí a:

  • Creación de plugins para Grails, con Juan Reyes. Que, aprovechando, sirvió para el que quiso como introducción teórica a mi taller del segundo día. Juan explicó como es la arquitectura de un plugin de Grails, hizo un ejemplo y remarcó las capacidades dinámicas de groovy y como utilizarlas para extender los artefactos de aplicaciones que utilicen esos plugins.
  • Vitaminas para tu proyecto Java, con Alberto Vilches. Donde se hacía uso de groovy escalonadamente en una aplicación Java a base de Servlets, JDBC… Para mostrar que hasta en esas aplicaciones se puede sacar partido al lenguaje groovy. Realmente me metí en el taller para tener una mesa cómoda donde trabajar en mi taller, pero principalmente me sirvió para darme cuenta que la wifi no tiraba y que debía reenfocar parte de mi taller por no tener wifi para descargar plugins de internet.
  • Using Grails in a Startup, con Tomás Lin. Donde nos compartió sus experiencias, problemas y recetas que les han ido surgiendo en Secret Scapes. Para mi, allí donde voy, suelen resultarme el tipo de charlas más enriquecedoras: problemas reales en un contexto y las soluciones a las que se han ido llegando.
  • Pilotando con Spock, con Ruben Eguiluz. Nos estuvo hablando del framework de testing Spock, ya le había pegado un ojo pero todavía tengo pendiente utilizarlo en algún proyecto. Por ahora sigo dándole a Groovy Unit Testing con sus extensiones para los artefactos de Grails y Groovy Mocks
  • Atlassian Party. Qué puedo decir: copazos, cervezas, sorteos y gente interesante con la que charlar, que siempre es lo mejor. Lo malo: creo que jamás me había ido tan pronto de una fiesta desde que tenía 14 años :D, de todos modos, un 10 para Atlassian.

– El segundo día, volví a llegar tarde y me quedé por los pasillos durante las charlas previas al café, pero tras mi taller y la comida asistí a:

  • Polyglot Grails, con Marcin Gryszko. Marcin expuso las posibilidades políglotas de Grails con otros lenguajes de la JVM usando sus respectivos plugins: Clojure, Scala y JRuby. Me pareció una charla interesante, pero se me hizo muy dura, cometí el error de no tomar el café después de comer y mi capacidad de atención terminó tendiendo a 0 XD.
  • Grails, opción real y escalable para sitios web de alta carga, con Domingo Suarez. Nos estuvo explicando acerca de clickonero, al parecer la plataforma ecommerce más grande de Latinoamérica, al estilo club de compras. También fue una de esas charlas en las que se explica la experiencia del trabajo y problemas dentro de una empresa de internet; tanto desarrollando nuevas funcionalidades como manteniendo un alto tráfico en sus servidores.
  • Aplicando elasticidad en la búsqueda con Grails, con Enrique Medina, el pobre de nuevo cerrando con la última charla. Que estuvo hablando de Elastic Search, que es un proyecto que desde que apareció he tenido a la vista como alternativa (aparentemente) más ligera que solr para búsquedas full-text sin tener que “bajar” a lucene. Personalmente, no me decepcionó para nada. Seguramente para el próximo proyecto que necesite búsquedas full-text, elegiré esa solución.
  • Cervezas de despedida, cortesía de Zero Turnaround. Para mi que tenía que volver a Zaragoza en el último AVE, fueron más bien pocas.

Me he perdido cantidad de charlas y talleres, me ha gustado bastante el contenido y forma de casi todo lo que pude atender. Para mi gusto, las más destacables fueron las de Tomás Lin y Domingo Suárez.

Y pienso que posiblemente vaya a ser la última vez que proponga un taller para un evento. Me lleva más o menos el mismo trabajo que preparar una presentación en condiciones. Me evito dolores de cabeza con temas logísticos del tipo a la conexión a internet, versiones de las instalaciones de los asistentes… Y también pienso que viste menos que una charla.

En fin, hasta la de 2013!

PD: Agradecimientos a Yurena, Tana y Yeray por acercarme hasta atocha desde Boadilla el viernes. Mucho más rápido que el metro y, una compañía y conversación difícilmente mejorable la del comando muyayo :).

Un repaso del Spring I/O 2011

Ya hace casi un par de semanas que se celebró el Spring I/O 2011, y algunos ya han escrito sobre ello.

Iba a hacer un resumen completo del evento, pero visto que otros ya han hecho muy buenos resúmenes y que me he enfriado sólo destacaré lo que me resultó más interesante de las charlas y talleres que pude asistir. Estaba muy difícil elegir entre los 3 tracks, se veía que iba a haber nivel… a ver si este año suben los videos para ver charlas que me perdí de las que me hablaron muy bien.

– Lo que más me gustó:

De cero a multinacional con Grails y EC2, de Jorge Uriarte y Eloy García-Borreguero. Siempre es interesante ver como otra gente soluciona sus problemas y más cuando usan un framework que tú mismo usas, en cierto modo me recordó un poco a nuestra charla de jobsket del año pasado. No por el contenido ni por el producto, si no por ver un caso real y que el caso fuera un negocio en internet.

Conociendo Griffon a fondo, de Andrés Almiray. La verdad que no le había prestado demasiada atención a griffon por que estoy bastante alejado de las aplicaciones de escritorio desde que me pagan por programar :P. Pero vi que era una buena oportunidad de aprender un poco de la mano de Andrés(entre otras muchas cosas, uno de los fundadores de griffon), ya que posiblemente desarrolle en el futuro un pequeño proyecto de escritorio y quería conocer que me ofrecía el framework. Como mínimo debería hacer un hola mundo 🙂

Aplicaciones web ultraescalables con Redis de Alberto Gimeno. No es colegeo(que podría serlo :P), ya sabía por donde iban a ir los tiros de su presentación porque fuimos hablando sobre el evento desde días antes, y precisamente fui porque sabía de antemano que iba a resultar interesante. No decepcionó, asistió mucha gente y fue la charla en la que más gente vi preguntar; les descubrió a mucha gente una alternativa a las típicas bases de datos relacionales.

Tuning your Grails applications, de Peter Ledbrook. Que sin descubrir grandes cosas, hizo un interesante repaso a las buenas prácticas que deberíamos utilizar en el desarrollo web para que nuestras webs sean más rápidas(empezando por evitar optimizaciones prematuras :)), y algunas formas de hacerlo con Grails.

Esto fue lo que más me gustó, otras cosas que me resultaron muy interesantes fueron las keynotes de Juergen Holler y Graeme Rocher, la charla de pruebas de Aitor Alzola, el taller de Geb con Fátima Casaú

Por otro lado, el primer día hice de facilitador(que dicen los agilistas :P) de un taller de groovy koans. Vamos, que hice una pequeña introducción-presentación de que son los koans, la gente se puso a programar y yo echaba una mano a quien me pidiera ayuda o tuviera alguna duda.

Esta fue la mini presentación que preparé:

Los koans recortados que hicimos en el taller están en github.

Personalmente me gustó mucho el evento, se notó que se aprovechó el rodaje y experiencia de los eventos de México DF y de Madrid y que habían más medios que el año pasado. También un WIN montar fiesta la primera noche para que la gente se relacionara distendidamente tras el duro día 🙂

Al final lo mejor, como siempre, es reencontrarte con amiguetes y conocidos; desvirtualizar o conocer gente nueva. Si al final lo bueno siempre está en el cara a cara 🙂

Nos vemos en otra 😉

Sobre el Spring2GX Day

El viernes tuvo lugar el Spring2GX Day en Madrid, evento organizado por Sergi Almar junto a javaHispano y SpringSource. La verdad es que me quedé muy sorprendido por el interés que generó el evento, con más de 400 inscritos, no sé cuál sería el número de asistentes finalmente, pero se vió bastante gente durante todo el día.

La sala de conferencias

Una de las cosas que más me gustan de estos eventos es tener la oportunidad de reencontrarte con viejos conocidos como Sergi, Nacho Brito, Álvaro Sánchez-Mariscal, Aitor Alzola, los paisanos de MasterD… además de con Martín y Jordi, por supuesto XD. Poner cara a gente con la que has mantenido algún contacto por internet como Tomás Lin, Raúl Expósito, Alberto Vilches o el mismo Graeme Rocher. Y por supuesto entablar conversaciones y conocer gente nueva durante el evento.

Eso sí, me quedé con mal sabor de boca por no haberme podido quedar hasta el final del evento, ya que hubo gente con la que no pude hablar o ni si quiera saludar, pero el tren de vuelta no esperaba 🙁

Algunos ponentes
Algunos de los ponentes, compartido por @sergialmar

Sobre las charlas no me voy a extender, Alberto Vilches y Tomás Lin han hecho unos resúmenes del evento estupendos, además, no creo que tarden mucho en publicarse los videos del evento :).

Acerca de la presentación que hicimos nosotros sobre nuestra experiencia creando Jobsket con Grails y Java, Martín publicó ayer las transparencias que utilizamos. Parece que para bastante gente resultó interesante conocer de primera mano una experiencia concreta con estas tecnologías.


Martín hablando de nuestros números, foto de @jerolba

También me quedo con la sensación de que Groovy y Grails empiezan a calar en España. Tanto por interés a nivel particular de desarrolladores, como de algunas empresas y organizaciones que lo están empezando a adoptar o que están interesadas en conocer lo que les puede aportar.

Estaremos en el Spring 2GX Day

Con tanto festivo de por medio, ya casi se me pasaba avisar aquí de que el equipo de jobsket en pleno, vamos a participar en el evento Spring 2GX Day, el 19 de Febrero de 2010 en la Escuela Politécnica Superior de la Universidad CEU San Pablo de Madrid.

Jobsket en el Spring 2GX Day

Este es el primer evento en España que gira exclusivamente a las tecnologías relacionadas con Spring, Groovy y Grails; la asistencia es gratuita y está organizado conjuntamente por javaHispano y SpringSource.

La agenda no está completamente cerrada, pero ya se han confirmado como ponentes internacionales a Graeme Rocher y Joris Kuipers. Además de, entre otros, a Nacho Brito y Álvaro Sánchez-Mariscal de Escuela de Groovy.

En nuestro caso hablaremos de productividad con Grails y Java

Una de las características más importantes de Grails es la gran productividad que ofrece en el desarrollo, a la vez que se aprovecha toda la potencia de la plataforma Java a través de su integración con el framework Spring. Aún así, mucha gente puede estar tentada a deshechar la plataforma por estar asociada con Groovy y pensar que se trata de un todo o nada. En esta charla se mostrará como construimos Jobsket sobre Grails explotando al máximo la productividad y rapidez de desarrollo que aporta y como aprovechamos sus capacidades de integración para interactuar con todos los servicios Java que teníamos desarrollados

También quiero aprovechar a agradecer a Sergi Almar que haya contado con nosotros para participar en el evento. ¿Nos vemos en el Spring 2GX Day? 🙂

Acceder al ApplicationContext en un HttpSessionListener


public void sessionCreated(HttpSessionEvent event) {
TestService testService = (TestService) getApplicationContext(event).getBean(“testService”);
//….
}

PD: Esto es una nota mental para no olvidarlo, y si de paso le sirve a alguien, pues mejor aún 🙂
PDD: Están muy bien servicios como gist o pastie, para compartir pequeños trozos de código 😉

Tutorial de inyección de dependencias con Spring

Rick Hightower está trabajando en un interesante tutorial sobre inyección de dependencias usando Spring. Realmente el tutorial empieza explicando explicando las bondades de la inyección de dependencias para desacoplar nuestro código; y sigue con una explicación de cómo hacerlo a mano, sin la ayuda de frameworks, con nuestro propio código pegamento.

Una vez introducidos, va explicando las diferentes formas con las que se inyectan dependencias con Spring, empezando desde la forma clásica usando sólo configuración XML, sigue adentrándose en algunas de las diferentes anotaciones de Spring que podemos utilizar(@Required, @Autowire, @Qualifier, @Component…), después en la configuración de objetos con tipos primitivos y acaba con el ciclo de vida y los ámbitos(scopes) de los objetos inyectados. En definitiva, un muy buen recurso para introducirse a la inyección de dependencias, a Spring y a sus anotaciones.

Sobre las anotaciones para la configuración de depenencias con Spring, bajo una opinión completamente personal y sin haberlas utilizado todavía, no me termina de convencer usarlas: Por un lado atamos nuestras clases a Spring con la configuración hardcodeada y por otro tenemos la configuración repartida en múltiples clases.

Quizás esté equivocado en lo segundo y sea más mantenible tener repartida la configuración en las mismas clases que tenerla en uno o varios XML, por esto me gustaría conocer las opiniones de los que pasáis por aquí que uséis Spring con o sin anotaciones y vuestras experiencias.

Integrar Spring y Struts

Hace ya algún tiempo que ando tocando algunas cosas de Spring framework. Un framework que simplifica el desarrollo de aplicaciones J2EE, que entre otras cosas nos permite desacoplar partes de nuestro código gracias a Spring IoC.

A raíz de un post en programania, en donde explican dos formas de integrar spring con struts, voy a aprovechar para explicar aquí las otras dos alternativas para hacerlo.

  • Nuestros Actions deben extender de ActionSupport: de esta forma se facilita la obtención del contexto de spring manualmente, que es la forma más sencilla de hacerlo. El problema, evidentemente que de esta forma las Actions de struts quedan muy aclopadas a spring.
  • Usando DelegatingRequestProcessor (o en el caso de usar Tiles DelegatingTilesRequestProcessor): le pasamos el manejo de las acciones a spring sobre-escribiendo el RequestProcessor de struts. De esta forma desacomplamos los Actions de spring, aunque nos puede surgir el problema que vayamos a usar un RequestProcessor propio, por lo que deberíamos usar el DelegatingActionProxy, que es la forma que explican en programania.

La pega que surge al delegar el manejo de los Actions a Spring con DelegatingRequestProcessor y DelegatingActionProxy, es que hay que definir en el beans.xml nuestros actions de struts. En el primer caso, en el struts-config definiremos (como siempre) nuestros actions, por lo que deberemos mantener las mismas actions en dos XML diferentes, sólo cambia que definimos:

controller processorClass = "org.springframework.web.struts.DelegatingRequestProcessor"

mientras que en el segundo, para cada action de struts-config le pondremos el type DelegatingActionProxy:

type = "org.springframework.web.struts.DelegatingActionProxy"

En conclusión, es recomendable delegar el manejo de las acciones a spring aunque tengamos que mantener dos XML diferentes, ya que la integración es más transparente y además tendremos la opción de utilizar Spring AOP. Mientras que extender de ActionSupport resultaría útil para utilizar varios contextos de spring distintos.

Para encontrar una explicación mucho más detallada y con ejemplos, en developerWorks hay un artículo disponible.