Buscar
Social
Ofertas laborales ES
« Google realiza un tercer asalto al mundo de la televisión: Chromecast (y anuncia Android 4.3) | Main | Evento de Lanzamiento Java EE 7 - Cali JUG »
miércoles
jul242013

Libro sobre desarrollo de aplicaciones con Apache Tapestry

Recientemente he publicado PlugIn Tapestry, un libro acerca del desarrollo de  aplicaciones web en el lenguaje Java y con el framework Apache Tapestry.

PlugIn Tapestry

Apache Tapestry es un framework orientado a componentes para crear aplicaciones web rápidas, dinámicas, robustas y altamente escalables en la plataforma Java. Al basarse en componentes es distinto de los muchos basados en acciones similares en esencia a Struts que podemos encontrar en la plataforma Java como SpringMVC, Grails y Play! y también de los muchos otros en los que la principal diferencia es el lenguaje como Django (Python), Symfony (PHP), .NET MVC (C#) o Ruby On Rails (Ruby). 

Incluyendo la descripción de las características del framework el libro trata la mayoría de aspectos que puede necesitar una aplicación o página web, entre ellos:

  • Introducción, principios y características
  • Inicio rápido
  • Páginas y componentes
  • Contenedor de dependencias (IoC)
  • Assets (imágenes, estilos, javascript) y módulos RequireJS
  • Formularios
  • Internacionalización (i18n) y localización (i10n)
  • Persistencia web
  • Persistencia en bases de datos
  • Ajax
  • Seguridad (autenticación, autorización, XSS, Inyección SQL)
  • Librerías de componentes
  • Pruebas unitarias, de integración y funcionales (JUnit/Mockito, Spock, Geb)
  • Y algunas cosas más

El libro está basado en la siguiente versión de Tapestry, la 5.4, que actualmente está en estado alpha (aunque la mayoría servirá para la versión final y para la versión 5.3 actual). Esta versión tiene como principal novedad la parte cliente de las aplicaciones con la inclusión de RequireJS y la definición de los archivos Javascript mediante módulos. También incorpora una capa de abstracción que permite usar cualquier librería como apoyo a la funcionalidad que necesita proporcionar ya sea Prototype, jQuery, cualquier otra que prefiramos o nueva que se desarrolle en un futuro.

Además del libro he desarrollado una pequeña aplicación (disponible en mi repositorio de GitHub) con unos pocos ejemplos que puedes probar en tu equipo sin necesidad de instalar nada previamente, salvo Git y el JDK. Más de 200 páginas de documentación que permitirán al lector descubrir mucha de la magia que puede ofrecer este framework. También en mi blog puedes encontrar varias entradas sobre muchos de los temas tratados de forma individual y que he utilizado para escribir el libro.

Puedes descargarlo desde la página que he preparado para ello de forma totalmente libre y al inmejorable precio de 0,00€ impuestos incluidos. Tienes mi permiso (es más, animo a ello) para compartirlo, distribuirlo en redes P2P, subirlo a cualquier página web o «piratearlo» cuantas veces quieras, siempre que respetes la licencia Creative Commons bajo la cual lo he publicado.

Algunas características destacadas de Apache Tapestry son:

Java
Normalmente se usa el lenguaje Java con lo que el compilador y el asistente de código de tu IDE te ayudarán.

Políglota
Si prefieres puedes utilizar Groovy, Scala o cualquier otro lenguaje soportado por la JVM.

Productivo
La recarga de clases en caliente evitará que tengas que reiniciar el servidor para ver tus cambios aplicados. Simplemente actualiza el navegador.

Rápido
El framework está programado en Java sin hacer uso de reflection. Incorpora varias optimizaciones que harán tu aplicación más eficiente sin trabajo por tu parte como compresión gzip, minificación y agregación css/javascript, cacheo agresivo en el cliente de assets, supresión de espacios en blanco innecesarios, ...

Basado en componentes
Los componentes son piezas autónomas y resusables de código. Para usar uno simplemente necesitarás conocer sus parámetros todo lo demás como archivos javascript, hojas de estilo y mensajes localizados son proporcionados por el componente. Los componentes pueden lanzar eventos y diferentes contenedores comportarse de diferente forma ante el mismo evento.

Informe de error avanzado
El informe te proporciona mucha más información que simplemente la traza de la excepción, verás que se estaba haciendo, que fué mal y como coregirlo. Con toda esta información solucionar las excepciones será mucho más rápido y fácil. El informe de error también es presentado en caso de errores en las peticiones AJAX.

Testable
Puedes probar los componentes de forma unitaria, el html generado o hacer pruebas de integración y funcionales. Los componentes son POJOs que no necesitan heredar ni implementar ninguna clase del framework. Podrás utilizar la herramienta que desees JUnit/Mockito, Spock, Geb, ...

Extensible, adaptable y modular
Gracias al contenedor de dependencias y a que los servicios están programados en base a interfaces puedes definir una nueva implemetación que modifique el comportamiento del framework. Todo servicio en el contenedor de dependencias puede ser redefinido, la mayoría de las cosas son servicios. Exiten módulos para Hibernate, Apache Shiro, Quartz, ... y si no existe puedes usar cualquier librería como RESTEasy, JasperReports, EHCache, JFreeChart, RestFB...

I18N y I10N
Puedes tener catálogos de mensajes por componente o de manera global en la aplicación. Los assets (imágenes, css, ...) tanbién son localizables y tener una plantilla con un contenido totalmente diferente según el idioma del usuario.

Convención sobre configuración
Las convenciones permiten evitar la configuración y los posibles errores que podemos cometer al realizarla. Pero más importante, hace que cualquier programador que conozca las convenciones sepa inmediatamente como están organizadas todas las cosas con lo que el tiempo de aprendizaje se reduce considerablemente.

Librerías de componentes
Los componentes comunes a varios proyectos pueden ser agregados en una librería de componentes (no es más que un archivo jar) para ser reutilizados. Nuevamente para usar los componentes solo tendrás que preocuparte de los parámetros, todos los recursos que necesiten serán extraídos de la librería. No necesitarás copiar y pegar archivos de un proyecto a otro, solo agregar una dependencia o jar a tu proyecto.

Según su principal desarrollador (Howard Lewis Ship, que obtuvo el premio Java Champion en 2010 [1] y Duke's Choice Award por el framework [2] en la categoría open source), y modestia aparte, piensa que Tapestry ha sido un líder desde una perspectiva puramente tecnológica. Estas son algunas cosas que cree que hizo primero y todavía piensa que lo hace mejor que nadie:

  • Componentes reusables (2001)
  • Informe de excepción detallado y útil (2001)
  • Instrumentación invisible en las plantillas (2002)
  • Informe de error con precisión de linea (2004)
  • Metaprogramación y modificación de bytecode (2005)
  • Recarga de clases en caliente (2006)
  • Informe de error completo para peticiones Ajax (2012)

¿Te ha parecido poco? ¡Descubre más en el libro!, usar el siguiente enlace para ¡descargarlo!,
¡Que lo disfrutéis!

Referencia:
Documentación sobre Apache Tapestry

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (5)

Disculpa mi ignorancia, pero que diferencias o similitudes existen entre Tapestry y Velocity?

Gracias por la aportación, descargare el libro.

julio 24, 2013 | Registered Commenterantoniovl

Velocity es un motor de plantillas cuyo objetivo es generar un texto como resultado. No lo he usado pero entiendo que es como muchos otros en los que básicamente dado por un lado una plantilla y por otro unos datos, combinados producen como resultado un texto (html, xml, txt, sql, ...cualquier otro archivo de texto que se te ocurra). Algunos frameworks web usan Velocity como su motor de plantillas para generar html. Similares a Velocity puede ser FreeMarker, Mustache, ...

Tapestry es un framework web, es decir, es una herramienta para crear aplicaciones web en Java. Tapestry usa su propio motor de plantillas con sus expresiones específicas para generar el html que se envía al navegador. Las plantillas son una pequeña pieza del framework, hay muchas otras funcionalidades de las que se encarga en una aplicación.

Velocity puede servir para generar cualquier texto, el motor de plantillas de Tapestry genera html, aunque Tapestry usando una librería especifica para ello podría devolver como resultado cualquier archivo de texto, podría usarse velocity mismamente.

Son dos cosas no equivalentes, que no sirven para lo mismo, y en una muy pequeña parte relacionadas por la funcionalidad.

Espero haberte aclarado un poco la pregunta. Gracias por descargar y leer el libro, espero que puedas quedarte con algunas idea de él.

julio 25, 2013 | Unregistered Commenterpicodotdev

El enlace se encuentra caído, podrías verificarlo y subirlo de nuevo.

Muchas gracias y un saludo.

julio 25, 2013 | Unregistered Commenterjuanant

He probado, no he visto que esté caído.

Página del libro: http://goo.gl/WFQgY
Enlace de descarga: http://goo.gl/56hrn

julio 25, 2013 | Unregistered Commenterpicodotdev

Genial, muchas gracias por esta contribución a la comunidad

julio 28, 2013 | Unregistered CommentercArmides

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>