Este documento describe varios frameworks J2EE populares como JSF, Struts, Spring y JBoss Seam. Explica los conceptos básicos de cada uno y su arquitectura, ventajas y desventajas. Los frameworks J2EE ayudan a estructurar aplicaciones web siguiendo el patrón MVC y proveen bibliotecas reutilizables para simplificar el desarrollo.
2. Framework
Conceptos básicos
Framework: Conjunto estandarizado de conceptos,
prácticas y criterios para enfocar un tipo de
problemática particular, que sirve como referencia para
enfrentar y resolver nuevos problemas de índole
similar. (wikipedia)
Soporte de programas, bibliotecas y un lenguaje
interpretado, etc. para ayudar a desarrollar y unir los
diferentes componentes de un proyecto.
Estructura y una metodología de trabajo.
3. Framework
MVC - Modelo, vistas y controlador
Arquitectura que separa los datos de una aplicación,
la interfaz de usuario, y la lógica de control:
• Vista: JSPs, HTML, etc.
• Modelo: Sistema de Gestión de Base de Datos,
la lógica de negocio, etc.
• Controlador: Responsable de recibir los
eventos de entrada desde la vista.
4. Framework
Entorno de desarrollo integrado
IDE: Conjunto de herramientas de programación.
IDE: Es un entorno de programación:
• Un editor de texto.
• Un compilador/intérprete.
• Un depurador.
• Sistema de control de versiones.
• Ayuda para interfaces de usuario.
• Automatizar tareas: (ANT, Maven, etc.)
Ejemplos IDE: Eclipse, NetBeans, etc.
5. Framework
Frameworks J2EE destacados
JSF (Java Server Faces)
Struts (1.x y 2.x)
Spring
J BOSS SEAM
GWT (Google Web Toolkit)
Stripes, Tapestry, Wicket, Maverick, etc.
7. JSF
Conceptos básicos
J ava Server Faces: especificación desarrollada por
la J ava Community Process como J SR 127.
Tecnología y framework para aplicaciones web Java
que simplifica el desarrollo de interfaces de usuario.
Usa JavaServer Pages (JSP) para desplegar
páginas.
Puede ser integrado con las bibliotecas de
componentes JSF JBoss RichFaces o ICEFaces.
8. JSF
Incluye
APIs para componentes de una interfaz de usuario y
administrar su estado, manejar eventos, validar
entrada, definir un esquema de navegación de las
páginas y dar soporte para internacionalización y
accesibilidad.
Conjunto por defecto de componentes para la
interfaz de usuario.
Dos bibliotecas de etiquetas personalizadas para
JavaServer Pages que permiten expresar una interfaz
JavaServer Faces dentro de una página JSP.
9. JSF
Incluye
Un modelo de eventos en el lado del servidor.
Administración de estados.
Beans administrados.
10. JSF
Implementaciones
Sun Microsystems: JSF Reference Implementation.
MyFaces: royecto de Apache Software Foundation.
Rich Faces: http://www.jboss.org/richfaces
ICEFaces: http://www.icefaces.org/main/home/
jQuery4jsf: Basados en uno de los más populares
framework javascript → jQuery.
PrimeFaces
11. JSF
Implementaciones – PrimeFaces
Más de 100 componentes Ajax de fácil uso.
Soporta JSF 2.0.
No requiere una complicada configuraciones.
Showcase de Ejemplo para descarga.
Documentación (pdf con 411 pg.).
Temas preconfigurados (Ahorra maquetación)
http://www.primefaces.org/
12. JSF
Ventajas
Java EE Standard.
Muchos componentes.
Muchas librerías y herramientas.
Buen soporte por varios IDEs.
Alta demanda laboral.
Rápido y fácil para empezar a desarrollar.
El código JavaScript se incrusta como parte de
componentes.
13. JSF
Desventajas
Pesado, tanto en CPU como en memoria.
Cuando algo no funciona como se espera, es difícil
de depurar.
Seguir estándares hace que la evolución de JSF no
sea tan rápida como otros frameworks.
14. JSF
Facelets
Framework para plantillas centrado en JSF.
Permite trabajar con JSF de una forma más natural.
Curva de aprendizaje corta.
Ayuda a integrar JSP con JSF.
Óptimo manejo de mensajes de error, que ahora
reportan informes efectivos. En JSF, no se indica qué
componente y en qué línea se produce un error.
17. Apache Struts 1.x
Conceptos básicos
Framework Open Source para el desarrollo de
aplicaciones Web bajo el patrón MVC (Modelo, vistas
y controlador) y J2EE.
Permite reducir el tiempo de desarrollo.
Extremadamente popular y extendido.
Basado en el patrón MVC.
El componente primario de Struts es un Servlet.
Muy usada actualmente :(
http://struts.apache.org/
19. Apache Struts 1.x
Características básicas
Un sólo archivo de configuración (struts-config.xml),
aunque se podrían tener varios.
Cada acción se modela como un Action.
Cada formulario se modela como un ActionForm.
Cada pantalla (JSP) debe utilizar tags de Struts.
Es posible (y conveniente) utilizar archivos de
propiedades para I18N.
20. Apache Struts 1.x
Ventajas
Versión muy extendida.
Actualmente mucha demanda laboral. En empresa
privada y sobre todo en administración.
Estable: muy consolidado y probado.
Mucha documentación, ejemplos, libros, etc.
21. Apache Struts 1.x
Desventajas
Si no está soportado por el IDE, puede resultar
tedioso mantener la configuración.
Para una sola pantalla debemos crear por lo menos
2 clases (ActionForm y Action).
El manejo de Actions como hilos de ejecución
pueden generar problemas.
Obsoleto: actualmente hay mejores alternativas.
24. Apache Struts 2.x
Conceptos básicos
Basado en el patrón MVC.
Struts 2 no se basa en Struts 1.x, se basa en otro
framework llamado WebWork.
Más simple y mucho más completo que Struts 1,x.
Permite reducir el tiempo de desarrollo.
Todas las ventajas de usar un Framework:
desarrollo más controlado y homogéneo.
25. Apache Struts 2.x
Ventajas
Formularios POJO (Plain Old Java Objects), ya no
se utilizan los ActionForm.
Acciones POJO, no hace falta extender de Action.
Mejoras en los tags.
Archivo de configuración opcional y con posibilidad
de dividirlo en paquetes.
Soporte para AJAX.
Integración de herramientas debbuging y profiling.
26. Apache Struts 2.x
Desventajas
La documentación no está muy bien organizada.
No hay feedback para las propiedades que no se
han especificado o las expresiones OGNL no válidas.
Los resultados de Struts 1.x en Google "molestan".
31. SPRING
Conceptos básicos
Basado en el patrón MVC.
Versión para la plataforma .NET → Spring .NET
Soporte completo de Java 5.
Spring Expression Language.
Soporte excelente par aplicaciones REST.
Mejorado el soporte de Ajax.
Agregado soporte para JAX-RS.
32. SPRING
Conceptos básicos
Motivación -> Facilitar el desarrollo de aplicaciones
J2EE, promoviendo buenas prácticas de diseño y
programación. (patrones de diseño como Factory,
Abstract Factory, Decorator, Service Locator, etc).
Es código abierto.
Modularidad, usar módulos sin comprometerse con
el uso del resto.
Puede actuar como "pegamento" de integración
entre diferentes APIs (JDBC, JNDI, etc.) y frameworks
(por ejemplo entre Struts e iBatis).
33. SPRING
Ventajas
Controllers, Models (JavaBeans) y Views.
Muy flexible -> implementación mediante interfaces
(Struts obliga a heredar de clases concretas).
No obliga a utilizar JSP. Permite usar XLST,
Velocity, FreeMaker o implemtar tu propio lenguaje.
Los controllers se configuran mediante IoC como los
demás objetos → fácilmente testeables e integrables.
34. SPRING
Ventajas
Ofrece un framework para todas las capas de la
aplicación.
No existen ActionForms se enlaza directamente con
los beans de negocio.
Cantidad de código testeable, las validaciones no
dependen de la Api de servlets.
35. SPRING
Principales módulos
Spring Core (Inversión del control (IoC) / Inyección
de dependencias (DI))
Spring AOP (Programación orientada a aspectos)
Spring JDBC (Acceso a datos)
Spring MVC (Desarrollo Web según el patrón MVC)
Spring Remoting (Distribución)
Spring Transaction Abstraction (Transacciones)
Otros: Spring TestContext, Spring JMX, Spring
Security , Spring Web Flow
38. JBOSS SEAM
Conceptos básicos
Framework desarrollado por JBoss.
Combina a los 2 frameworks EJB3 y JSF.
Desarrollo WYSIWYG facilitado a través del uso de
las JBoss Tools.
Jboss Tools: Conjunto de plug-ins diseñados para el
entorno integrado de desarrollo Eclipse.
Libro recomendado aquí
http://www.seamframework.org/Home
40. JBOSS SEAM
Ventajas
Integración con Gestores de Contenido y Workflow:
• JBoss Portal.
• Alfresco ECM, que se presenta como una
excelente propuesta Open Source para el manejo
de contenido empresarial.
Seam elimina la barrera existente entre JSF y EJB,
permitiendo usar EJBs directamente como "backing
beans" de JSF y lanzar o escuchar eventos web.
42. GWT
Conceptos básicos
Google Web Toolkit (GWT) es un entorno open
source para el desarrollo de aplicaciones amigables
en Java basadas en AJAX.
El código se escribe en Java. El compilador GWT lo
convierte en JavaScript y HTML compatible con
cualquier navegador.
Colección de componentes de interfaz de usuario
(widgets) dinámicas y reusables.
Licencia Apache 2.0.
44. GWT
Ciclo de vida del desarrollo
1. Escribir y depurar la aplicación en Java usando
GWT.
2. Usar el compilador Java-to-JavaScript de GWT
para generar JavaScript y HTML.
3. Comprobar funcionamiento en los navegadores.
45. GWT
GWT y RPC
GWT usa RPC como mecanismo para interactuar
con el servidor. (ej. obtener datos de BD).
Permite pasar objetos Java entre cliente y servidor.
Usado correctamente permite mover gran parte de
la lógica de la interfaz al lado del cliente, obteniendo
mejor rendimiento, menor consumo de ancho de
banda e interfaces más amigables.
47. GWT
Ventajas
Programar en Java permite utilizar IDEs como
Eclipse o NetBeans, así como sus herramientas de
depuración..
Código javascript generado por el compilador:
• Más eficiente que el escrito a mano.
• Usa técnicas de compresión y ofuscación.
• Permite inlining: En la llamada a un método
javascript, el compilador puede colocar el cuerpo.
48. GWT
Ventajas
No se necesita mucho conocimiento de otros
lenguajes (JavaScript).
Los errores comunes JavaScripts (types, type
mismatches) son capturados por el programador
durante compilación.
Se evitan incompatibilidades de los navegadores.
Integración con JUnit.
Internacionalización.
49. GWT
Desventajas
La generación automática de HTML podría dificultar
el uso de herramientas estándar de HTML y CSS.
Sólo para desarrolladores Java.
Muchos entornos Ajax permiten elegir el lenguaje en
el servidor. GWT sólo permite Java.
Enfoque Inusual:
• Evaluación y administración más difícil.
• Desconfianza.
50. EJEMPLO DE ARQ
Propuesta de arquitectura
Ejemplo aquí:
(http://www.adictosaltrabajo.com/tutoriales/tutoriales.php
?pagina=EjemploArquitecturaPropuestaAutentia)