fbpx
Wikipedia

Apache Tapestry

Apache Tapestry es un framework para desarrollar aplicaciones web de código abierto desarrollado sobre el lenguaje Java basado en componentes. Tapestry fue creado por Howard Lewis Ship y adoptado por Apache Software Foundation como proyecto superior en 2006.

Apache Tapestry
Información general
Tipo de programa framework para aplicaciónes móviles web
Autor Howard Lewis Ship
Desarrollador Apache Software Foundation
Lanzamiento inicial 2000
Licencia Apache License 2.0
Estado actual Activo
Información técnica
Programado en Java
Versiones
Última versión estable 5.6.1 19 de septiembre de 2020 (10 meses y 17 días)
Archivos legibles
Apache Tapestry Markup Language document
Archivos editables
Apache Tapestry Markup Language document
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores

Tapestry hace énfasis en la simplicidad, fácilidad de uso y la productividad para el desarrollador. Se adhiere al paradigma convención sobre configuración eliminando prácticamente todo el uso de XML. Usa una aproximación modular al desarrollo web, poseyendo una fuerte unión entre el componente en la página web y su correspondiente clase Java. La arquitectura basada en componentes toma prestadas varias ideas de WebObjects. Emplea el Modelo–vista–controlador y una arquitectura push.

Tapestry se basa en el estándar Java Servlet API, funcionando sobre cualquier contenedor de servlets o contenedor de aplicaciones. Asume responsabilidades clave como la construcción y envío de URLs, almacenamiento del estado persistente en el cliente o en el servidor, validación de entradas de usuario, localización/internacionalización e informe de excepciones. Las aplicaciones se describen en términos de objetos, métodos y propiedades y no en términos de URLs y parámetros como en los frameworks basados en acciones.

Características destacadas

Recarga dinámica de clases
Tapestry monitoriza el sistema de archivos buscando cambios en las clases Java de las páginas, componentes e implementaciones de servicios, plantillas HTML y archivos properties de los componentes. Cuando hay algún cambio la recarga dinámica aplica los nuevos archivos sin requerir un reinicio de la aplicación. Esto proporciona un ciclo corto de codificar-guardar-ver mediante el que se reclama una productividad mejorada enormemente para el desarrollador.
Basado en componentes
Las páginas pueden ser construidas con pequeños componentes anidables que pueden ser reutilizados múltiples veces en una misma página, en diferentes páginas del mismo proyecto o en diferentes proyectos mediante librerías de componentes. Cada uno posee una clase de componente y opcionalmente una plantilla. Construir nuevos componentes es trivial.
Convención sobre configuración
Tapestry usa convenciones de nombres y anotaciones en vez de XML para configurar la aplicación.
Mínimo uso de HttpSession
Tapestry está diseñado para hacer un uso mínimo de HttpSession para ser altamente eficiente en un entorno cluster con sesiones replicadas.
Post/Redirect/Get
La mayoría de los envíos de peticiones siguen el patrón Post/Redirect/Get (PRG) que reduce los problemas de enviar múltiples veces un formulario y mostrando siempre URLs amigables y agregables a los marcadores, haciendo que los botones atrás y refrescar de los navegadores funcionen correctamente.
Inversión de control (IoC)
posee una capa propia de Inversión de control disponible para los servicios de la aplicación haciendo que muchos de los aspectos del comportamiento de Tapestry configurables y reemplazables. El contenedor de dependencias está específicamente diseñado para ser usado en Tapestry aunque puede ser usado por cualquier otro tipo de aplicación y fuera del ámbito web.
Informativo
Cuando se produce una excepción Tapestry presenta una página con un informe de error en el que se incluye mucha información para determinar la causa del error, incluyendo la traza de la excepción, líneas precisas de código y mostrando un extracto del código donde se ha producido la excepción. El informe de error se muestra también cuando se producen excepciones en peticiones Ajax.
Políglota
El lenguaje de programación empleado habitualmente para el código asociado a las páginas y componentes es Java pero se puede emplear cualquier otro lenguaje soportado por la JVM. Tapestry acepta cualquiera de ellos (Groovy, Scala, ...).
Modular, adaptable y extensible
Los servicios proporcionados por Tapestry pueden ser configurados para adaptarse a las necesidades de la aplicación o reemplazados por otras implementaciones, también pueden proporcionase nuevos servicios.

