2010-02-12 11 views
11

He estado viendo Groovy un poco y siento que mover un programa Java a Groovy poco a poco - tomar una clase y convertirla en una clase Groovy, luego convertir el método un poco a la vez - podría ser una forma relativamente sensata de aprovechar algunas de las características del lenguaje Groovy. También haría nuevas clases en Groovy.Sustituyendo Groovy por Java Little By Little

Preguntas:

  1. ¿Es esta una forma razonable para convertir?
  2. ¿Puedo conservar todos mis métodos públicos y campos en Java? Groovy es "solo" un superconjunto, ¿verdad?
  3. ¿Qué tipo de cosas haría no hacer en Groovy, pero prefiere Java en su lugar?

Respuesta

13

¿Es esta una forma razonable de convertir?

¿Puedo mantener todos mis métodos públicos y campos y en Java? Groovy es "solo" un superconjunto, ¿verdad?

Casi un superconjunto, pero no exactamente. Por ejemplo, == en Groovy llama al método .equals, pero en Java comprueba si 2 referencias se refieren al mismo objeto.Otro ejemplo es que Groovy no soporta esta sintaxis para matrices construcción de

Object[] objs = new Object[] { 1, 2, 4 } 

Un último ejemplo es que cuando se llama a un método sobrecargado, maravilloso utiliza el tipo de tiempo de ejecución de los parámetros de la hora de elegir el método a invocar, mientras que utiliza Java los tipos de parámetros en tiempo de compilación. This page tiene una lista bastante completa de las diferencias entre los dos idiomas.

¿Qué tipos de cosas no harías en Groovy, pero preferirías Java?

Escribo todo en Groovy, porque soy mucho más productivo con Groovy que con Java, y disfruto muchísimo la programación de Groovy. Solo usaría Java si hubiera un problema de rendimiento con algún código Y Podría demostrar que escribirlo en Java resolvió el problema. En la práctica, esto en realidad nunca me ha sucedido a mí.

También pueden existir razones sociopolíticas para usar Java, p. Ej. Es necesario que muchas personas mantengan cierto código, algunos de los cuales no conocen Groovy y no quieren aprenderlo.

+0

Don muchas gracias por esta respuesta, especialmente la última parte. La optimización temprana probablemente no es tan buena y es un gran desperdicio del tiempo de desarrollo. ¿Cómo encuentras que el autocompletado está en Groovy (bueno, malo, no me importa)? –

+0

Autocompletar en IntelliJ es bueno. La última vez que lo revisé no fue satisfactorio en Eclipse/Netbeans, pero eso fue hace unos 6 meses y las cosas pueden haber mejorado desde entonces. –

+0

Lo revisé la semana pasada y no fue tan bueno. Especialmente esa cosa autocorrecta en Eclipse que es tan sorprendente (¿hacer un método en la Clase X?) No estaba sucediendo en Groovy. La razón por la que estoy tan interesado en este problema es porque trabajo en Ruby casi sin autocompletar (Netbeans), pero creo que es posible que Ruby sea demasiado difícil de acertar. De todos modos ... gracias de nuevo. Inicié mi intellij GRATIS hoy, así que lo verificaré. –

4

De Wikipedia:

más código Java también es sintácticamente válida maravilloso.

Y

Parte del código Groovy parece que sería en el lenguaje Java, pero es maravilloso no es un superconjunto de Java. Sin embargo, salvo algunas incompatibilidades , uno generalmente puede renombrar un archivo .java a .groovy uno y funcionará. Groovy permite que el codificador omita algunos elementos que se requieren en Java, por lo que el código de Groovy puede ser más compacto. Esto hace que la curva de aprendizaje Groovy para desarrolladores Java sea gradual, ya que pueden comenzar con la sintaxis Java y poco a poco aprender a agregar funciones Groovy.

En cuanto al resto de su pregunta, creo que esto parece una forma razonable de progresar. Sin embargo, trataría de centrarme en cambiar las clases relacionadas para usar Groovy juntos, de modo que sea fácil saber qué clases usan qué idioma al asignar tareas a los desarrolladores, que pueden no conocer ambos idiomas.

+0

Interesante, que se encarga de algunas de las preguntas. O todo eso, tal vez. –

Cuestiones relacionadas