Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Entrevista con Guillaume Laforge

viernes 16/03/2007

En Groovy.org.es queremos comenzar una serie de entrevistas a miembros relevantes de la comunidad Groovy. Y por supuesto el primero debía ser Guillaume Laforge, director del proyecto y creador del lenguaje. Desde aquí agradecer a Guillaume su colaboración con nosotros.

A continuación os reproducimos la entrevista (traducida del inglés).

¿Puedes presentarte y contarnos cuales son actualmente tus principales proyectos?

Hola, me llamo Guillaume Laforge.
Dirijo del proyecto Groovy, y la especificación JSR-241 que estandariza Groovy como lenguaje dinámico para la máquina virtual. En mi "vida real" soy arquitecto de software para OCTO Technology, una compañía francesa dedicada a la arquitectura de software y las tecnologías ágiles

¿Qué es un lenguaje dinámico? ¿significa lo mismo que 'lenguaje de scripting'?

¡Buena pregunta!
Hay un montón de malos usos de las palabras "dinámico" y "scripting". Sin embargo, HAY una diferencia. Groovy es un lenguaje dinámico que puede usarse también como lenguaje de scripting.
Un lenguaje de scripting es normalmente un lenguaje interpretado, y habitualmente con tipado débil (no te obliga a definir el tipo de tus variables).
Sin embargo los lenguajes dinámicos son animales diferentes. Pueden ser tanto interpretados como compilados, pueden tener tipado fuerte o débil. Pero lo que hace que un lenguaje sea dinámico es que la gestión de llamadas a métodos y el acceso a propiedades se hace en tiempo de ejecución en lugar de en tiempo de compilación. Los lenguajes de tipado estático como Java no son dinámicos porque la lógica de gestión de llamadas se hace en tiempo de compilación.

¿Para qué deberíamos querer lenguajes dinámicos en un proyecto Java? ¿Qué es lo que proporcionan que no teníamos antes?

Los lenguajes dinámicos como Groovy pueden hacer un tipo de magia que Java no puede. Por ejemplo, Groovy puede hacer cosas como inyectar métodos y propiedades nuevas en las clases del JDK, o incluso en los tipos primitivos. Por ejemplo, puedes añadir una propiedad a los números que te permita escribir cosas como:
3.dolares, 40.kilómetros
El framework web Grails también hace algunas cosas interesantes como añadir métodos de búsqueda dinámicos a las clases del modelo de datos. Por ejemplo, Groovy puede interceptar llamadas a métodos estáticos en en tiempo de ejecución para traducirlas a consultas de Hibernate: Book.findByTitle("Harry Potter") creará la consulta correspondiente para recuperar todos los libros cuyo titulo sea "Harry Potter", ¡aunque en realidad no exista ningún método "findByTitle" en la clase Book!
Todas esas capacidades dinámicas (a veces llamadas "capacidades de meta-programación") hacen a Groovy un candidato perfecto para crear lenguajes específicos de dominio ("Domain-Specific Languages").

¿Qué es Groovy y en qué se diferencia de otros lenguajes que se integran en la plataforma Java?

Como hemos visto, Groovy es un lenguaje dinámico para la Máquina Virtual Java.
Puedes compilarlo o interpretarlo.
En cualquier caso genera el mismo código bytecode que un compilador Java.
Comparte con Java la misma orientación a objetos.
Y puedes integrar Java y Groovy muy fácilmente. Puedes hacer una clase Groovy que herede de una clase Java, y viceversa. Puedes mezclar ambos lenguajes en un mismo proyecto.
Groovy es un lenguaje muy parecido a Java, porque tiene una sintaxis muy similar, pero también incorpora características de lenguajes como Ruby, Python o Smalltalk.
La originalidad de Groovy probablemente venga del hecho de que Groovy es un lenguaje nuevo creado con la máquina virtual java en mente. No se trata de una simple copia de un lenguaje de scripting que ya existiera. Por tanto Groovy es bastante innovador, mientras que proyectos como JRuby o Jython siempre tendrán que seguir lo que hagan los lenguajes originales (Ruby y Python).
El hecho de que Groovy proporcione una estrecha integración con Java hace que sobresalga entre la multitud.

¿Cual fue el principal objetivo a la hora de definir Groovy?

Los principales objetivos fueron seguramente productividad e interoperabilidad con la plataforma Java. Necesitábamos nuevas formas de interactuar con la plataforma, con el objetivo de eliminar tanto código replicado ("boilerplate code", N.T.) como fuera posible. Por desgracia, hay un montón de cosas sencillas para las que en Java hace falta una cantidad inmensa de código.
La interoperabilidad fue crucial también, por supuesto, porque el objetivo era integrarnos de forma transparente con la plataforma.

¿Qué es un Lenguaje Específico de Dominio ("Domain Specific Language"), y cual es la relación con Groovy?

Un DSL es un "pequeño" lenguaje enfocado a modelar un dominio o un área de conocimiento particular. No tiene que ser un lenguaje Turing-completo, pero el objetivo es proporcionar construcciones sintácticas que se acerquen al dominio que se quiere representar.
Por ejemplo, podemos pensar en un DSL para cálculo de riesgo en seguros, o diseñar workflows, o reglas de gestión de cuentas bancarias.
Debido a su naturaleza dinámica, Groovy puede utilizarse para crear ese tipo de lenguajes.

¿Piensas que Groovy recibe el apoyo suficiente tanto de la comunidad de desarrolladores Java como de las compañías involucradas con la plataforma Java?

Tenemos una comunidad maravillosa alrededor de Groovy (y Grails). Pero hasta ahora, es cierto que no hemos recibido demasiadas contribuciones de compañías de renombre. Podemos decir que esas contribuciones son bastante poco frecuentes, por no decir más.

¿Piensas que Groovy debería integrarse en Java SE, como JavaScript ha sido incluido en Java SE 6?

Bueno, ¡y por qué no!. Podría ser interesante ver a Groovy en el JDK. ¡Groovy estaría presente en todos los ordenadores en los que estuviera Java! Sin embargo, una vez integrado en el JDK seríamos menos libres para innovar y hacer evolucionar los APIs del lenguaje.
Por tanto habría ventajas y desventajas en una integración así.
De todas formas Sun nunca se ha puesto en contacto con nosotros para hablar del tema.

¿Cual es el nivel actual de soporte de Groovy en IDE's como Netbeans o Eclipse, y en qué dirección se mueven estos desarrollos?

Las cosas están avanzando bastante bien últimamente. Hay 4 personas trabajando en el plugin de Groovy para Eclipse, incluso una de ellas ha sido contratada durante un mes para implementar el autocompletado de código en condiciones.
Por otra parte JetBrains está investigando la posibilidad de dar soporte a Groovy en su magnífico IntelliJ IDEA.
Las herramientas y el soporte en IDE's son una de nuestras principales prioridades en este momento, ya que es una de las últimas cosas que aún ralentizan un poco la adopción de Groovy.

Y la última pregunta: ¿Quieres añadir algo más?

Hmmm, bueno, nada especial, simplemente gracias por la entrevista, enhorabuena por groovy.org.es y buena suerte!


Contenidos relacionados:



1 comentarios:

Super interesante

elbicho - lunes 19/03/2007

Muy buena la entrevista, corta pero completa, ha hablado de cosas básicas que no tenía muy claras.

Tienes que estar registrado para iniciar sesión y poder publicar tus comentarios