Frameworks J2EE

Preview:

DESCRIPTION

Introducción a los principales Frameworks J2EE como JSF, Struts1, Struts2, Spring, JBOSS Seam, GWT, etc.

Citation preview

FRAMEWORKSJ2EE

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.

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.

Framework

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.

Entorno de desarrollo integrado

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.

JSF (Java Server Faces)

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.

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.

JSF

Incluye Un modelo de eventos en el lado del servidor.

Administración de estados.

Beans administrados.

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

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/

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.

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.

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.

JSF

EJEMPLOS JSF

STRUTS 1.x

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/

Apache Struts 1.x

ArquitecturaHTTPServlet

ActionServlet ApplicationConfig

Action RequestProcessor

ActionForm

struts-config.xml

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.

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.

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.

Apache Struts 1.x

EJEMPLOS STRUTS 1.x

STRUTS 2.x

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.

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.

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".

Apache Struts 2.x

Arquitectura

Apache Struts 2.x

Arquitectura simplificada

Apache Struts 2.x

EJEMPLOS STRUTS 2

SPRING

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.

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).

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.

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.

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

SPRING

Principales módulos

JBOSS SEAM

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

JBOSS SEAM

Conceptos básicos

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.

GWT

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.

GWT

Arquitectura

GWT

Ciclo de vida del desarrollo1. 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.

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.

GWT

GWT y RPC

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.

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.

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.

EJEMPLO DE ARQ

Propuesta de arquitectura

Ejemplo aquí:

(http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=EjemploArquitecturaPropuestaAutentia)

FINFrameworks J2EE

Iker Canariasiker.canarias@gmail.com

Recommended