Frameworks JAVA EE 5 de marzo de 2.012

61

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 of Frameworks JAVA EE 5 de marzo de 2.012

Page 1: Frameworks JAVA EE 5 de marzo de 2.012
Page 2: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks Java EE

José Ramón Romera

05-03-2011

Page 3: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 4: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE

Page 5: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 6: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 7: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 8: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 9: Frameworks JAVA EE 5 de marzo de 2.012

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 (*)

Page 10: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Multicapa

• Capa Cliente

• Capa de negocio

• Capa de persistencia

Page 11: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Capa Cliente

• HTML

• JavaScript

• ActionScript (Adobe Flex)

• Silverlight (Microsoft)

HTML / JavaScript

Page 12: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Librerías JavaScript

• Prototype

• Script.aculo.us

• Ext Core

• Ext JS

• Mootools

• MooLego UI

• JxLib

• Jquery

• Jquery UI

• Dojo

AJAX

Page 13: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Capa de negocio

• Capa web

• Servlets

• JSP

• Capa lógica de negocio

• EJB

• Componentes JavaBeans

• Web Services

Page 14: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Capa de persistencia

• JDBC

• JPA (O/R Mapper)

• Hibernate (Jboss)

• TopLink (Oracle)

• EclipseLink (Eclipse)

• OpenJPA

• …

• MyBatis (iBatis)

Page 15: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Modelo-Vista-Controlador

Page 16: Frameworks JAVA EE 5 de marzo de 2.012

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.

Page 17: Frameworks JAVA EE 5 de marzo de 2.012

Entorno Java EE - Arquitectura

• Frameworks MVC

• Servlet

• Tapestry

• Wicket

• JSP / FreeMarker / Velocity

• Struts 2

• Spring MVC

• Stripes

• JSF

• Mojarra

• MyFaces

Page 18: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks

Page 19: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 20: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 21: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks – Criterios de selección

• Criterios Técnicos

• Actividad/Soporte

• Ajax

• Escalabilidad

• Testing

• Documentación

• Integración

• Aspectos especiales

Page 22: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks - Clasificación

• Clasificación

• Frameworks de Aplicación

• Persistencia

• Hibernate

• TopLink

• Web Service

• Axis

• CXF

• Aspectos

• AspectJ

• Plantilla

• Tiles

• FreeMarker

• Velocity

Page 23: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks - Clasificación

• Clasificación

• Frameworks Arquitectónicos

• Java EE

• Spring

• Oracle ADF

• Jboss Seam

Page 24: Frameworks JAVA EE 5 de marzo de 2.012

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

• …

Page 25: Frameworks JAVA EE 5 de marzo de 2.012

Tapestry

Frameworks – Comparación

Page 26: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 27: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 28: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 29: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 30: Frameworks JAVA EE 5 de marzo de 2.012

Wicket

Frameworks – Comparación

Page 31: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 32: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 33: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 34: Frameworks JAVA EE 5 de marzo de 2.012

JSF

Frameworks – Comparación

Page 35: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 36: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 37: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 38: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 39: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks – JSF

• JSF

• Mojarra vs MyFaces

• Librerías de componentes JSF

• PrimeFaces

• RichFaces

• ICEFaces

Page 40: Frameworks JAVA EE 5 de marzo de 2.012

Oracle ADF

Frameworks – Comparación

Page 41: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 42: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 43: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 44: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 45: Frameworks JAVA EE 5 de marzo de 2.012

Spring

Frameworks – Comparación

Page 46: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 47: Frameworks JAVA EE 5 de marzo de 2.012

Frameworks – Spring

• Spring

• Primera Release: 06/2003

• Versión actual 3.1 - 12/2011

• Licencia Apache License 2.0

• Soporte Maven

Page 48: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 49: Frameworks JAVA EE 5 de marzo de 2.012

JBoss Seam

Frameworks – Comparación

Page 50: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 51: Frameworks JAVA EE 5 de marzo de 2.012

JPA

Frameworks – Comparación

Page 52: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 53: Frameworks JAVA EE 5 de marzo de 2.012

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)

Page 54: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 55: Frameworks JAVA EE 5 de marzo de 2.012

Construcción de proyectos Java EE

Page 56: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 57: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 58: Frameworks JAVA EE 5 de marzo de 2.012

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)

Page 59: Frameworks JAVA EE 5 de marzo de 2.012

Construcción de proyectos Java EE

• Metodología

• Pruebas unitarias

• TestNG

• Junit

• Selenium

• Pruebas de rendimiento

• Jmeter

• Grinder

Page 60: Frameworks JAVA EE 5 de marzo de 2.012

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

Page 61: Frameworks JAVA EE 5 de marzo de 2.012

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