Pregunta

¿Por qué elegiría usar Groovy cuando podría usar Jython o Jruby? ¿El lenguaje proporciona ventajas inherentes para compensar el hecho de que las habilidades de Jython y Jruby son aplicables a sus idiomas principales fuera de la JVM?

Tenga en cuenta que deliberadamente mantengo esta pregunta genérica, pero si existen ventajas en un dominio en particular, no dude en describirlas.

EDITAR
Para aclarar, si escribo algún código en Jruby, ahora puedo, en algunos casos, mover ese código fuera de la JVM si es necesario, o al menos he obtenido una mejor comprensión de Ruby. Mientras que las habilidades Groovy son aplicables solo cuando se usa un lenguaje que solo existe dentro de la JVM. Jython y Jruby tienen esta ventaja incorporada, ¿qué tiene que compensar Groovy para esta desventaja?

Si Groovy no tiene ninguna ventaja que haya encontrado, y sugeriría simplemente usar Jython o Jruby, avíseme.

Editar 2
Gracias a todos por todas las respuestas, la mayoría de ellas hacen el mismo punto, Groovy se integra un poco mejor con Java que Jython o Jruby.

Seguimiento
Usando Netbeans 6.5 como mi IDE, he descubierto que Groovy se integra mejor con proyectos Java que Jruby. No estoy seguro si la falta de integración es una falla de Jruby o Netbeans. Pero después de usarlo por un poco, Groovy definitivamente parece tener una ventaja.

¿Fue útil?

Solución

He realizado un desarrollo bastante extenso en Ruby y Groovy (así como en un pequeño Jython usando Grinder como herramienta de prueba de carga).

De los 3, prefiero Groovy más. Me gusta más la sintaxis de cierre y creo que tiene la integración más estrecha en cómo funciona con otras clases de Java en la JVM. Ha pasado un tiempo desde la última vez que usé JRuby, pero importar clases de Java y trabajar con el cargador de clases en JRuby no me pareció tan limpio.

El hecho de que Groovy también sea esencialmente un superconjunto de Java significa que la enorme población de programadores de Java tendrá un tiempo de absorción más rápido al elegir a Groovy sobre Ruby / JRuby. Pueden comenzar a programarlo como si fuera Java y lentamente comenzar a insertar idomatic groovy a medida que lo recogen.

Más al punto de lo que estás preguntando, creo que otra ventaja de Groovy es que el lenguaje al que vas cuando quieres optimizar algo es casi la misma sintaxis, es Java. Si está trabajando en los mundos de Ruby o Python, tendrá que ir a C, que es un gran cambio, o a Java, que también es bastante diferente de esos lenguajes. La programación en Groovy tiende a ayudar a mantener sus habilidades de Java algo agudas también.

Si tiene acceso particular a una infraestructura Ruby o Python, o un equipo que está familiarizado con ese tipo de entornos, entonces podría ver la elección de uno de esos otros idiomas.

Realmente, los 3 son idiomas muy agradables y lo que elijas debería depender más del problema que estás tratando de solucionar y de los recursos que tienes disponibles. Una vez que domine un lenguaje dinámico, aprender un segundo o un tercero es mucho más fácil.

Otros consejos

Diría que si necesita mezclar Java con Jruby / Groovy, vaya con Groovy. Como todos decían, Groovy tiene una integración Java más estricta.

Pero en lo que respecta al lenguaje implementation , prefiero el lenguaje Ruby sobre Groovy, el lenguaje gira en torno a sí mismo, en Groovy hay algunos hacks que son inherentes a la implementación en sí (solo mire un seguimiento de pila de Grails frente a un seguimiento de pila de Rails y verá lo que quiero decir).

Recomiendo encarecidamente ver la comparación de Groovy de Neal Ford y JRuby

Creo que Dick Wall dio un muy buen resumen de las diferencias entre estos tres en el podcast de Java Posse (# 213, aproximadamente 34:20 pulgadas) ... " JRuby fue diseñado para hacer felices a los programadores ... es una elección del desarrollador del lenguaje de programación; Python tiene raíces muy fuertes en simplicidad y educación; Groovy tiene como objetivo ser la opción para los desarrolladores de Java ... es un entorno muy familiar para Java ... con soporte para anotaciones " ;.

En términos de mover el lenguaje fuera de la JVM, no creo que el tiempo de ejecución de Java imponga una sobrecarga, es una instalación simple y necesita establecer algunas variables de entorno, pero proporciona un número de beneficios que incluyen un tiempo de ejecución maduro que ha sido altamente optimizado y un gran conjunto de bibliotecas. El equipo de JRuby ahora informa un mejor rendimiento que la resonancia magnética nativa. http://blog.headius.com/2008/08/twas-brillig. html

Solo he tenido experiencia con Jython y Groovy. La mayor desventaja con Jython, en este momento, es que la última versión recomendada para producción (2.2.1) tiene un conjunto de características que "corresponde aproximadamente a la de Python-2.2". ( Preguntas frecuentes de Jython ) . Hay una versión beta que implementa lo que supongo es Python 2.5, que ahora está detrás de una versión. No sé si se puede decir lo mismo de JRuby.

No sé por qué usted debería elegir Groovy porque no conozco sus antecedentes. Si usted es un desarrollador de Java, Groovy se siente más similar a su idioma actual que JRuby o Jython. Groovy combina lo mejor de Java, el lenguaje, Java, la plataforma y Ruby el lenguaje.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top