February 7th, 2011

¿Rapid Web Application Development? / Salen con fritas

Billy

Desde hace unos años ya que se observa la tendencia de muchos desarrolladores a gravitar hacia lenguajes como Ruby, Python y PHP que les ofrecen soluciones rápidas para el desarrollo de aplicaciones web.

En este contexto surgen nuevas tecnologías inspiradas en Ruby on Rails. Grails, Spring Roo y Play Framework. ¿Qué proponen?

Sigue el camino de ladrillos rojos

Ruby on Rails abrió un camino que no tardarían en seguir los demás lenguajes: un framework open-source, para aplicaciones web, orientado a mejorar la productividad y la felicidad del desarrollador. ¿Su lema? “Desarrollo web que no duela”. Un framework que sea divertido de usar. Un framework que evite toda configuración innecesaria, si ¿para qué? siempre se termina configurando más o menos lo mismo. Siguiendo los preceptos de convención sobre configuración deja sólo “lo divertido” en las manos del programador, y “lo tedioso” de la configuración puede evitarse aceptando la configuración por defecto que provee el framework.

La comunidad Java tardó en acusar el golpe, Ruby está dando vueltas desde hace ya más de cinco años, pero lentamente empezó a responder. Y así aparecieron varios frameworks del estilo, que poseen la misma premisa con la que se hicieron fuertes los lenguajes de cuarta generación en los noventas: dedicarse de lleno al desarrollo de software comercial, mejorando la productividad del desarrollador. Pero allá donde los lenguajes 4gl ponían el foco en abstraer al desarrollador de cuestiones de “bajo nivel”, estos frameworks lo que buscan es desligar al desarrollador de toda responsabilidad de configuración y que se ocupe directamente de lo jugoso, del modelo de negocio, pero siempre dentro de los confines de un lenguaje 3gl.

La última cruzada

Grails es un claro ejemplo de estos frameworks, inspirado hasta en el nombre por Ruby on Rails. Grails es un framework para groovy , un lenguaje dinámico que corre sobre la máquina virtual de Java, hecho por la gente de springsource. Grails se nos propone como un framework rápido, dinámico y robusto. “La búsqueda se acabó” prometen, en clara alusión a las cruzadas y la búsqueda del Santo Grial, y a la vez a nuestra búsqueda del framework que nos permita realizar una aplicación web en pocos minutos.

Salta pequeño canguro

Pero Grails todavía no era Java. Era Groovy. Y springsource, otra vez, nos propone una nueva solución: Spring Roo. ¿Qué es Roo? No es un framework ni un IDE, pero es algo en el medio. Spring Roo es una herramienta que nos promete la obtención rápida y fácil de resultados cuando desarrollamos aplicaciones web. Y lo más importante, el código es puro Java. “Haciendo a Java divertido” es su slogan, otra vez priorizando la felicidad del desarrollador. ¿Es que tan mal la pasábamos antes?

Roo nos permite entonces tener una aplicación web en minutos, en código Java, trabajando desde una consola interactiva con autocompletar y con opción de “hint”, en caso de que estemos perdidos acerca de qué hacer a continuación. Y por si esto fuera poco Roo nos ofrece un plan difícil de rechazar dado que en cualquier momento que no querramos usar más Roo podemos sacarlo por completo de nuestra aplicación siguiendo unos sencillos pasos y todo seguirá funcionando como antes.”No lock in” dicen ellos, “sin casarnos” diríamos nosotros.

En un principio Roo puede asustar, se crean muchos archivos por cada clase y hace un uso (casi diría un abuso) de aspectos. Hasta en algún punto diría que es imprescindible entender aspectos para manejarse con Roo, aunque en realidad no es tan así. Existe un IDE, basado en Eclipse, llamado SpringSource Tool Suite que se integra a la perfección con el uso de Roo y casi que nos hace olvidar de la cantidad de archivos y de aspectos. Lamentablemente el STS es un IDE que no se destaca por su velocidad y eso puede resultar frustrante.

Roo integra y soporta una gran cantidad de tecnologías, y esta lista crece día a día. Por ejemplo podemos destacar Google Web Toolkit, el Google App Engine y varios de los proyectos de Apache y Spring. ¿Acaso sea esta la principal fuerza de Spring Roo y la que lo lleve a distinguirse de las demás herramientas?

Abriendo la puerta para ir a JUGAR

También asoma desde el horizonte Play Framework, con un enfoque totalmente distinto, pero con el mismo objetivo. Este también nos permite escribir el código en Java (y proximamente en Scala) y olvidarnos de la tediosa “configuración inicial” de cada proyecto, pero Play no es sólo un framework de desarrollo. La fuerza de Play radica en que también es un application server, y uno hecho con la idea de desarrollar a la vez que se tienen la aplicación levantada. Play provee reemplazo instantáneo de código sin necesidad de bajar y volver a levantar la aplicación y muestra claramente los errores y el stack trace en el browser, indicando la línea del problema. De esta manera al trabajar con Play se evita el tiempo perdido de detectar un problema, bajar la aplicación, arreglarlo y volver a levantarla. Sin embargo Play tiene algunas “demandas” que causarán escozor en muchos desarrolladores Java tradicionales (por ejemplo: gran cantidad de métodos estáticos, atributos públicos). Una solución diferente para un mismo problema.

¿Y si algo no me gusta del framework?

¿Y si algo no me gusta qué hago? Cada framework tiene, obviamente, sus limitaciones. ¿Qué pasa si necesito tener una capa de servicios? ¿Y si el framework no lo recomienda pero yo realmente quiero usar DAO’s? La pregunta que deberíamos hacernos entonces es ¿qué concesiones estoy dispuesto a dar? Todos los frameworks nos permiten cambiar algo, pero no todo y acá es donde deberíamos pararnos para decidir si estamos dispuestos a ceder algo del control de la arquitectura de la aplicación con tal de ganar las ventajas que nos proveen estos frameworks. Como siempre, sólo depende del problema que tengamos por delante.

Share Button

2 comentarios a “¿Rapid Web Application Development? / Salen con fritas”

  1. Christian Marcusa says:

    Muy buen post!!

  2. opensas says:

    excelente post

    ya tuvieron oportunidad de desarrollar alguna aplicación con play?

Dejar un comentario