Principios

La documentación de Tapestry cita cuatro principios que gobiernan las decisiones de desarrollo para Tapestry 5 empezando desde la versión 5 en 2008.

  • Estructura estática, comportamiento dinámico: la estructura de las páginas y componentes es esencialmente estática no teniendo la necesidad de construir (y almacenar en memoria) árboles grandes de páginas y componentes.
  • API adaptativa: el framework está diseñado para que se adapte al código del desarrollador en vez de que el desarrollador se adapte al framework.
  • Diferenciación entre API pública e interna: permite a los desarrolladores no hacer uso de APIs internas del framework que pueden cambiar en un futuro de modo que posteriores actualizaciones a nuevas versiones sean más sencillas y sigan siendo compatibles.
  • Asegurar compatibilidad hacia atrás: los desarrolladores de Tapestry están comprometidos a asegurar la compatibilidad y que actualizar a siguientes versiones sea sencillo.

Ejemplo Hola mundo

Una aplicación mínima usando plantillas requiere solo tres archivos:

HolaMundo.tml
La plantilla (X)HTML para la página /holamundo. Las plantillas de Tapestry puede contener cualquier marcado (X)HTML bien formado.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"> <body> <p>Hola, ${usuario}</p> </body> </html> 
HolaMundo.java
La clase de la página está asociada con la plantilla. En este ejemplo simplemente proporciona una propiedad *usuario* que la plantilla puede acceder.
package org.example.demo.pages; /**  * La clase de la página (asociada con el archivo de plantilla del mismo nombre).  */ public class HolaMundo { /**  * Un getter ordinario.  */ public String getUsuario() { return "mundo"; } } 
web.xml
El archivo descriptor de despliegue de las aplicaciones web Java que instala Tapestry como un filtro de servlets.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Ejemplo de Tapestry</display-name> <context-param> <!-- Indica a Tapestry en que paquete buscar páginas, componentes, servicios y mixins --> <param-name>tapestry.app-package</param-name> <param-value>org.example.demo</param-value> </context-param> <filter> <!-- Define el filtro de Tapestry --> <filter-name>app</filter-name> <filter-class>org.apache.tapestry5.TapestryFilter</filter-class> </filter> <filter-mapping> <!-- Indica al contenedor de servlets que peticiones enviar al filtro de Tapestry --> <filter-name>app</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> 

Transformación de clases

Tapestry usa manipulación de bytecode para transformar las clases de las páginas y componentes en tiempo de ejecución. Esta aproximación permite que las páginas y componentes sean escritas como simples POJOs, con unas pocas convenciones de nombres y anotaciones Tapestry puede invocar la funcionalidad en tiempo de ejecución. A partir de la versión 5.3 usa una capa de manipulación de bytecode llamada Plastic que está basada en ObjectWeb ASM.

Soporte del lado del cliente

Desde la versión 5.4, Tapestry incluye una nueva capa de JavaScript que elimina la dependencia sobre Prototype permitiendo usar jQuery o cualquier otro framework JavaScript. Esta capa de abstracción permite que las operaciones Ajax sean ciudadanos de primera clase.

La versión 5.4 también incorpora el soporte para la carga de módulos de JavaScript usando RequireJS.

Relación con otros frameworks

De acuerdo con Howard Lewis Ship, Tapestry fue inicialmente concebido como un intento de implementar en Java algunos conceptos generales y aproximaciones presentes en WebObjects que en su momento estaba escrito en Objective-C y era de código cerrado.[1]

