lunes, octubre 20, 2008

Las 5 cosas que más me gustan de grails

lunes, octubre 20, 2008 por Martín



Que desastre, este post llevaba 10 días como draft, pero bueno, que al final he sacado un rato para que vea la luz.

Durante los últimos meses he estado trabajando con Grails para un proyecto personal con unos amigos. La tecnología la elegimos poco después de empezar este año con el principal objetivo de aprender sobre algo de lo que se estaba hablando mucho y bien.

Empezamos nuestra andadura con algo que no estaba todavía en la versión 1.0 y estamos casi terminando a alturas de 1.0.4 y cerca de la 1.1, por lo que bueno, a pesar de que no me considero un experto en el tema ni mucho menos sí que creo que puedo expresar mi opinión personal con autoridad. Así que este post se lo dedicaré a las cinco cosas que más me gustan de Grails y un post futuro estará dedicado, por supuesto, a las cinco que menos me gustan.


  • Es muy fácil crear aplicaciones: Yo creo que esto es probablemente lo más pragmático de grails y se gana el primer puesto por ello. El ponerte en la línea de comandos y ejecutar grails create-app MiApp y tener rápidamente una aplicación web completa funcionando. El ejecutar otro par de comandos y tener tu modelo, vistas, controladores y servicios listos para utilizar hacen de Grails una herramienta muy poderosa, quizás la más poderosa en Java en estos momentos para la creación de prototipos y pruebas de concepto rápidas ya que sin exagerar nada en 30 segundos tendrás tu aplicación ejecutándose en Jetty con Hibernate y Spring. QuickStart


  • Por fin crear tests de integración es sencillo: Esta es la funcionalidad que más me ha gustado, y es que con Grails ejecutar tests de integración es realmente sencillo. Tan sencillo como ejecutar grails create-integration-test y grails se encargará el solito de inyectar todos los servicios que utilicemos en el test así como la conexión a la base de datos. Por defecto grails utiliza una base de datos HSQLDB en memoria para ejecutar los tests y borra su contenido entre test. Más sobre testing aquí.


  • Integración con Spring: Para los que siempre hemos sido más javeros que otra cosa la integración con Spring es sin lugar a dudas el factor más decisivo a la hora de decantarse con grails. Grails permite acceso desde servicios y controladores a cualquier bean de Spring y lo contrario también se cumple, es decir, se puede acceder a cualquier servicio de grails desde Spring, aunque cierto es que es necesaria alguna triquiñuela como hacer que dichos servicios implementen una interfaz Java para salvar el gap entre el mundo estático y el dinámico. Aquí más sobre Spring y Grails.


  • La comunidad es muy activa:
  • Este Domingo por la mañana estaba echándole un vistazo al correo y me di cuenta que había bastantes correos sin leer en la carpeta de Grails. Le fui a echar un vistazo y me fijé que en la última hora habían llegado como unos 10 o 15 correos nuevos. No creo que exista esta métrica para medir lo activas que son las comunidades, pero desde luego que el número de mensajes un domingo por la mañana llegue a los treinta o bien indica que la comunidad es activa o que los usuarios están o bien borrachos o bien muy aburridos. En el caso de Grails creo que es lo primero. Hay montones de mensajes cada día y es fácil el ver tus dudas resueltas en unas horas. En este enlace están los enlaces a las listas de correo.

  • Vistas y controladores: Las vistas y controladores son probablemente la parte que más me gusta de Grails. Nada nuevo por aquí ya que todos los conceptos vienen de Rails que ya ha demostrado de sobra su éxito como framework para desarrollo web. Lo sencillo y rápido que es crear y mapear todos estos componentes junto con los diferentes constructores que están disponibles para gestionar la request, hacer binding de parámetros, controlar la response, etc. etc. hacen que sea muy sencillo el crear páginas web, que al final es lo que interesa. El enlace correspondiente

    Los que conozcáis Grails os habréis dado cuenta de que he excluido los servicios, y es que personalmente yo hubiera preferido aquí una estrategia mucho más a lo Appcelerator en la que simplemente se invocasen endpoints proporcionados por Spring. Personalmente, prefiero mis servicios echos en Java que en Spring, así que para mi hubiese tenido más sentido una aproximación más de ese estilo, y a parte creo que sería más útil para el framework que sus desarrolladores se concentrasen en la pare de vistas, controladores, javascript, etc. que es donde hace un poco más agua Java y dejasen de lado los servicios, que ahí hay material de sobra que reutilizar.



