Grails vs Roo - ¿por qué SpringSource está impulsando dos tecnologías muy similares?


SpringSource (ahora VMware) tiene dos tecnologías muy similares: Grails y Spring Roo. He estado usando Grails, pero veo que SpringSource está trabajando activamente en algo que es un competidor para esa tecnología y que me preocupa el futuro de Grails.

¿Alguien sabe cómo se relacionan estas tecnologías, se van a fusionar o se abandonará una de ellas?

Además, ¿hay diferencias técnicas importantes entre Grails y Roo?

Author: MattGrommes, 2010-01-05

8 answers

El objetivo de SpringSource es hacer que sea lo más rápido y fácil posible para las personas crear, ejecutar y administrar soluciones basadas en Spring. Tenemos Grails y Spring Roo porque nos preocupa profundamente la productividad de los desarrolladores y, sin duda, ambas herramientas ofrecen un impulso serio a lo que los equipos pueden lograr en la parte superior de Spring.

Tenemos ambas tecnologías porque Roo y Grails son muy diferentes en los niveles filosóficos y de implementación (como ya se señaló en las otras respuestas). Cada tecnología aborda su lenguaje primario (Java o Groovy) y su modelo operativo (dev-time o runtime) con la filosofía de "¿cómo hacemos que la propuesta de valor sea increíblemente buena usando esta combinación de lenguaje y modelo operativo?". Como tal, verá que cada tecnología adopta un estilo diferente que maximiza esa combinación (Java + Dev-time de Roo o Groovy + Runtime de Grail) y los beneficios proporcionales.

Estas diferencias son realmente muy positivas, porque significan que la comunidad de Spring puede elegir qué "sabor" de solución de productividad prefiere. Si bien estas diferencias iniciales en torno a la elección del idioma y la operación en tiempo de ejecución/desarrollo son evidentes de inmediato, la elección de Grails o Roo también se extiende a consideraciones más sutiles, como las tecnologías predeterminadas utilizadas, el modelo de interacción del usuario, el soporte de IDE, las dependencias, los estándares, la hoja de ruta, las extensiones, etc. Casi todas estas diferencias son una consecuencia natural de perseguir a un mejor de su raza solución para un estilo de lenguaje particular.

Nuestro mejor consejo es considerar ambas soluciones. Cada uno tiene sus puntos dulces, pero hay diferencias entre los dos que harán que su experiencia general sea mejor con una tecnología u otra en un contexto dado. Ambas guías de referencia detallan los beneficios respectivos de cada solución. Por supuesto, recuerde que la inversión de tiempo es mínima en probar ambos. En 10 minutos se puede construir un proyecto en Roo o Grails, así que dar ellos un intento y ver lo que se siente más natural para usted dado su fondo específico y las necesidades del proyecto.

 88
Author: Ben Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-08 21:22:36

La principal diferencia es que Roo es un framework Java puro, mientras que Grails aprovecha Groovy y Java. Ambos se basan en las bibliotecas principales de Spring y hacen uso de las populares bibliotecas de código abierto de Java.

Esta pregunta se hizo cuando se anunció Roo y Graeme Rocher (Grails lead) dice que ambos frameworks tienen un lugar dentro de Spring y son compatibles por igual.

En todo caso, creo que Grails tiene un futuro más brillante que Roo. Me encanta desarrollar con él y no veo cualquier inconveniente de que no sea Java puro.
 22
Author: leebutts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-11 03:38:09

Grails y Roo son muy diferentes. La primera diferencia importante es el idioma utilizado. Si bien puede escribir código Groovy como el código Java tradicional, aún necesita las dependencias Groovy para ejecutar aplicaciones Grails. Para ser lo más productivo posible en Grails, también debe tener un conocimiento de las características de Groovy que actualmente no forman parte de Java, como los cierres. Otra diferencia es la filosofía que los frameworks toman para generar código. Grails genera muchos métodos en tiempo de ejecución mientras que Roo los genera a petición durante el proceso de desarrollo. Roo no tiene magia detrás de escena para el uso de la programación orientada a aspectos, y puede ver todo el código que genera Roo. Por ejemplo, en Roo debe usar un comando para que genere métodos de finder dinámico como findByBook() y luego vea el código generado en el .archivos aj. En Grails, el método findByBook () se crea en tiempo de ejecución y no puedes ver el código generado. Roo también le permite dejar de usar el framework si elige continuar con una aplicación en ejecución fusionando todo el código generado en normal .archivos java. Entonces no tiene dependencias en ninguna biblioteca Roo ni en tiempo de ejecución ni en tiempo de diseño. Si decides que no te gustan los Grails, no hay manera de dejar de usar el framework mientras continúas teniendo una aplicación en funcionamiento.

 19
Author: Jared,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 13:20:36

IMO los dos no son muy similares. Aunque hay similitudes, las siguientes son diferencias significativas:

  • Roo utiliza " Stock-Estándar Java", Grails se basa en Groovy
  • Grails es un marco web, Roo no es

Roo es muy similar al sistema de línea de comandos de Grails (por ejemplo, el create-app, create-domain-class, test-app escriba los comandos que se encuentran en Grails). No me sorprendería ver alguna "polinización cruzada" entre esta parte del marco de Grails y Roo.

 9
Author: Heinrich Filter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 10:28:58

Ben Alex de SpringSource habla sobre Roo en esta entrevista y se le pregunta sobre Grails vs Roo. La principal diferencia además de usar diferentes lenguajes (Groovy vs Java como otros mencionaron) es que Roo es principalmente una herramienta de tiempo de desarrollo y Grails está más involucrado en el tiempo de ejecución.

 4
Author: Csaba_H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 10:12:43

En realidad no son tan similares. Roo hace su magia en tiempo de compilación, donde Grails lo hace en tiempo de ejecución. Debido a que Roo projects no recibe ningún impacto de rendimiento en tiempo de ejecución.

No puedo ver cómo podrían fusionarse como Grails está construido sobre Groovy y Roo en Java.

 1
Author: Kimble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 11:59:24

Vi algunos comentarios en las listas de correo de Grails que indicaban que los autores creían que Roo existe solo como un escalón hacia Grails! Sin embargo, personalmente estoy considerando un posible cambio de Grails a Roo. Creo que la principal diferencia es entre lenguajes dinámicos y estáticos - para mí esto es enorme. Me encantan muchas características de Grails, pero prefiero el soporte IDE y la comprobación en tiempo de compilación de un lenguaje de tipo estático. Algunos otros sienten exactamente lo contrario, por lo tanto los caballos para curso. Dicho esto, static groovy está actualmente bajo un fuerte desarrollo, así que quién sabe lo que depara el futuro.

 1
Author: Fletch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-11 13:12:12

Teníamos un requisito en el que teníamos una aplicación en producción y se desarrolló en Primavera MVC y la velocidad de desarrollo de nuevas características era lenta. Tuvimos que explorar marcos alternativos como Grails y Roo. Personalmente pasé cerca de un mes explorando cuál era mejor.

Si quieres ver los detalles del análisis visita @ http://krishnasblog.com/2012/05/08/roo-vs-grails /

Exploramos las siguientes características en ambos y a continuación está nuestra hallazgo. El veredicto final no estamos seguros de que usaremos ninguno de los dos, todavía estamos explorando

 0
Author: Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 22:35:34