Ruby on Rails y Grails, cara a cara

Ya comenté que, al empezar a trabajar con Linking Paths, empezaría a utilizar Ruby on Rails y que pretendía hacer un cara a cara entre Ruby on Rails y Grails. Como podría ser un post muy largo y tampoco quiero ir dejándome cosas, la intención es hacerlo en una serie de posts tal y como vaya teniendo las ideas claras, espero tener tiempo y ganas para ir completándola :). El objetivo no es decir cuál es mejor, sino simplemente que se vean las características de cada uno. En este post se van a tratar características generales y algunos parecidos razonables entre los frameworks.

A primera vista:

Como mucha gente sabrá los dos son frameworks web full-stack que siguen el patrón MVC, siguen el principio DRY(Don't repeat yourself) y CoC(Convention over configuration). Lo primero que hay que decir es que Grails se basó en las ideas de RoR, incluso a Grails en un principio se le llamó Groovy on Rails pero los creadores de RoR pidieron que se le cambiara el nombre.

RoR está enteramente construido con Ruby. Mientras que Grails lo está con la combinación Java+Groovy usando frameworks y librerías muy conocidas por debajo(destacan Spring, Hibernate y Sitemesh).

Para empezar hay que destacar que, ambos frameworks, nos traen de serie un servidor/contenedor web y un servidor de bases de datos embebidos: RoR trae WEBrick y SQLite mientras que Grails Jetty y HSQLDB. De esta forma podemos trabajar en desarrollo sin preocuparnos de tener acceso o tener que instalar nada más.

Para la automatización de tareas repetitivas con RoR se usa Rake y con Grails Gant(basado en Apache Ant).

Como librería javascript, por defecto, las dos traen Prototype.

Manos a la obra:

Donde más parecido he encontrado ha sido en la capa más web. Con los dos se usan layouts para la decoración base de la página, para las vistas Grails usa GSP y RoR ERB, mientras que lo que en un sitio se llaman Taglibs en otro son Helpers. Existen diferencias de sintaxis y de cómo se hacen las cosas, pero las capacidades son muy parecidas.

Para el acceso a datos, en los dos se utiliza el patrón ActiveRecord a través de ORM's, RoR utiliza uno del mismo nombre que el patrón y Grails GORM(basado en Hibernate y vitaminado con el dinamismo de Groovy). De inicio puede dar la impresión de que son casi equivalentes, pero este tema creo que tiene miga para tratarlo en otro capítulo.

Herramientas/IDE's:

En este apartado, gana RoR sin discusión con el plugin de NetBeans o RadRails que tienen un soporte realmente bueno. Mientras que para Grails Jet Groovy de IDEA es el único con un soporte decente, el plugin de Eclipse todavía está lejos de ser bueno, y el de NetBeans está en desarrollo.

Aparte de esto, hay muchos editores que soportan sintaxis ruby, mientras que soporte a groovy todavía es muy difícil encontrar

Algunas conclusiones:

A nivel de madurez, se le nota mucho más maduro a RoR. Empiezan a verse bastantes aplicaciones en producción, tiene más documentación, más plugins y una comunidad mayor. Aunque hay algo donde creo que destaca Grails, es en cómo está organizada la documentación de referencia, tanto para empezar de cero como para buscar algo en concreto.

Para un programador acostumbrado a Java, la curva de aprendizaje de Grails es más baja, puedes empezar a trabajar de una forma más javera e ir introduciendo/aprendiendo la forma más ¿grooviera?, además de poder utilizar cualquier librería java.