Apache Wicket fue desarrollado como una respuesta a la complejidad de las versiones iniciales de Tapestry de acuerdo a su creador Jonathan Locke.[2]

Facelets, la tecnología de presentación por defecto de JavaServer Faces está inspirada en versiones anteriores de Tapestry como un intento de disponer de "un framework como Tapestry pero como un estándar para la industria basado en JavaServer Faces".[3][4]

Historia

Versión Fecha Descripción
1.0 2000 Desarrollada por Howard Lewis Ship para uso propio.
2.0 2002-04 Primeramente disponible en SourceForge bajo una licencia GNU Lesser General Public License.
3.0 2004-04 La primera versión bajo Apache, como un subproyecto de Jakarta.
4.0 2006-01 Incluye soporte para anotaciones JDK 1.5, un nuevo subsistema de validación y un informe de error mejorado.
5.0 2008-12 Se reescribe prácticamente Tapestry 4, presentando un nuevo modelo de componentes basado en POJOs enfatizando convención sobre configuración y reemplanzando Hivemind con una nueva capa de inversión de control sin XML.
5.1 2009-04 Mejoras de rendimiento y uso de memoria, compresión de GZIP automática, agregación de JavaScript manteniendo compatibilidad con Tapestry 5.0.
5.2 2010-12 Se añade JSR 303 Bean Validation. Recarga de clases extendida a las implementaciones de los servicios. Se elimina el pool de páginas.
5.3 2011-11 Se añade soporte para HTML5, inyección de anotaciones JSR-330, mejoras de rendimiento y uso de memoria, nuevos componentes, cambio de manipulación de bytecode de JavaAssist a ASM.
5.3.1 - 5.3.7 2012-2013 Corrección de errores y mejoras.
5.3.8 2014-11 Se añade soporte para funcionar con Java 8.
5.4 2015-12 Varias mejoras en el lado cliente. Nueva capa de JavaScript agnóstica del framework pudiéndose usar jQuery, Prototype u otro. Se emplea RequireJS para la definición y uso de módulos JavaScript. Se incluye Twitter Bootstrap para los estilos. Además de numerosas correcciones de errores, actualización de dependencias, mejoras en la documentación y en diversas funcionalidades así como nuevas características que pueden consultarse en la lista completa de cambios.

Proyectos relacionados

  • Proyecto Tynamo que ofrece funcionalidades adicionales.
  • JumpStart tutorial Tapestry mediante ejemplos.

Véase también

Bibliografía

  • picodotdev (2014), PlugIn Tapestry: Desarrollo de aplicaciones y páginas web con Apache Tapestry, p. 289 .
  • Igor Drobiazko (2012), Igor Drobiazko, ed., , p. 482, archivado desde el original el 15 de diciembre de 2014, consultado el 31 de octubre de 2014 .
  • Alexander Kolesnikov (2008), Packt Publishing, ed., Tapestry 5: Building Web Applications: A step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework, p. 280, ISBN 1-84719-307-2 .

Notas

  1. . Archivado desde el original el 22 de enero de 2013. Consultado el 28 de enero de 2013. 

Enlaces externos

  • Página de inicio de Apache Tapestry
  • Documentación de Apache Tapestry
  • Ejemplos para iniciarse en Apache Tapestry
  • Proyecto Tynamo
  • Página personal de Howard Lewis Ship
  •   Datos: Q617093

