Groovy es una "copia" de Java simpática, programable y fácil de usar – y no me refiero derogativamente. mientras que Java es un lenguaje para ser compilado, implementado y (a menudo) ejecutado en servidores Enterprise donde el rendimiento importa, Groovy es un lenguaje donde puede crear rápidamente un programa para hacer algo. A menudo, eso es bastante simple, por lo que es un esfuerzo de codificación de una hora o de un día. A menudo, el código solo se ejecuta una vez y luego se descarta. Debido a que Java tiene más repetitivo y formalismo, puede hacer este tipo de programa más rápidamente y, por lo tanto, de manera más eficiente en Groovy.
Sin embargo, sólo para darle un poco de perspectiva, Groovy es un recién llegado pisando fuerte en el césped de varios otros lenguajes de scripting, mejor establecidas:
Perl es uno de los abuelos de los lenguajes de script; rara vez se instala un servidor Unix sin Perl, y los scripts Perl son el alma de muchos servidores. Sin embargo, Perl es un lenguaje de solo escritura que se parece al ruido de línea para los no iniciados. Hay más de una forma de hacer todo, por lo que los estilos divergen drásticamente. La codificación de Perl tiende a ser un poco desordenada.
Python es un lenguaje de manuscrito más limpio y fresco que Perl, y es hoy en día preferido por muchos como un lenguaje de scripting. Es divertido programar, hace las cosas y porque ha existido durante algunos años, mucha gente lo sabe. Python se encuentra detrás/dentro de una serie de utilidades del sistema Linux.
Groovy deja Perl y Python en el polvo cuando (a) el entorno ya utiliza una JVM y/o hay un requisito para utilizar el código de Java existente, incluidas las bibliotecas. Hasta aquí todo bien. Groovy no es tremendamente rápido, sino más rápido que Python. Al ser tipeado dinámicamente, es "divertido" y "fácil" programar de una manera que Java no lo hace.
Pero luego vino Scala. Scala es como Java con esteroides. Está tipado estáticamente, por lo que no es tan "divertido" programarlo como Groovy, pero tiene una inferencia de tipo tan a menudo que puedes dejar de lado los tipos y el compilador puede descifrarlos. Scala trabaja muy duro para aprovechar al máximo los tipos; hace los tipos genéricos mucho más a la perfección que Java. Se prescinde de una gran cantidad de texto estándar de Java, por lo que los programas de Scala son típicamente un 30% más cortos que los programas Java similares. Scala se ejecuta en la JVM e interactúa bastante bien con el código de Java. También funciona tan rápido como Java, que la mayoría de los otros idiomas no.
Finalmente, en orden histórico, está Clojure. Clojure es un derivado de Lisp, por lo que tiene un estilo de programación muy diferente de los idiomas que de otro modo conocerías, ¡y se quema a través de muchos paréntesis! Pero Clojure se ejecuta en la JVM, es muy compatible con todo el resto de Java, y está tipeado dinámicamente. Puede usarlo como lenguaje de scripting o tratarlo como un lenguaje compilado ... depende de usted. Me resulta divertido programar, y el hecho de que es un lenguaje funcional casi puro te obliga a pensar de nuevas maneras sobre la programación. Al principio te duele la cabeza, pero si sobrevives es un ejercicio muy valioso porque aprendes algunas técnicas que serán más relevantes (creo) en la programación futura.
En resumen, sería probablemente hará bien (poner pelo en el pecho, si se me permite ser tan machista) para aprender una o más de estas lenguas "alternativas"/"script". Puede encontrarlos útiles. Por lo general, cuando hay algo que se piratea rápidamente en mi proyecto, obtengo el trabajo porque todos mis colegas solo conocen Java, y cuando terminan de configurar su marco de clase, ya he terminado.
personas rutinariamente son fluidos en cinco o seis idiomas, y no hay evidencia de que el aprendizaje de una más es perjudicial para los demás. Otra suposición en su pregunta es que "tendrá que ser bueno en Java para codificar aplicaciones de escritorio". Si es en un par de años más, tal vez la próxima aplicación que codifique ¡ni siquiera estará en Java! –
Supongamos que solo conoce COBOL, y la opción es aprender Java. ¿Hubieras preferido no aprender un nuevo idioma? Si hubiera aprendido un nuevo idioma en el caso COBOL, ¿qué tiene de diferente esta situación para evitarlo? – Ken
Reetiquetado como independiente del idioma, ya que esto realmente no tiene nada que ver con Java o Groovy – skaffman