Pues nada, en breve (espero) una lista con las cinco cosas que menos me gustan de Grails. O quizás sean más, que yo soy muy protestón ;)

comments

7 Respuestas a "Las 5 cosas que más me gustan de grails"
Joserra dijo...
0:06

La verdad que tengo ganas de echarle el diente a este tema, tiene buena pinta. ¿que tal es la integracion con aplicaciones we b existentes? ¿se podría ampliar nueva funcionalidad es en grails, mientras que lo otro no se migra?


Martín dijo...
0:15

Esa es una buena pregunta. Grails se despliega como .war en cualquier servidor de aplicaciones. Es decir que te puedes llevar el .war y desplegarlo en tu Tomcat.

Así que la respuesta sería que sí, aunque sólo ejecutándose como diferentes aplicaciones dentro del contenedor de servlets.

El intentar integrar todo en una aplicación, o incluso el "grailsilizar" una aplicación existente no creo que fuese muy recomendable.


Unknown dijo...
8:23

Casualmente estoy mirando grails para hacer unas cosillas. Que editor utilizas? Texmate, Eclipse, Netbeans, bloc de notas ;)? He estado mirando y lo más completo que he visto es el de InteliJ IDEA, pero es de pago.


dahernan dijo...
9:23

Yo añadiria entre los números 1 a GORM la cantidad de tiempo que ahorra es impresionante, no mas DAOs :D


Martín dijo...
9:51

@anllogui: Eclipse. Creo que el soporte es mejor en los otros IDEs de todas formas.

@dahernan: Tienes que hacer tu lista, que me gustaría leerla. No es que me haya olvidado de GORM si no más bien que no entra en mis cinco cosas preferidas, las razones van más en la línea de los problemas de tooling que tiene Groovy y Grails que otra cosa. Si no fuese Groovy... pero eso ya es pedir un imposible :)


Dani dijo...
11:42

Martín por llevarte la contraria :P, a mi GORM sí me gusta, quizás es que me estoy acostumbrando a tampoco tener un soporte de herramientas "espectacular" con rails XD.

Veo que GORM es una buenísima opción y mucho ahorro de trabajo para aplicaciones "típicas", otra cosa es que nuestro proyecto se salga de lo típico ;). Eso sí, sobre soporte de los IDEs a cosas como los finders dinámicos, estoy contigo, parece lejano.


Martín dijo...
13:02

Jejeje, por eso es mi lista, porque no esperaba concesiones :)

Para mi el razonamiento es muy sencillo. GORM no me ahorra demasiado con respecto a Spring+Hibernate. Como mucho 4 o 5 lineas por llamada, el coste de crearte el criteria vamos.

Si a cambio de eso, pierdo el soporte del IDE, pierdo la capacidad de depurar fácilmente, y encima casi tengo garantizado problemas entre sesiones y factories con cualquier otro "legacy" que utilice Hibernate en la misma VM, entonces para mi la elección es muy clara. Prefiero unas líneas más de código.

Pero bueno, como ya comentaba arriba, es más un problema de Groovy/Grails que de GORM en si mismo. Y como ya sugeria en el post, yo hubiese preferido que se olvidasen de clonar el backend de Ruby, que el de Java ya es suficientemente bueno, y que se dedicasen a otras cosas.