apache, tapestry, framework, para, desarrollar, aplicaciones, código, abierto, desarrollado, sobre, lenguaje, java, basado, componentes, tapestry, creado, howard, lewis, ship, adoptado, apache, software, foundation, como, proyecto, superior, 2006, información,. Apache Tapestry es un framework para desarrollar aplicaciones web de codigo abierto desarrollado sobre el lenguaje Java basado en componentes Tapestry fue creado por Howard Lewis Ship y adoptado por Apache Software Foundation como proyecto superior en 2006 Apache TapestryInformacion generalTipo de programaframework para aplicaciones moviles webAutorHoward Lewis ShipDesarrolladorApache Software FoundationLanzamiento inicial2000LicenciaApache License 2 0Estado actualActivoInformacion tecnicaProgramado enJavaVersionesUltima version estable5 6 1 19 de septiembre de 2020 10 meses y 17 dias Archivos legiblesApache Tapestry Markup Language documentArchivos editablesApache Tapestry Markup Language documentEnlacesSitio web oficial Repositorio de codigo Seguimiento de errores editar datos en Wikidata Tapestry hace enfasis en la simplicidad facilidad de uso y la productividad para el desarrollador Se adhiere al paradigma convencion sobre configuracion eliminando practicamente todo el uso de XML Usa una aproximacion modular al desarrollo web poseyendo una fuerte union entre el componente en la pagina web y su correspondiente clase Java La arquitectura basada en componentes toma prestadas varias ideas de WebObjects Emplea el Modelo vista controlador y una arquitectura push Tapestry se basa en el estandar Java Servlet API funcionando sobre cualquier contenedor de servlets o contenedor de aplicaciones Asume responsabilidades clave como la construccion y envio de URLs almacenamiento del estado persistente en el cliente o en el servidor validacion de entradas de usuario localizacion internacionalizacion e informe de excepciones Las aplicaciones se describen en terminos de objetos metodos y propiedades y no en terminos de URLs y parametros como en los frameworks basados en acciones Indice 1 Caracteristicas destacadas 2 Principios 3 Ejemplo Hola mundo 4 Transformacion de clases 5 Soporte del lado del cliente 6 Relacion con otros frameworks 7 Historia 8 Proyectos relacionados 9 Vease tambien 10 Bibliografia 11 Notas 12 Enlaces externosCaracteristicas destacadas EditarRecarga dinamica de clases Tapestry monitoriza el sistema de archivos buscando cambios en las clases Java de las paginas componentes e implementaciones de servicios plantillas HTML y archivos properties de los componentes Cuando hay algun cambio la recarga dinamica aplica los nuevos archivos sin requerir un reinicio de la aplicacion Esto proporciona un ciclo corto de codificar guardar ver mediante el que se reclama una productividad mejorada enormemente para el desarrollador Basado en componentes Las paginas pueden ser construidas con pequenos componentes anidables que pueden ser reutilizados multiples veces en una misma pagina en diferentes paginas del mismo proyecto o en diferentes proyectos mediante librerias de componentes Cada uno posee una clase de componente y opcionalmente una plantilla Construir nuevos componentes es trivial Convencion sobre configuracion Tapestry usa convenciones de nombres y anotaciones en vez de XML para configurar la aplicacion Minimo uso de HttpSession Tapestry esta disenado para hacer un uso minimo de HttpSession para ser altamente eficiente en un entorno cluster con sesiones replicadas Post Redirect Get La mayoria de los envios de peticiones siguen el patron Post Redirect Get PRG que reduce los problemas de enviar multiples veces un formulario y mostrando siempre URLs amigables y agregables a los marcadores haciendo que los botones atras y refrescar de los navegadores funcionen correctamente Inversion de control IoC posee una capa propia de Inversion de control disponible para los servicios de la aplicacion haciendo que muchos de los aspectos del comportamiento de Tapestry configurables y reemplazables El contenedor de dependencias esta especificamente disenado para ser usado en Tapestry aunque puede ser usado por cualquier otro tipo de aplicacion y fuera del ambito web Informativo Cuando se produce una excepcion Tapestry presenta una pagina con un informe de error en el que se incluye mucha informacion para determinar la causa del error incluyendo la traza de la excepcion lineas precisas de codigo y mostrando un extracto del codigo donde se ha producido la excepcion El informe de error se muestra tambien cuando se producen excepciones en peticiones Ajax Poliglota El lenguaje de programacion empleado habitualmente para el codigo asociado a las paginas y componentes es Java pero se puede emplear cualquier otro lenguaje soportado por la JVM Tapestry acepta cualquiera de ellos Groovy Scala Modular adaptable y extensible Los servicios proporcionados por Tapestry pueden ser configurados para adaptarse a las necesidades de la aplicacion o reemplazados por otras implementaciones tambien pueden proporcionase nuevos servicios Principios EditarLa documentacion de Tapestry cita cuatro principios que gobiernan las decisiones de desarrollo para Tapestry 5 empezando desde la version 5 en 2008 Estructura estatica comportamiento dinamico la estructura de las paginas y componentes es esencialmente estatica no teniendo la necesidad de construir y almacenar en memoria arboles grandes de paginas y componentes API adaptativa el framework esta disenado para que se adapte al codigo del desarrollador en vez de que el desarrollador se adapte al framework Diferenciacion entre API publica e interna permite a los desarrolladores no hacer uso de APIs internas del framework que pueden cambiar en un futuro de modo que posteriores actualizaciones a nuevas versiones sean mas sencillas y sigan siendo compatibles Asegurar compatibilidad hacia atras los desarrolladores de Tapestry estan comprometidos a asegurar la compatibilidad y que actualizar a siguientes versiones sea sencillo Ejemplo Hola mundo EditarUna aplicacion minima usando plantillas requiere solo tres archivos HolaMundo tml La plantilla X HTML para la pagina holamundo Las plantillas de Tapestry puede contener cualquier marcado X HTML bien formado lt DOCTYPE html gt lt html xmlns http www w3 org 1999 xhtml xmlns t http tapestry apache org schema tapestry 5 3 xsd gt lt body gt lt p gt Hola usuario lt p gt lt body gt lt html gt HolaMundo java La clase de la pagina esta asociada con la plantilla En este ejemplo simplemente proporciona una propiedad usuario que la plantilla puede acceder package org example demo pages La clase de la pagina asociada con el archivo de plantilla del mismo nombre public class HolaMundo Un getter ordinario public String getUsuario return mundo web xml El archivo descriptor de despliegue de las aplicaciones web Java que instala Tapestry como un filtro de servlets lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE web app PUBLIC Sun Microsystems Inc DTD Web Application 2 3 EN http java sun com dtd web app 2 3 dtd gt lt web app gt lt display name gt Ejemplo de Tapestry lt display name gt lt context param gt lt Indica a Tapestry en que paquete buscar paginas componentes servicios y mixins gt lt param name gt tapestry app package lt param name gt lt param value gt org example demo lt param value gt lt context param gt lt filter gt lt Define el filtro de Tapestry gt lt filter name gt app lt filter name gt lt filter class gt org apache tapestry5 TapestryFilter lt filter class gt lt filter gt lt filter mapping gt lt Indica al contenedor de servlets que peticiones enviar al filtro de Tapestry gt lt filter name gt app lt filter name gt lt url pattern gt lt url pattern gt lt filter mapping gt lt web app gt Transformacion de clases EditarTapestry usa manipulacion de bytecode para transformar las clases de las paginas y componentes en tiempo de ejecucion Esta aproximacion permite que las paginas y componentes sean escritas como simples POJOs con unas pocas convenciones de nombres y anotaciones Tapestry puede invocar la funcionalidad en tiempo de ejecucion A partir de la version 5 3 usa una capa de manipulacion de bytecode llamada Plastic que esta basada en ObjectWeb ASM Soporte del lado del cliente EditarDesde la version 5 4 Tapestry incluye una nueva capa de JavaScript que elimina la dependencia sobre Prototype permitiendo usar jQuery o cualquier otro framework JavaScript Esta capa de abstraccion permite que las operaciones Ajax sean ciudadanos de primera clase La version 5 4 tambien incorpora el soporte para la carga de modulos de JavaScript usando RequireJS Relacion con otros frameworks EditarDe acuerdo con Howard Lewis Ship Tapestry fue inicialmente concebido como un intento de implementar en Java algunos conceptos generales y aproximaciones presentes en WebObjects que en su momento estaba escrito en Objective C y era de codigo cerrado 1 Apache Wicket fue desarrollado como una respuesta a la complejidad de las versiones iniciales de Tapestry de acuerdo a su creador Jonathan Locke 2 Facelets la tecnologia de presentacion por defecto de JavaServer Faces esta inspirada en versiones anteriores de Tapestry como un intento de disponer de un framework como Tapestry pero como un estandar para la industria basado en JavaServer Faces 3 4 Historia EditarVersion Fecha Descripcion1 0 2000 Desarrollada por Howard Lewis Ship para uso propio 2 0 2002 04 Primeramente disponible en SourceForge bajo una licencia GNU Lesser General Public License 3 0 2004 04 La primera version bajo Apache como un subproyecto de Jakarta 4 0 2006 01 Incluye soporte para anotaciones JDK 1 5 un nuevo subsistema de validacion y un informe de error mejorado 5 0 2008 12 Se reescribe practicamente Tapestry 4 presentando un nuevo modelo de componentes basado en POJOs enfatizando convencion sobre configuracion y reemplanzando Hivemind con una nueva capa de inversion de control sin XML 5 1 2009 04 Mejoras de rendimiento y uso de memoria compresion de GZIP automatica agregacion de JavaScript manteniendo compatibilidad con Tapestry 5 0 5 2 2010 12 Se anade JSR 303 Bean Validation Recarga de clases extendida a las implementaciones de los servicios Se elimina el pool de paginas 5 3 2011 11 Se anade soporte para HTML5 inyeccion de anotaciones JSR 330 mejoras de rendimiento y uso de memoria nuevos componentes cambio de manipulacion de bytecode de JavaAssist a ASM 5 3 1 5 3 7 2012 2013 Correccion de errores y mejoras 5 3 8 2014 11 Se anade soporte para funcionar con Java 8 5 4 2015 12 Varias mejoras en el lado cliente Nueva capa de JavaScript agnostica del framework pudiendose usar jQuery Prototype u otro Se emplea RequireJS para la definicion y uso de modulos JavaScript Se incluye Twitter Bootstrap para los estilos Ademas de numerosas correcciones de errores actualizacion de dependencias mejoras en la documentacion y en diversas funcionalidades asi como nuevas caracteristicas que pueden consultarse en la lista completa de cambios Proyectos relacionados EditarProyecto Tynamo que ofrece funcionalidades adicionales JumpStart tutorial Tapestry mediante ejemplos Vease tambien EditarComparison of web application frameworks Java view technologies and frameworks Java Platform Enterprise EditionBibliografia Editarpicodotdev 2014 PlugIn Tapestry Desarrollo de aplicaciones y paginas web con Apache Tapestry p 289 Igor Drobiazko 2012 Igor Drobiazko ed Tapestry 5 Rapid web application development in Java p 482 archivado desde el original el 15 de diciembre de 2014 consultado el 31 de octubre de 2014 Alexander Kolesnikov 2008 Packt Publishing ed Tapestry 5 Building Web Applications A step by step guide to Java Web development with the developer friendly Apache Tapestry framework p 280 ISBN 1 84719 307 2 Notas Editar Copia archivada Archivado desde el original el 22 de enero de 2013 Consultado el 28 de enero de 2013 https web archive org web 20040909074534 http www theserverside com news thread tss thread id 28162 https web archive org web 20070706220453 https facelets dev java net https web archive org web 20130113100928 http www jsfcentral com articles facelets 1 htmlEnlaces externos EditarPagina de inicio de Apache Tapestry Documentacion de Apache Tapestry Ejemplos para iniciarse en Apache Tapestry Proyecto Tynamo Pagina personal de Howard Lewis Ship Datos Q617093Obtenido de https es wikipedia org w index php title Apache Tapestry amp oldid 130735221, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos