Framework MVC para Java sin complicaciones
Miércoles, Noviembre 4th, 2009En la búsqueda incesante de frameworks más ligeros para programar en Java, encontré hace poco un proyecto llamado “Play” que ofrece una solución a la compleja plataforma Java Enterprise Edition. Se enfoca en la productividad de los desarrolladores y utiliza arquitectura REST. Según el sitio web, Play es una herramienta perfecta para el desarrollo ágil.
El objetivo del framework Play es facilitar el desarrollo de aplicaciones web sin tener que abandonar la plataforma Java. En teoría suena muy bien, habría que probarlo para saber si cumplen con lo que prometen.
Entre las características que anuncian se encuentran las siguientes:
Un framework Java sin tantas complicaciones
Play es un framework desarrollado completamente en Java y te permite continuar con tus herramientas de desarrollo y librerías favoritas. Si ya utilizas Java como plataforma de desarrollo entonces no tienes porque cambiarte a otro lenguaje, otro IDE o a otras librerías.
Corrige el error y presiona F5
La plataforma Java siempre ha sido famosa por su baja productividad para aplicaciones web, principalmente debido a la necesidad de compilar para poder realizar actualizaciones.
En Play esto ya no es necesario, ya que el mismo framework realiza la compilación directamente de los archivos .java y los carga en tiempo de ejecución directamente a la máquina virtual (JVM) sin necesidad de reiniciar el servidor web.
Con esta característica el ciclo de desarrollo se asemeja mucho a la programación en PHP o Ruby on rails en cuanto a agilidad. Incluso ya no necesitarías un IDE, ya podrías trabajar con cualquier editor de texto si quisieras.
Arquitectura MVC
Las arquitecturas que se basan en la sesión para guardar el estado hacen que sea fácil cierto tipo de programación, pero a la vez nos ocasionan varios problemas. Por eso la tendencia actual es eliminar cualquier capa de complejidad y apegarnos lo más posible al modelo de petición-respuesta HTTP.
Para esto, Play utiliza la misma arquitectura MVC que utilizan frameworks como Rails, Django o CakePHP; modelo que ha tenido mucho éxito y ha permitido facilitar la programación de sitios web dinámicos y la inclusión de Ajax en los mismos.
Mapeo de HTTP a código
A diferencia de otros frameworks que intentan abstraer el modelo HTTP del programador, en Play se le presenta al desarrollador todo el poder de accesar al protocolo HTTP y sus conceptos mediante el framework. Por ejemplo, para vincular un URI (identificador de recurso único) a un método de Java, sólamente es necesaria la siguiente línea.
GET /clientes/{id} Clientes.show
Plantillas eficientes
La idea detrás de JSP y el lenguaje de expresiones (EL) es muy buena. Pero el problema es que se complica con todas las configuraciones que hay que hacer y más aun con el uso de librerías de etiquetas (tag libraries). JSP tiene algunas limitantes, es por eso que los creadores del framework decidieron programador su propia librería de plantillas, inspirada por JSP pero sin sus limitantes.
Por ejemplo, en lugar de escribir esto:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<c:choose>
<c:when test="${correos.sinLeer != null && fn:size(correos.sinLeer)}">
Tienes ${fn:size(correos.sinLeer)} correo(s) sin leer!
</c:when>
<c:otherwise>
No tienes correos sin leer!
</c:otherwise>
</c:choose>Es mucho más fácil entender esto:
Tienes ${correos.sinLeer ?: 'no'} ${correos.sinLeer?.pluralize('correo')} !El lenguaje de expresiones utilizado por Play es Groovy que proporciona una sintaxis consistente con Java.
JPA mejorado
JPA es una de los mejores ORM que existen para Java. Play ofrece una integración muy sencilla y sin configuraciones con JPA.
Desarrollo orientado a pruebas (Test driven development)
Play trae un módulo integrado para ejecutar las pruebas. Puedes escribir todo tipo de pruebas, desde pruebas unitarias hasta pruebas de aceptación y ejecutarlas directamente con Selenium.
Completo ambiente de desarrollo
El framework Play cuenta con todo lo necesario para crear aplicaciones web modernas:
- Soporte a bases de datos relacionales mediante JDBC.
- Mapeo relacional-objetos (ORM) mediante Hibernate (con JPA).
- Soporte de cacheo integrado.
- Consumo de web services con JSON o XML.
- Soporte de autentificación distribuida con OpenID.
- API para manipulación de imágenes.
- Entre otros…
Si quieres probar el framework, puedes descargarlo desde su página web.
