miércoles, 22 de diciembre de 2010

GRAILS y su aporte al Desarrollo Rápido.



Hace una semana, mientras trabajaba, de pronto llegó a mi mente "Grails", claro había oído antes de él como un framework poderoso que apoya el Desarrollo Rapido de Aplicaciones, pero a decir verdad no me había adentrado en este tema a fondo así que sin pensarlo dos veces empecé a investigar y con muchas espectativas buenas, a continuación relato la crónica de mi encuentro con Grails.

Bien, al hablar de las nuevas tendencias que apoyan el desarrollo rápido, necesariamente implica hablar del abanico de posiblidades que tenemos en la actualidad, y si bien por un lado contamos con herramientas como AndroMDA (que me hace recordar mi tesis de la universidad -con MDA de fondo- cuando aún no se avisoraba con claridad el concepto del paradigma orientado a modelos), ahora tenemos opciones en extremo poderosas que en verdad han llevado al Desarrollo Rapido de Software a niveles inimagibles, y especificamente hablo de Grails y Ruby on Rails (llamado también "rails" o "RoR"); pero la pregunta básica ¿cómo saber por cual alternativa debo optar sin ambas tecnologías son tan buenas?. Bien en términos generales ambas van por el mismo rumbo, pero tómese en cuenta que ninguna tecnología es la mejor cual "golden hammer" pues es un hecho todo en la vida tiene ventajas y desventajas, y las tecnologias de desarrollo no son la excepcion a éste postulado, de ahí que las cosas buenas que puede tener una tecnología a veces es el punto flaco de sus competidoras y viceversa, asi que sin más, arranca el encuentro: "Grails vs Ruby on Rails" y el porqué Grails se ha convertido en el framework que elegí para estudiar en este momento:

1) Hablando de Madurez, Ruby on rails gana con creces, pero como todo en la vida tiene su compensación, Grails tiene un gigante por atrás que la respalda y hablo del proyecto SpringSource (ahora con VMWARE a la cabeza), así que defitnivamente Grails no es un niño abandonado a su suerte ;)
2) En cuanto a Documentación y respaldo de la comunidad ambas tecnologías cuentan con dicho soporte, y pese a que la gente de SpringSource en la actualiadad se está esforzado mucho por difundir información, a mi criterio Rails también va a la delantera en ésto, pero lo reitero SpringSource está haciendo un muy buen trabajo.
3) Mencionando la curva de aprendizaje, defintivamente la cantidad de tiempo destinado a aprender Grails será muchisimo menor que el que un programador promedio destinaría para aprender por ejemplo la plataforma Java, y ésto se aplica tanto para Grails como para Ruby on Rails. Claro ambas tecnologías lleva un lengaje dinámico por detrás que para el caso de Ruby on Rails es Ruby mientras que para Grails es Groovy (que es un lenguaje basado en Java) que a decir verdad a nivel de sintaxis no le veo marcadas diferencias, aunque se rumora que al ser un lenguaje dinámico podríamos incluso reusar nuestro código Java dentro de archivos de groovy (lo cual podría ser una clarísima ventaja para los que venimos del mundo Java pues el nivel de impacto de transición tecnológico sería mínimo ), para mayor referencia sugiero revisar lo siguiente:





4) Ya que en el punto tres mencioné a Java, necesariamente debo comentar que Grails es la alternativa por excelencia para los programadores que vienen del mundo Java, ya que otra ventaja que se añade a la lista es que este framework vincula tecnologías probadas y robustas que sin duda han sido parte básica de la vida de los programadores Java contemporáneos, y hablo de genialidades como: Spring (con Spring MVC, Security, etc) y Hibernate, lo cual sería una tremenda ventaja para la gente que empieza, ya que no tendrían que perder el tiempo aprendiendo nuevos frameworks ya que Grails permite que nuestra aplicación generada use tecnologías robustas y nosotros ni lo sentimos, ¿lindo ah? con Grails tenemos que enfocarnos en otros asuntos ya que él se encarga del resto ;) pero claro está que quien tiene camino recorrido ya en el mundo java tiene puntos ganados al aprender Grails. Así mismo, debo mencionar también conceptos propios de Grails y Ruby on Rails como: "Convención sobre Configuración" y "DRY" (No te repitas) con los cuales insisto, el programador se enfoca en aspectos como la lógica de su aplicación en sí, mas que en aspectos mecanicos como la creación de "deployment descriptors" (tan conocidos -y odiados a veces- en el mundo JEE).


5) Bien hemos mencionado que Grails genera aplicaciones en extremo robustas (pues liga frameworks muy muy fiables) pero en comparación con las aplicaciones Java web tradicionales, ¿Grails brinda todo ese arsenal de utilidades que tenemos con la plataforma java?...pues la respuesta es asombrosa, ya que casi todo lo que habíamos tenido a nuestro alcance para nuestras aplicaciones Java web tradicionales lo tenemos con Grails, por ejemplo: para la persistencia de datos contamos con GORM (una herramienta ORM propia de grails), i18n (internacionalización), seguridades (Spring Security), GSP (tecnología para vistas similar a JSP), soporte AJAX, proporciona un entorno de desarrollo orientado a pruebas (unitarias y de integración), y claro la capacidad de desplegar nuestra aplicación en un servidor web Java tradicional como Tomcat, Glassfish, JBoss, etc sin la necedidad se poseer un hosting especial.

6) Por ultimo, el soporte para Grails que tienen los IDE´s es muy amplia, claro, con Grails ni siquiera necesitaríamos un IDE pues éste brinda la opción de trabajar con consola de comandos, pero el uso de un IDE sin duda mejora la experiencia de desarrollo; yo en lo personal me incliné por Netbeans y quedé muy satisfecho, pero estoy seguro que Eclipse y otros IDE´s de igual manera brindarán una valiosa experiencia a quién decida sumergirse en el mundo Grails.


En Resumen.
Grails me ha sorprendido de sobre manera por ser una herramientas tan productiva que definitivamente nos permitirá hacer de una manera en extremo fiable y robusta en semanas lo que antes hacíamos en meses, así que para su próximo proyecto web que requiera tener características Java y que requiera un desarrollo rápido, Grails podría ser la mejor alternativa. Y aclaro, con ésto no quiero decir que Grails es mejor que Rails, sino que cada tecnología tiene su ambito de desenvolvimiento óptimo (de acuerdo a requerimientos arquitecturales) y así como hay momentos en los que Grails cabe prolijamente en el desarrollo de un proyecto, en otros tal vez sea un error usarlo pues dependiendo de ciertos requerimientos de un proyecto web Rails podría brindar una mejor solución que Grails; En lo personal me fascina trabajar con Rails así que en un próximo post analizaré las potencialidades de dicho framework mostrando sus beneficios.


NOTA:
Incluyo la captura de pantalla de una aplicacion CRUD simple que hice con Grails, rayos no exagero pero conseguí todo eso en menos de un minuto y créanlo o no más me demoré ingresando los datos de usuario que en el proceso en sí de crear la aplicación con Grails. Asombroso realmente. Vale la pena revisarlo.






No hay comentarios: