Estamos escribiendo un gran sistema de producción en Java, y estoy considerando si podemos o no escribir algunos de los componentes en uno de los lenguajes dinámicos basados en JVM. Groovy parece ser la mejor opción desde el punto de vista de interoperabilidad de Java. Pero, ¿es la implementación de Groovy lo suficientemente confiable como para usarla en producción (supongo que sí), y la especificación del lenguaje Groovy en sí misma es lo suficientemente estable para que no tengamos que revisar nuestro código de producción sustancialmente en uno o dos años? ¿Cuáles son tus experiencias?¿Qué tan estable es el lenguaje Groovy?
Resumen (30/05/09): Buenos comentarios, la sensación que tengo es que debes tener cuidado al adoptar Groovy para el uso de producción crítica, está bien para usos auxiliares como armar casos de prueba, y hay una un terreno intermedio donde probablemente esté bien pero haga su tarea primero. El rendimiento es un problema que debe equilibrarse con el aumento de la productividad del desarrollador. Bill e Ichorus tienen respuestas igualmente útiles basadas en el uso de Groovy, por lo que fue un lanzamiento de moneda.
Actualización (12/3/09): Más recientemente he echado un vistazo serio al Scala, otro lenguaje JVM. Fue diseñado e implementado por Martin Odersky, el autor original del compilador javac actual y el co-diseñador de Java Generics. Scala es fuertemente tipado, pero utiliza la inferencia de tipo para eliminar un montón de repetición. Es una buena combinación de programación orientada a objetos y funcional. James Gosling likes it. James Strachan, el autor de Groovy, likes it too. Y la experiencia de Odersky escribiendo javac significa performance is not far from Java en bruto de Scala, lo cual es impresionante.
Actualización (26/4/11): Eche un vistazo a Groovy++, una extensión estáticamente tipada de Groovy, que tiene performance equivalente a Java. Se ve muy interesante.
¿Cómo se define "suficientemente fiable"? ¿Qué criterios estás buscando? ¿Cómo se define "lo suficientemente estable"? ¿Qué características piensas usar? –
Buenas preguntas aclaratorias. "Lo suficientemente confiable" significa una calidad extremadamente alta en la generación de códigos de bytes, y pocos errores en las bibliotecas centrales (estas necesitarían soluciones fáciles y estar bien documentadas). "Lo suficientemente estable" aquí se refiere a la especificación del lenguaje Groovy: ¿el código que escribimos hoy va a necesitar un porte importante cuando salgan versiones posteriores de Groovy? Establezcamos el dominio de las características necesarias para que sean las que se analizan en Koenig's Groovy in Action. ¡Muchos buenos comentarios aquí, gracias a todos! –
Acerca del rendimiento, eche un vistazo a Groovy 2.0: http://java.dzone.com/articles/groovy-20-performance-compared –