Play framework

Play Framework

Hoy, tenemos algo para los desarrolladores: Play! Una plataforma de manejo super sencillo que nos permite crear aplicaciones web y móviles.

Vamos a repasar, entonces, los puntos más interesantes de este framework. Play! es un proyecto OpenSource desarrollado y liderado por Guillaume Bort. Sus comienzos datan del 2007 y recientemente salió la versión 2.1.3; como adicional cuenta con el respaldo de la empresa Typesafe que ofrece soporte para proyectos en esta plataforma.

Desde el punto de vista estrictamente técnico se trata de un framework MVC  inspirado en Ruby on Rails y Django, tiene soporte para Java y Scala.

 

Cómo “armar” un sitio en 10 minutos
 

 

¿Quién usa esta plataforma?

Actualmente, está siendo utilizado por LinkedIn, el sitio de The GuardianCoursera y otras tantas webs más. No es el nuevo PHP pero se está poniendo de moda, aunque “moda” cuando hablamos de tecnología es algo muy relativo. Si quieren estadísticas actuales sobre su uso pueden verlas acá.

¿Qué novedades trae?

Profundicemos y pongamosnos más técnicos:

- Stateless
Play es RESTful, no guarda información de la sesión en el server. Esto en la práctica ahorra muchísima memoria y procesador, lo que significa una mayor cantidad de requests por segundo.

- Session & Flash
Obviamente, a veces necesitamos mantener información de la sesión (como datos de usuario, un hash, etc.), para esto Play! utiliza dos técnicas. Una, se llama “Flash” y otra “Session”; ambas se guardan en cookies. En el caso de “Session”, la cookie se manda en cada request y está firmada para que no pueda modificarse ; mientras que en “Flash” la información se mantiene solo en un request.

- Soporte de JUnit y Selenium
Esto es para los fanáticos del testing automatizado. Lo dejamos ahí, para no irnos por las ramas.

- SBT
El manejo de dependencias se hace con SBT. Todas las dependencias de MvnRepository están en formato SBT, aunque también pueden traer dependencias de SVN. SBT tiene plugins de Hudson y Jenkins lo que permite hacer integración continua.

- Akka
Akka es una joyita. Los que trabajan en Java están acostumbrados a los Threads, Tasks y los más aventurados a ExecutorService y ForkJoin (que apareció “recientemente”). Esto es muy complejo, especialmente cuando laburamos con entornos WEB, ya que el consumo de un thread puede afectar a los request entrantes.  Akka, en vez de lo anterior, hace una abstracción reduciendo todo a un modelo de “actores” que se pasan mensajes. Esto permite extender sus clases, lo que le da gran flexibilidad.

- NonBlocking IO
Respecto del problema que mencionabamos antes (tareas que bloquean requests), al Play! estar montado sobre Akka tenemos la posibilidad de generar varias colas de tareas y darles prioridad a las mismas para que manejen los requests. Además, posee muchísimas herramientas para soportar request asincrónicos. La idea es mandar un request corto y devolver una respuesta rápida y si hay alguna tarea compleja manejarla con actores de Akka. Pero en el caso de tener que hacer una respuesta compleja, Play! permite manejar el concepto de Promises, lo cual nos deja crear respuestas que van tardar en volver al cliente pero sin bloquear al mismo ni el server.

- Templates en Scala
A diferencia de los trabajos en Frameworks Web, con templates HTML y motores (en .NET está Razor y los .ASPX, en Java tenemos JSP, Struts, JSF, y demás), en Play! se utiliza Scala. La sintaxis es muy sencilla y muy similar al resto. Se generan archivos con extensión .scala.html y las inclusiones de un template dentro de otro se puede hacer fácilmente.

- ORM – Ebean
Play! utiliza dos ORM. Uno para Java Ebean (Anorm para Scala), aunque se pueden utilizar otros. El que más documentación posee es Ebean, simplemente tienen que poner los tags JPA en sus atributos y definir la base en la configuración. Por default utiliza una base en memoria, la genera automáticamente y si hay un cambio la vuelve a actualizar. Es muy práctico y permite resolver temas de persistencia al toque. Hay muchos ejemplos que con bases relacionales y bases NoSql, les recomiendo probar con Neo4J que es muy interesante.

¿Qué resuelve?

• Creación rápida de sitios web.
• Rápida curva de aprendizaje.
• Buen manejo de persistencia.
• Excelente performance.
• Sencilla instalación.
• Buena integración con ideas.
• Excelente escalabilidad gracias a Akka.

Esto es todo por hoy, les recomiendo jugar un poco con Play!, seguro van encontrar muchas cosas interesantes.

Dejá tu comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>