2008-11-13 18 views
33

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

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

EDITAR
Para aclarar, Si escribo algo de código en jruby, puedo ahora, en algunos casos, causan que el código fuera de JVM si es necesario, o por lo menos he ganado una mejor comprensión de Ruby. Mientras que las habilidades de Groovy son aplicables solo cuando se usa un lenguaje que simplemente existe dentro de la JVM. Jython y Jruby tienen esto construido en ventaja, ¿qué tiene que hacer Groovy para compensar esta desventaja?

Si Groovy no tiene ninguna ventaja que haya encontrado, y sugeriría que solo use Jython o Jruby, hágamelo saber.

Editar 2
Gracias a todos por todas las respuestas, la mayoría de ellos hacen el mismo punto, maravilloso integra un poco mejor con Java entonces Jython o jruby.

Seguimiento
uso de NetBeans 6.5 como mi IDE he encontrado que maravilloso que se integra mejor con proyectos de Java entonces jruby. No estoy seguro si la falta de integración es un error de Jruby o Netbeans. Pero después de usarlo un poco Groovy definitivamente parece tener una ventaja.

+3

Este es no vale la pena publicar una respuesta para, pero al igual que la mayoría de los idiomas Jython/JRuby/Groovy son de dominio-agnostic-- que todos haremos lo que quiere más o Menos. Simplemente elige el que mejor se adapte a ti :-) – SCdF

+3

O, alternativamente, el que tenga el nombre más genial. – SCdF

+0

¿Entonces estás diciendo que no hay ninguna ventaja al usar Groovy sobre los otros dos? –

Respuesta

36

He hecho un desarrollo bastante extenso en Ruby y Groovy (así como un poco de Jython usando Grinder como herramienta de prueba de carga).

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

El hecho de que Groovy también es esencialmente un superconjunto de Java significa que la enorme población de programadores de Java tendrá un tiempo de captación más rápido en la elección de Groovy sobre Ruby/JRuby. Pueden comenzar a programarlo como si fuera Java y comenzar a insertar lentamente idomatic groovy mientras lo levantan.

Más hasta el punto de lo que estás pidiendo, creo que otra ventaja de maravilloso es que el idioma que vaya a cuando se quiere optimizar algo es casi la misma sintaxis exacta, es Java. Si trabajas en los mundos de Ruby o Python, vas a tener que ir a C, que es un gran cambio o Java, que también es bastante diferente de esos idiomas.La programación en Groovy tiende a ayudar a mantener sus habilidades de Java algo nítidas también.

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

De verdad, los 3 idiomas son 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 para ti. Una vez que se ha vuelto competente en un lenguaje dinámico, es mucho más fácil elegir un segundo o un tercero.

1

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 "aproximadamente corresponde a la de Python-2.2" (Jython FAQ). Hay una versión beta implementando lo que supongo que es Python 2.5, que ahora es una versión detrás. No sé si se puede decir lo mismo de JRuby.

+0

Sí Jython no se ha movido con la velocidad de CPython, que debería mejorarse en el futuro ya que Sun ahora tiene personas trabajando en él a tiempo completo. Pero las habilidades de Python 2.2 son más aplicables fuera de la JVM y luego de Groovy. –

+0

Sí, de acuerdo. Apresuré mi respuesta esta mañana (tratando de salir por la puerta para ir al trabajo). Sin embargo, Groovy tiene un buen azúcar sintáctico. Me gusta especialmente poder crear un mapa de cadenas (representando nombres de métodos) para cierres (implementaciones de métodos) como la implementación de una interfaz. –

+2

Jython ha lanzado oficialmente 2.5 ahora. Esperemos que sea tan bueno como JRuby. –

0

No sé por qué usted debe elegir Groovy porque no conozco su fondo. 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 idioma.

3

Creo que Dick Wall dio un muy buen resumen de las diferencias entre estos tres en el podcast de Java Posse (# 213, sobre 34:20 en) ... "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 sólidas en la simplicidad y la educación; Groovy está dirigido directamente a ser la elección de los desarrolladores de Java ... es un entorno muy familiar para Java ... con soporte para anotaciones ".

En términos de mover el idioma 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 una número de beneficios, incluido un tiempo de ejecución maduro que ha sido altamente optimizado y un gran conjunto de bibliotecas. El equipo JRuby ahora informa un mejor rendimiento que la resonancia magnética nativa. http://blog.headius.com/2008/08/twas-brillig.html

13

Yo diría que si necesitas mezclar Java con Jruby/Groovy, ve con Groovy. Como todos dijeron, Groovy tiene una integración Java más estricta.

Pero por lo que el idioma aplicación va, prefiero el lenguaje Ruby más maravilloso, el idioma gira en torno a sí mismo, en Groovy hay algunos trucos que son inherentes a la aplicación en sí (no ver una StackTrace Griales contra una pila stack de Rails y verás lo que quiero decir).

I altamente recomendaría ver de Neal Ford comparison of Groovy and JRuby

+1

Gracias por el enlace. Es interesante, pero también siento que me falta un componente significativo al no tener el discurso que acompañó a las diapositivas. –

+3

El enlace está roto. –

+2

La lista de conferencias pasadas: http://www.nealford.com/mypastconferences.htm lo lleva a un repositorio de presentaciones de github: http://github.com/nealford/presentations y este es un enlace directo al PDF de Groovy vs JRuby: http://github.com/nealford/presentations/raw/master /Comparing%20Groovy%20and%20JRuby%20(Neal%20Ford).pdf – atomicules

Cuestiones relacionadas