¿Qué es Play 2 Framework?

Play! 2 es un framework para el desarrollo rápido de aplicaciones web con Java y Scala, está basado en el patrón MVC (Modelo, Vista, Controlador), agregando la filosofía de Convención sobre Configuración. Play! explota el modelo de desarrollo guiado por pruebas integrando tests unitarios con JUnit y pruebas de integración con Selenium. Algunas de sus características son:

Poderoso Sistema de Builds

Play! utiliza sbt como sistema de builds. Tiene una serie de scripts predefinidos que nos ayudan a comenzar con nuestra aplicación(play new, run o start), además de un fichero con script pre configurados que será suficiente para la mayor parte de los desarrollos, pero que permite un modificación fácil de los scripts de build, deployed, etc.

Stateless

A diferencia de otros Framework de desarrollo, Play! no utiliza Servlets para el manejo de peticiones, esto implica que no existe una sesión para cada una de las peticiones. Para tener una funcionalidad similar a las sesiones tendremos que utilizar el almacenamiento en el navegador a través de cookies o localStorage.

Esto permite una mejor escalabilidad horizontal de las aplicaciones. Cuando llega una petición a la aplicación el balanceador podrá enviarla a cualquier nodo, sin importarnos en cual se ha servido la petición anterior. No se necesita replicar el estado.

Basado en Eventos

Actualmente existen dos tendencias en el desarrollo de frameworks MVC:

  • Threads: Servlets, Ruby on Rails, Django, PHP
  • Eventos: Play, Node.js, Twisted

Cuando trabajamos con servidores basados en threads, se dedica un thread a cada una de las peticiones, y realiza toda el procesamiento de la petición hasta que es enviada la respuesta. En cambio, cuando trabajamos con servidores basados en eventos se utiliza un thread por cada núcleo de la CPU. Play! utiliza Jboss Netty y Akka para permitir la programación orientada a eventos.

En la programación orientada a eventos, todas las peticiones de I/O correrán en paralelo por defecto y “execute this code later” es uno de los principales conceptos.

Peticiones Asincronas

Cuando trabajamos con peticiones asíncronas, el servidor crea un thread y envía la petición al controlador adecuado, el cual ejecuta el código necesario. Cuando el controlador tiene que realizar algún tipo de I/O el thread se queda bloqueado hasta que la operación ha finalizado y devuelve los resultados al controlador, el cual envía la respuesta y a continuación el servidor libera el thread.

Play! utiliza eventos para evitar el bloqueo de los threads, de esta forma todas la peticiones de I/O son asíncronas, así en lugar de esperar, el thread puede continuar procesando otras peticiones, y sólo volverá al actual thread cuando la petición de I/O haya finalizado. Esto permite la realización de muchas llamadas concurrentes sin tener esperas como ocurre con los threads.

Base de Datos

Play! permite la integración con fuentes de datos heterogéneas, tanto SQL como NoSQL. Play! hace muy sencillo utilizar un driver de cualquier fuente de datos, ORM, o cualquier otra librería de acceso a base de datos. Ofrece un conjunto mínimos de funciones auxiliares para manejar los casos de uso más comunes, como la administración de las conexiones. Play! trae incluido soporte para bases de datos relaciones a través de librerías como Ebean (Java), JPA y Anorm (Scala).

Estas son algunas de principales características de Play!. En siguientes artículos intentaré ir profundizando en las características esenciales de Play!.

Enlaces |
http://www.playframework.com/