traduccion peliculas online meaning framework java groovy jvm

java - online - groovy peliculas



¿Hay razones convincentes para no usar Groovy? (5)

Estoy desarrollando una aplicación LoB en Java después de una larga ausencia de la plataforma (habiendo pasado los últimos 8 años atrincherados en Fortran, C, una pizca de C ++ y últimamente .Net).

Java, el lenguaje, no ha cambiado mucho de cómo lo recuerdo. Me gustan sus puntos fuertes y puedo solucionar sus debilidades: la plataforma ha crecido y decidir sobre una miríada de marcos diferentes que parecen hacer más o menos lo mismo es una historia diferente; pero eso puede esperar otro día. En general, me siento cómodo con Java. Sin embargo, en las últimas semanas me enamoré de Groovy, y simplemente desde un punto de vista egoísta: pero no solo porque hace que el desarrollo en contra de la JVM sea una propuesta más sucinta y entretenida (y, bueno, "genial") que Java (el lenguaje).

Lo que más me impresiona de Groovy es su capacidad de mantenimiento inherente. Todos (¡espero!) Nos esforzamos por escribir código bien documentado y fácil de entender. Sin embargo, a veces los idiomas que utilizamos a sí mismos nos derrotan. Un ejemplo: en 2001 escribí una biblioteca en C para traducir mensajes EDIF EDIFACT en mensajes ANSI X12. Este no es un proceso particularmente complicado, si poco involucrado, y pensé en ese momento que había documentado el código correctamente, y probablemente lo había hecho, pero unos seis años más tarde, cuando volví a visitar el proyecto (y después de aclimatarme a C #) encontré yo mismo perdí en tantas repeticiones de C (mallocs, punteros, etc.) que me tomó tres días de análisis reflexivo antes de que finalmente entendiera lo que había estado haciendo seis años antes.

Esta noche he escrito unas 2000 líneas de Java (¡es el día de descanso, después de todo!). He documentado lo mejor que sé cómo, pero, de esas 2000 líneas de Java una proporción significativa es placa de caldera de Java.

Aquí es donde veo a Groovy y a otros lenguajes dinámicos que ganan: mantenimiento y comprensión posterior. Groovy le permite concentrarse en su intención sin atascarse en la implementación específica de la plataforma; es casi, pero no del todo, auto documentado. Veo esto como una gran ayuda para mí cuando vuelvo a visitar mi proyecto actual (que trasladaré a Groovy lo antes posible) dentro de varios años y para mis sucesores, que lo heredarán y continuarán el buen trabajo.

Entonces, ¿hay alguna razón para no usar Groovy?


Creo que el mayor problema es la falta de soporte IDE en comparación con Java, sin embargo, los complementos para Eclipse y Netbeans están mejorando todo el tiempo. Además, si recuerdo correctamente, Groovy no admite clases internas anónimas si realmente las necesitas por algún motivo. Yo personalmente elegiría a Groovy en cualquier momento.


Dos razones por las que Scala podría ser una alternativa atractiva a Groovy:

  • Rendimiento a la par con Java
  • Escritura estática sin desorden

Hay dos razones por las que se me ocurre no usar Groovy (o Jython, o JRuby):

  • Si realmente, realmente necesitas un rendimiento
  • Si se perderá la comprobación de tipo estático

Esas son grandes cosas así. El rendimiento es probablemente un factor menos importante en la mayoría de las aplicaciones de lo que la gente cree, y la comprobación estática de tipos es un problema religioso. Dicho esto, uno de los puntos fuertes de todos estos lenguajes es su capacidad para mezclar y combinar con el código nativo de Java. Lo mejor de ambos mundos y todo eso.

Como no soy responsable de su negocio, digo "Adelante".


Si usas Groovy, básicamente estás desperdiciando información útil sobre tipos. Esto deja su código "groovy": agradable y conciso.

Bird b

se convierte

def b

Además, puedes jugar con todo el material metaclase y las llamadas a métodos dinámicos que son una tortura en Java.

Sin embargo, y , he intentado con IntelliJ, Netbeans y Eclipse exhaustivamente, la refactorización automática seria no es posible en Groovy. No es culpa de IntelliJ: la información del tipo simplemente no está allí. Los desarrolladores dirán, "pero si tienes pruebas unitarias para cada ruta de código individual (hmmmm), entonces puedes refactorizar más fácilmente". Pero no crea en la exageración: añadir más código (pruebas unitarias) aumentará la seguridad de la refactorización masiva, pero no facilitará el trabajo. Ahora tienes que arreglar manualmente el código original y las pruebas de la unidad.

Esto significa que no se refactorizará tan seguido en Groovy, especialmente cuando un proyecto está maduro. Si bien su código será conciso y fácil de leer, no será tan brillante como el código que se haya refactorizado automáticamente diariamente, por hora y semanalmente.

Cuando se da cuenta de que un concepto representado por una clase en Java ya no es necesario, puede simplemente eliminarlo. En Eclipse o Netbeans o lo que sea, su jerarquía de proyectos se ilumina como un árbol de Navidad, diciéndole exactamente lo que ha arruinado con este cambio. def thing dice al compilador (y por lo tanto a su IDE) nada sobre cómo se usará una variable, si el método existe, etc. Y los IDE solo pueden hacer tantas conjeturas.

Al final, el código de Java está lleno de "repetitivo", pero ha sido amasado en su forma final después de muchas refactorizaciones. Y para mí, esa es la única forma de obtener código de alta calidad y legible para futuros programadores, incluso cuando esos futuros programadores son ustedes en el futuro.


Una de las cosas más importantes que pierde cuando utiliza lenguajes dinámicos, especialmente en una gran base de código, es la capacidad de usar un IDE para volver a factorizar. Los lenguajes que permiten agregar código dinámicamente a los objetos simplemente no pueden ser analizados por los IDE actuales para permitir el tipo de métodos de refactorización fáciles que puede obtener de Eclipse, etc. para Java, C ++, etc.

No es realmente el caso de "Los lenguajes dinámicos son mejores que los estáticos". Usa lo mejor para ti Lo realmente genial de Groovy en particular es que puedes mezclar y combinar Java y Groovy en el mismo proyecto, y todo se ejecuta en la VM. Sí, Scala es otro ejemplo.