jueves, 31 de mayo de 2012

Apache Tapestry

Hoy traemos al blog de Fórum Técnico otro de los frameworks para programación en Java, en este caso de la conocida Fundación Apache.

Apache Tapestry es un framework Java de código abierto para la implementación de aplicaciones web mediante la arquitectura Modelo-Vista-Controlador (MVC). Fué creado en 1999 por Howard Lewis Ship, y posteriormente fue adoptado por la Fundación Apache. Actualmente se encuentra en la versión 5.

Se distribuye bajo la licencia Apache Software Licence 2.0.

Tapestry sigue el enfoque de desarrollo basado en componentes y orientado a eventos,frente al desarrollo basado en acciones que emplea por ejemplo Apache Struts.

Arquitectura

Apache Tapestry implementa el paradigma Modelo-Vista-Controlador (MVC) para la separación total de la lógica y la presentación a nivel de framework y también en sus componentes individuales. Su enfoque MVC es, por tanto, más fuerte que en otros frameworks. Muchos de los componentes principales se implementan en términos de interfaces públicas para dar a los desarrolladores una gran flexibilidad en el uso.





Tapestry trata de ocultar la API de los servlets a los desarrolladores. Incluye una línea precisa de informes de errores y plantillas HTML fáciles de usar. Las plantillas de Tapestry suelen ser archivos HTML, pero también pueden ser WML o XML.

Uso con otros lenguajes 

Es posible utilizar Tapestry con otros lenguajes, como Groovy y Scala, siempre que se puedan ejecutar en la máquina virtual Java. Esto nos da una gran versatilidad y es poco habitual en los frameworks.

En el caso de Groovy, además de compilar con groovyc lo único especial que se debe hacer es incluir en la aplicación la librería groovy-all-x.x.x.jar para que las clases groovy funcionen correctamente.

Ejemplo

Preparamos una clase Java denominada HolaMundo:

package pruebas.tapestry.helloWorld.components;
import org.apache.tapestry5.MarkupWriter;

public class HolaMundo {
   protected boolean beginRender(MarkupWriter writer) {
      writer.write("Hola mundo!");
   return false;
   }
}
Ahora sólo necesitamos insertar dicha clase en una plantilla hecha con Tapestry:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<head>
   <title>Hola mundo Tapestry !!!</title>
</head>
<body style="font-family: Verdana; font-size: 10px;">
   < b ><t:holaMundo/>< /b >
</body>
</html>