frameworks java ee 5 de marzo de 2.012
DESCRIPTION
Material utilizado durante la sesión técnica sobre Frameworks Java EE desarrollada el 5 de marzo de 2012. Se trata de una sesión del Curso de Adaptación al Grado de Informática y Servicios.TRANSCRIPT
Frameworks Java EE
José Ramón Romera
05-03-2011
Agenda
1. Entorno Java EE
• Introducción
• Arquitectura
2. Frameworks Java EE
• Criterios de selección
• Clasificación de Frameworks
• Comparando Frameworks
3. Metodología de proyecto
• Descripción
• Herramientas
Entorno Java EE
1. Entorno Java EE
• Introducción
• Arquitectura
2. Frameworks Java EE
• Criterios de selección
• Clasificación de Frameworks
• Comparando Frameworks
3. Metodología de proyecto
• Descripción
• Herramientas
Entorno Java EE - Introducción
• Conjunto de especificaciones basadas en estándares
• Implementación definida por:
• Servidor de aplicaciones Java EE
• Weblogic
• GlassFish (implementación de referencia)
• Jboss AS
• Frameworks
• JSF
• MyFaces
• JPA
• Hibernate
• TopLink / EclipseLink
Entorno Java EE - Historia
• J2EE 1.2 – Dec 1999
• Orientado a sistemas distribuidos
• Nacen frameworks web MVC
• Apache Struts
• Apache Tapestry
• J2EE 1.3 – Sep 2001
• EJB
• Nacen frameworks como alternativa al modelo de persistencia
• Hibernate
• J2EE 1.4 – Nov 2003
• Aumento de la complejidad
• Nacen frameworks como alternativa al modelo pesado
• Spring
Entorno Java EE - Historia
• Java EE 5 – May 2006
• Simplificación
• Incorporación de ideas del resto de frameworks
• POJO
• Anotaciones
• JPA
• Java EE 6 – 2009
• Evolucionando hacia la productividad
Entorno Java EE - Arquitectura
• Limitaciones tecnológicas
• HTTP: Protocolo sin estado
• HTML: Formato documental no orientado a componentes
• Navegador web: Cliente que “ejecuta” la aplicación. Estas aplicaciones tiene un control limitado sobre el navegador.
• Clientes no estándar
• Tecnologías heterogéneas:
• Java/.Net/PHP/Ruby …
• HTML (*)
• CSS (*)
• Plugins: Adobe Flash / Silverlight …
• JavaScript (*)
Entorno Java EE - Arquitectura
• Multicapa
• Capa Cliente
• Capa de negocio
• Capa de persistencia
Entorno Java EE - Arquitectura
• Capa Cliente
• HTML
• JavaScript
• ActionScript (Adobe Flex)
• Silverlight (Microsoft)
HTML / JavaScript
Entorno Java EE - Arquitectura
• Librerías JavaScript
• Prototype
• Script.aculo.us
• Ext Core
• Ext JS
• Mootools
• MooLego UI
• JxLib
• Jquery
• Jquery UI
• Dojo
AJAX
Entorno Java EE - Arquitectura
• Capa de negocio
• Capa web
• Servlets
• JSP
• Capa lógica de negocio
• EJB
• Componentes JavaBeans
• Web Services
Entorno Java EE - Arquitectura
• Capa de persistencia
• JDBC
• JPA (O/R Mapper)
• Hibernate (Jboss)
• TopLink (Oracle)
• EclipseLink (Eclipse)
• OpenJPA
• …
• MyBatis (iBatis)
Entorno Java EE - Arquitectura
• Modelo-Vista-Controlador
Entorno Java EE - Arquitectura
• El patrón Modelo-Vista-Controlador aporta:
• División de responsabilidades
• Acoplamiento bajo entre componentes
• Fácil mantenimiento
• Estructura de aplicación en 3 capas:
• Modelo: responsable de la gestión del negocio.
• Vista: responsable de la interacción con el usuario.
• Controlador:
• Conecta las capas de Vista y Modelo.
• Controla el flujo de ejecución de la aplicación.
Entorno Java EE - Arquitectura
• Frameworks MVC
• Servlet
• Tapestry
• Wicket
• JSP / FreeMarker / Velocity
• Struts 2
• Spring MVC
• Stripes
• JSF
• Mojarra
• MyFaces
Frameworks
1. Entorno Java EE
• Introducción
• Arquitectura
2. Frameworks Java EE
• Criterios de selección
• Clasificación de Frameworks
• Comparando Frameworks
3. Metodología de proyecto
• Descripción
• Herramientas
Frameworks – Criterios de selección
• Criterios de la organización
• Criterios de dirección/comercial
• Acuerdos corporativos
• …
• Criterios de productividad a corto plazo
• Conocimiento existente
• Madurez metodológica
• Librerías de desarrollo propias/adquiridas
Frameworks – Criterios de selección
• Criterios Técnicos
• Actividad/Soporte
• Ajax
• Escalabilidad
• Testing
• Documentación
• Integración
• Aspectos especiales
Frameworks - Clasificación
• Clasificación
• Frameworks de Aplicación
• Persistencia
• Hibernate
• TopLink
• Web Service
• Axis
• CXF
• Aspectos
• AspectJ
• Plantilla
• Tiles
• FreeMarker
• Velocity
Frameworks - Clasificación
• Clasificación
• Frameworks Arquitectónicos
• Java EE
• Spring
• Oracle ADF
• Jboss Seam
Frameworks - Clasificación
• Clasificación
• Frameworks web
• JSF
• Tapestry
• Struts 2
• Wicket
• Stripes
• Oracle ADF
• Spring MVC
• GWT
• Play
• Grails
• Vaadin
• ZK
• ItsNat
• OpenXava
• FormEngine
• EclipseRAP
• WaveMaker
• Struts
• Context Framework
• AppFuse
• …
Tapestry
Frameworks – Comparación
Frameworks – Tapestry
• Tapestry
• Framework web Java orientado a componentes, basado en el API Java Servlet.
• Primera release 06/2000
• Versión actual 5.3.2 – 02/2012
• Licencia Apache License 2.0
• Versionado cada 4-6 meses
• Soporte Maven
Frameworks – Tapestry
• Tapestry
• Actividad/Soporte
• Comunidad muy numerosa y amplio soporte
• Objetivo de evolucionar el framework cada 4 – 6 meses
• Ajax
• Librerías propias
• Soporte para librerías externas
• Escalabilidad
• Alta escalabilidad
• No permite varias aplicaciones en un mismo servidor
Frameworks – Tapestry
• Tapestry
• Testing
• Componentes propios
• Integración con herramientas
• Selenium
• TestNG/JUnit
• Documentación
• Documentación oficial completa, pero poco adaptada a problemas reales.
• Varios libros publicados para la versión 3, 4 y 5
• Integración
• Spring
• JPA
Frameworks – Tapestry
• Tapestry
• Características especiales
• Configuración muy sencilla
• Facilita el diseño al basarse en plantillas HTML
• Hot Deploy
• API no compatible con versiones anteriores
Wicket
Frameworks – Comparación
Frameworks – Wicket
• Wicket
• Framework web Java basado en componentes y plantillas XHTML
• Primera release 06/2005
• Versión actual 1.5.4 – 01/2012
• Licencia Apache License 2.0
• Soporte Maven
Frameworks – Wicket
• Wicket
• Actividad/Soporte
• Comunidad activa
• Ajax
• Integración nativa
• Integración con Jquery
• Escalabilidad
• Alta escalabilidad, fijado como objetivo
• Clustering mediante replica de sesion
• Testing
Frameworks – Wicket
• Wicket
• Documentación
• Excelente documentación
• Libros disponibles
• Integración
• Spring
• EJB
• JPA
• Aspectos especiales
• Simplificación entre el enlace HTML / Java
• Todo es Java
JSF
Frameworks – Comparación
Frameworks – JSF
• JSF
• Especificación estándar: JSR-314 (JSF v2.0)
• Diversas implementaciones de la especificación
• Mojarra (implementación de referencia)
• MyFaces (implementación de apache)
• Orientado a componentes:
• Conecta eventos generados por el cliente con el código servidor
• Construcción de interfaces mediante componentes
• Mantiene el estado de los componentes a lo largo del uso del componente
• Soporte Maven
Frameworks – JSF
• JSF
• Componentes: Elementos que forman la página
• Backing Beans: Clases Java que gestionan los datos y las acciones
• Expression Language(EL): Lenguaje utilizado para enlazar los componentes y los Backing Beans
• Facelets: Sistema de plantillas
• Ficheros de configuración XML
Frameworks – JSF
• JSF
• Actividad/Soporte
• Estándar Java EE
• Ajax
• Sin soporte, es necesario incluir librerías de soporte
• Escalabilidad
• Soporte del servidor de aplicaciones
• Testing
• Arquillian / JSFUnit
• Selenium
Frameworks – JSF
• JSF
• Documentación
• Documentación especifica de JSF
• Documentación especifica de las librerías de componentes
• Integración
• Basada en la pila tecnológica Java EE 6
• Aspectos especiales
• Implementación de extensiones con librerías de componentes
• Soporte Ajax mediante librerías de componentes
Frameworks – JSF
• JSF
• Mojarra vs MyFaces
• Librerías de componentes JSF
• PrimeFaces
• RichFaces
• ICEFaces
Oracle ADF
Frameworks – Comparación
Frameworks – Oracle ADF
• Oracle ADF
• Framework de Oracle basado en estándares para el desarrollo de aplicaciones Java
• Servidor WebLogic / JDeveloper
• Existen extensiones para otros servidores de aplicaciones
• Sin soporte Maven
Frameworks – Oracle ADF
Busi ness Ser vi ces
Dat a Ser vi ces
Model
Cont r ol l er
JSF Vi ew
Desktop Browser-Based
Struts
Office ADF
Swing JSP
EJB BAM ADFbc Portlets BI BPEL Web Services Java
ADF Faces
Meta
da
ta S
erv
ices (
MD
S)
Mobile
Database Web Services Legacy Systems Apps Unlimited
JSF ADF Controller
ADF Binding
Frameworks – Oracle ADF
• Oracle ADF - ADF Rich Faces
• JSF
• Componentes propios ADF
• Incorporación de AJAX: Partial Page Rendering
• Validación en el cliente
• Soporte Look & Feel a través de skins
• Internacionalización
Frameworks – Oracle ADF
• Oracle ADF – Modelo
• Basada en componente: ADF Business Components (ADF BC)
• Entities
• ViewObjects
• ApplicationModules
• Sus elementos son una combinación de elementos declarativos y código Java:
• La parte declarativa se gestiona a través de pantallas de configuración
• Las clases asociadas son en parte generadas
• La parte declarativa permite liberar al programador de tareas de base
• Requiere licencia, aunque vienen como parte de Weblogic
Spring
Frameworks – Comparación
Frameworks – Spring
• Spring
• Framework ligero para la construcción de aplicaciones empresariales
• Basado en diferentes patrones de diseño y “Best Practices”
• Organizado en diferentes módulos
Frameworks – Spring
• Spring
• Primera Release: 06/2003
• Versión actual 3.1 - 12/2011
• Licencia Apache License 2.0
• Soporte Maven
Frameworks – Spring
• Spring vs Java EE 6
• Spring no necesita un servidor de aplicaciones para funcionar
• Java EE 6 proporciona un nuevo mecanismo “Profiles” que hacen a los servidores de aplicaciones más ligeros
• Spring no es un producto estándar lo que lo hace más flexible y adaptable, permitiendo añadir nuevas funcionalidades
• Java EE 6 permite incorporar muchas de las librerías de Spring y extender sus funcionalidades, aunque no todas
• Spring es uno de los frameworks más usuados dentro del entorno Java, pero no puede competir con las empresas privadas detrás de la especificación Java EE 6 y sus diferentes implementaciones
JBoss Seam
Frameworks – Comparación
Frameworks – JBoss Seam
• JBoss Seam 3.0
• Framework de soporte a Java EE, basado en tecnologías como:
• AJAX
• JSF
• JPA
• EJB 3.0
• Jboss Tools, conjunto de herramientas que proporcionan un desarrollo rápido, mediante editores WYSIWYG
• Características
• Proporciona una solución completa y extendida Java EE
• Elimina la necesidad de Backing Beans (JSF) para enlazar directamente con EJB
• Integra Ajax utilizando RichFaces y ICEFaces
JPA
Frameworks – Comparación
Frameworks – JPA
• Java Persistence API – JSR 317
• API estándar de mapeo O/R
• Primera release: 05/2006
• Versión actual: 2.0 12/2009
• Nace para estandarizar la persistencia de objetos
• Entity Beans (EJB v2.0):
• pesados y complicados
• Solo puede ejecutarse en servidores Java EE
• Estándares de facto
• Hibernate
• Diversas implementaciones de la especificación
• EclipseLink (Implementación de referencia)
• JBoss Hibernate
Frameworks – JPA
• Características
• Diseñada para permitir aplicaciones distribuidas
• El ciclo de vida esta gestionado por el servidor de aplicaciones
• Permite su uso fuera de Java EE
• Basada en metadatos definidos mediante anotaciones en Entities
• Entity, unidad básica de persistencia
• Mapeo entre Entity (Clase Java) y diversas tablas
• EntityManager, unidad básica de gestión de la persistencia
• persistence.xml (configuración de la conexión)
Frameworks – JPA
• Implementaciones
• Hibernate
• EclipseLink (Implementación de referencia)
• Hibernate vs EclipseLink
• Hibernate es más popular y extendido que EclipseLink
• EclipseLink requiere bytecode, mientras Hibernate utiliza proxies dinámicos
• Control Lazy mejorado en EclipseLink
Ambos son una buen elección
Construcción de proyectos Java EE
1. Entorno Java EE
• Introducción
• Arquitectura
2. Frameworks Java EE
• Criterios de selección
• Clasificación de Frameworks
• Comparando Frameworks
3. Metodología de proyecto
• Descripción
• Herramientas
Construcción de proyectos Java EE
• Metodología
• Selección tecnológica
• Frameworks a utilizar
• Selección IDE
• Jdeveloper
• Eclipse
• NetBeans
• IDEA
• Repositorio de código
• Subversion
• CVS
• Mercurial
Construcción de proyectos Java EE
• Metodología
• Herramienta de construcción
• Maven
• Ant
• Definición del entorno
• Entorno de desarrollo
• Entorno de integración
• Integración continua
• Hudson
• Jenkins
• CruiseControl
• Apache Continuum
• Bamboo (Atlassian Software Systems)
Construcción de proyectos Java EE
• Metodología
• Pruebas unitarias
• TestNG
• Junit
• Selenium
• Pruebas de rendimiento
• Jmeter
• Grinder
Construcción de proyectos Java EE
• Metodología
• Calidad del Software
• Sonar
• Métricas de código
• Código testeado en test unitarios
• Reglas de codificación
• Herramientas incluidas
• PMD/Checkstyle
• Findbugs
• Cobertura
• JaCoCo
Conclusiones
• Desarrollo de aplicaciones Java EE
• Estándares
• Soporte empresarial
• Tecnología Oracle
• Oracle ADF
• Tecnología JBoss
• JBoss Seam
• Otras tecnologías
• Utiliza estándares Java EE
• JSF
• EJB
• JPA