Seam

RECU-0094 (Recurso Ficha Técnica)

Descripción

JBoss Seam es un framework desarrollado por JBoss, una división de Red Hat. Actualmente el encargado dejefe del desarrollo es Gavin King, también autor del framework para mapeo objeto relacional Hibernate. Lo cual facilita de forma significativa la orientación del framework para mejorar la relación con soluciones ORM.

Seam, integra de forma sencilla a Enterprise JavaBeans EJB3 y JavaServerFaces JSF. Se puede acceder a cualquier componente EJB desde la capa de presentación refiriéndote a él mediante su nombre de componente Seam.

Seam introduce el concepto de contextos. Cada componente de Seam existe dentro de un contexto. El contexto conversacional por ejemplo captura todas las acciones del usuario hasta que éste sale del sistema o cierra el navegador, inclusive puede llevar un control de múltiples pestañas y mantiene un comportamiento consistente cuando se usa el botón de regresar de el navegador.

Ofrece un generador automático de aplicaciones, Seam-gen, que permite generar el esqueleto de un CRUD funcional que permita altas, bajas cambio y modificaciones a partir de una base de datos existente. El desarrollo WYSIWYG es facilitado a través del uso de las JBoss Tools, que es un conjunto de plug-ins diseñados para el entorno integrado de desarrollo Eclipse. Seam puede ser integrado con las bibliotecas de componentes JSF JBoss RichFaces o con ICEsoft ICEFaces. Ambas bibliotecas poseen soporte para AJAX.

Ventajas e inconvenientes

El uso de Seam es recomendable por las siguientes ventajas:

  • Facilita la integración con JSF JSF, en su especificación 1.x, está fuertemente ligado a XML, Seam reemplaza la configuración XML con unas cuantas anotaciones, reduciendo el código y haciendo que el programador sea más productivo. Seam extiende JSF con funcionalidades extra como operaciones multiventanas y administración del espacio de trabajo, validación basada en el modelo, flujo de páginas basado en jBPM, internacionalización y fragmentación del cacheo de página.
  • Mejora el modelo de Persistencia Seam fue diseñado e implementado por las mismas personas que crearon Hibernate, las mismas personas que acuñaron el termino de contexto de persistencia. El modelo de conversación de Seam resuelve los problemas de programación referentes a la persistencia causados por las arquitectura de aplicaciones no orientadas a estados. Tanto el caso de que se utilice Hibernate o JPA, Seam hace sencillo y natural el uso de contextos extendidos de persistencia, y ayuda a evitar replicaciones innecesarias de estados cuando se use un contexto de persistencia extendida en un entorno en grupo.
  • Uso extendido de las anotaciones Seam es el primer modelo de programación que permite usar anotaciones Java, desde la capa de persistencia hasta el interfaz de usuario. Ya no resulta necesario entrar en conflictos con el uso de XML, ya que las tareas habituales de programación se simplifican mediante el uso de las anotaciones.
  • Integra EJB3 de forma sencilla Seam ofrece un soporte para la integración de EJB3 con JSF. LA relación entre ambos frameworks es mas sencilla mediante el uso de Seam y sus características de biyección que dan soporte a las necesidades de ambos.

Requisitos e incompatibilidades

En relación con Seam se han detectado lo siguientes requisitos agrupados por categoría:

  • jboss-seam.jar
  • jboss-seam-debug.jar
  • jboss-seam-ioc.jar (si se usa en conjunción con Spring)
  • jboss-seam-pdf.jar (para la edición de pdf's)
  • jboss-seam-ui.jar (para utilizar los controles seam JSF)
  • jsf-api.jar
  • jsf-impl.jar
  • jsf-facelets.jar
  • richfaces-api.jar
  • richfaces-impl.jar
  • richfaces-ui.jar

Versiones de Java

  • JDK 1.5.x
  • JDK 1.6.x

Contenedor de Servlet

  • Weblogic 10.3
  • Websphere 6.1.0.X
  • OC4J 11g TP
  • Servidores de aplicación
  • JBoss Application Server 4.2.X.
  • JBoss Application Server 5.x (recomendado)
  • JBoss Application Server 6.x
  • Tomcat 6.X
  • GlassFish v2 y superiores

Interacciones

Seam esta relacionado con varios frameworks, a continuación lo mas reseñable

  • Relación con EJB3 EJB 3.0 es un gran modelo de componentes para componentes de transacciones comerciales., siendo su principal característica la nueva API de Persistencia de Java (JPA). Pero el problema de las webs y de los frameworks de aplicaciones diseñados en Java antes de la salida de EJB 3.0 era la falta de soporte para el nuevo modelo de componentes, dejando al desarrollador escribir su propio código de integración, y en la mayoría de los casos forzándole a el uso de una arquitectura en capas que no estaba muy acorde con la aplicación que estaban desarrollando. Seam fue diseñado para usarse con EJB 3.0 y permite al usuario el utilizar el modelo de componentes en cualquier sitio. Desde que cualquier clase en una aplicación Seam puede ser un componente EJB, no es necesario introducir capas no deseadas simplemente para mantener felices a tus frameworks. Y, por supuesto, no es necesario escribir código para integrar los EJB 3.0 con el framework de la web del usuario, ya que Seam proporciona dicha integración. Hay que indicar que no es necesario el uso de EJB 3.0 para utilizar Seam, así que si el usuario está desarrollando en un entrono que no soporte EJB 3.0, Seam proporciona alternativas.
  • Relación con JSF Seam esta muy relacionado con JSF, ofrece integración de soluciones JSF basadas en AJax como RichFaces. Lo que facilita el uso de Ajax en las aplicaciones web con un motor para el manejo del estado y de la concurrencia.
  • Relación con Facelets Seam viene integrado por defecto con Facelets. Facelets es un sistema de plantillas para JSF. Permite definir la vista mediante xml en forma de árbol de manera que se pueden definir componentes como composición de otros componentes. Entre sus características destacar que soporta el lenguaje EL, composición a partir de diferentes archivos, decorators y reporte de errores indicando la etiqueta/linea precisa.