El papel de Groovy en el nuevo JEE
jueves 24/01/2008
En enero de 2007 se liberó la versión 1.0 de Groovy, un lenguaje dinámico para la plataforma Java que se integra de forma totalmente transparente en ella. Las clases Groovy se compilan a bytecodes análogos a los de las clases Java, y esa compilación puede hacerse de forma dinámica o estática, mediante el compilador groovyc.Después de ese lanzamiento han llegado varios evolutivos, hasta la versión 1.5 publicada en diciembre del mismo año, con la que se corregían lagunas de rendimiento y se completaba el nivel de integración con Java. En este artículo intentaré poner en perspectiva este evento, y explicar por qué en nuestra opinión estamos ante el nacimiento de una nueva generación de desarrollos sobre la plataforma Java.
De dónde venimos
Tradicionalmente, la tarea de mezclar distintos lenguajes en una misma aplicación requería de capas de abstracción y comunicación más o menos complejas. Cualquiera que haya trabajado con JNI sabe las dificultades que plantea integrar Java con C/C++, que hacen que sólo sea una alternativa viable cuando los beneficios de dicha integración son muy altos.
Microsoft fue el pionero en desarrollar una plataforma multilenguaje en la que podíamos construir partes de una aplicación en C# (fuertemente tipado, con una sintaxis estricta) y otras en Visual Basic (con una sintaxis más flexible). Una vez compilados, todos los módulos son compatibles a nivel binario. La idea es brillante, pero como siempre, con el handicap de no ser multiplataforma.
Java por su parte tenía todo lo necesario para incorporar nuevos lenguajes que compilasen a bytecode: una máquina virtual que posiblemente sea la mejor que se ha escrito nunca, y un lenguaje intermedio de bytecodes que se ejecuta con eficiencia y robustez. Sin embargo, no fué hasta el lanzamiento de .NET de Microsoft cuando comenzó a tomar peso la posibilidad de incluír otros lenguajes en la plataforma además del propio Java.
Hasta ese momento, a la hora de elegir entre lenguajes dinámicos o estáticos para un desarrollo, la cuestión estaba clara: los lenguajes estáticos escalan bien y facilitan arquitecturas ordenadas, pero incrementan los tiempos de desarrollo y "time to market". Los lenguajes dinámicos tienen unos tiempos de desarrollo muy cortos para ideas sencillas, pero la complejidad puede crecer exponencialmente con el proyecto, al no obligar a una organización de los artefactos, con lo que estaban prácticamente relegados a prototipado y scripting.
Dónde estamos
Los lenguajes dinámicos han traído a la plataforma Java lo que más falta le hacía: agilidad. Agilidad significa que podemos desarrollar un prototipo de una aplicación en tiempo récord, y que ese prototipo luego puede crecer hasta convertirse en una aplicación real. Agilidad significa que nuestros desarrollos son más flexibles y podemos mejorar en la orientación al cliente.
A la hora de buscar un lenguaje para "añadir dinamismo" a un desarrollo para la plataforma Java, Groovy destaca claramente entre las opciones disponibles (JRuby, Jython, etc) por su nivel de integración. Utiliza los mismos tipos que Java y una sintaxis familiar, pero añadiendo toda la magia dinámica que permite desarrollos que antes no eran viables por tiempo o coste de mantenimiento.
A dónde vamos
Sin duda estamos asistiendo al nacimiento de un nuevo paradigma en el que las aplicaciones de envergadura se construyen integrando módulos escritos en distintos lenguajes. Ya no tiene sentido buscar el lenguaje perfecto para un desarrollo, porque no existe. Ahora disponemos de distintos lenguajes que brillan cada uno en su ámbito particular, y que además son compatibles a nivel binario. Ya no tenemos que hacer compromisos entre rendimiento y mantenibilidad, entre arquitectura y tiempo de desarrollo
Vamos hacia la generalización de los equipos multi-lenguaje en las empresas y departamentos de desarrollo, que serán capaces de gestionar proyectos más grandes con menos recursos gracias a que podrán utilizar de verdad la mejor herramienta para cada tarea.
Más información: http://groovy.org.es:80//stories