Sei sulla pagina 1di 61

Frameworks Java EE

Jos Ramn Romera


05-03-2011

Agenda

1. Entorno Java EE
Introduccin Arquitectura

2. Frameworks Java EE
Criterios de seleccin Clasificacin de Frameworks Comparando Frameworks

3. Metodologa de proyecto
Descripcin Herramientas

Entorno Java EE

1.

2.

3.

Entorno Java EE Introduccin Arquitectura Frameworks Java EE Criterios de seleccin Clasificacin de Frameworks Comparando Frameworks Metodologa de proyecto Descripcin Herramientas

Entorno Java EE - Introduccin


Conjunto de especificaciones basadas en estndares Implementacin definida por:
Servidor de aplicaciones Java EE
Weblogic GlassFish (implementacin 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
Simplificacin

Incorporacin de ideas del resto de frameworks


POJO Anotaciones JPA

Java EE 6 2009
Evolucionando hacia la productividad

Entorno Java EE - Arquitectura


Limitaciones tecnolgicas
HTTP: Protocolo sin estado

HTML: Formato documental no orientado a componentes


Navegador web: Cliente que ejecuta la aplicacin. Estas aplicaciones tiene un control limitado sobre el navegador. Clientes no estndar

Tecnologas heterogneas:
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


Libreras 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 lgica 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 patrn Modelo-Vista-Controlador aporta:
Divisin de responsabilidades

Acoplamiento bajo entre componentes


Fcil mantenimiento

Estructura de aplicacin en 3 capas:


Modelo: responsable de la gestin del negocio. Vista: responsable de la interaccin con el usuario. Controlador: Conecta las capas de Vista y Modelo. Controla el flujo de ejecucin de la aplicacin.

Entorno Java EE - Arquitectura


Frameworks MVC
Servlet

Tapestry
Wicket JSP / FreeMarker / Velocity Struts 2

Spring MVC
Stripes JSF Mojarra MyFaces

Frameworks

1.

2.

3.

Entorno Java EE Introduccin Arquitectura Frameworks Java EE Criterios de seleccin Clasificacin de Frameworks Comparando Frameworks Metodologa de proyecto Descripcin Herramientas

Frameworks Criterios de seleccin


Criterios de la organizacin
Criterios de direccin/comercial

Acuerdos corporativos

Criterios de productividad a corto plazo


Conocimiento existente Madurez metodolgica Libreras de desarrollo propias/adquiridas

Frameworks Criterios de seleccin


Criterios Tcnicos
Actividad/Soporte

Ajax
Escalabilidad Testing Documentacin

Integracin
Aspectos especiales

Frameworks - Clasificacin
Clasificacin
Frameworks de Aplicacin

Persistencia
Hibernate TopLink Web Service

Axis
CXF Aspectos AspectJ Plantilla Tiles FreeMarker Velocity

Frameworks - Clasificacin
Clasificacin
Frameworks Arquitectnicos

Java EE
Spring Oracle ADF Jboss Seam

Frameworks - Clasificacin
Clasificacin
Frameworks web ZK ItsNat OpenXava

JSF
Tapestry Struts 2 Wicket

FormEngine
EclipseRAP WaveMaker Struts Context Framework AppFuse

Stripes
Oracle ADF Spring MVC GWT Play Grails Vaadin

Frameworks Comparacin

Tapestry

Frameworks Tapestry
Tapestry
Framework web Java orientado a componentes, basado en el API Java Servlet. Primera release 06/2000 Versin 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 Libreras propias

Soporte para libreras externas


Escalabilidad Alta escalabilidad No permite varias aplicaciones en un mismo servidor

Frameworks Tapestry
Tapestry
Testing

Componentes propios
Integracin con herramientas Selenium TestNG/JUnit

Documentacin
Documentacin oficial completa, pero poco adaptada a problemas reales. Varios libros publicados para la versin 3, 4 y 5

Integracin
Spring JPA

Frameworks Tapestry
Tapestry
Caractersticas especiales

Configuracin muy sencilla


Facilita el diseo al basarse en plantillas HTML Hot Deploy API no compatible con versiones anteriores

Frameworks Comparacin

Wicket

Frameworks Wicket
Wicket
Framework web Java basado en componentes y plantillas XHTML

Primera release 06/2005


Versin actual 1.5.4 01/2012 Licencia Apache License 2.0 Soporte Maven

Frameworks Wicket
Wicket
Actividad/Soporte

Comunidad activa
Ajax Integracin nativa Integracin con Jquery

Escalabilidad
Alta escalabilidad, fijado como objetivo Clustering mediante replica de sesion Testing

Frameworks Wicket
Wicket
Documentacin

Excelente documentacin
Libros disponibles Integracin Spring

EJB
JPA Aspectos especiales Simplificacin entre el enlace HTML / Java Todo es Java

Frameworks Comparacin

JSF

Frameworks JSF
JSF
Especificacin estndar: JSR-314 (JSF v2.0)

Diversas implementaciones de la especificacin


Mojarra (implementacin de referencia) MyFaces (implementacin de apache) Orientado a componentes:

Conecta eventos generados por el cliente con el cdigo servidor


Construccin 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 pgina

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 configuracin XML

Frameworks JSF
JSF
Actividad/Soporte

Estndar Java EE
Ajax Sin soporte, es necesario incluir libreras de soporte Escalabilidad

Soporte del servidor de aplicaciones


Testing Arquillian / JSFUnit Selenium

Frameworks JSF
JSF
Documentacin

Documentacin especifica de JSF


Documentacin especifica de las libreras de componentes Integracin Basada en la pila tecnolgica Java EE 6

Aspectos especiales
Implementacin de extensiones con libreras de componentes Soporte Ajax mediante libreras de componentes

Frameworks JSF
JSF
Mojarra vs MyFaces

Libreras de componentes JSF


PrimeFaces RichFaces ICEFaces

Frameworks Comparacin

Oracle ADF

Frameworks Oracle ADF


Oracle ADF
Framework de Oracle basado en estndares para el desarrollo de aplicaciones Java Servidor WebLogic / JDeveloper Existen extensiones para otros servidores de aplicaciones Sin soporte Maven

Frameworks Oracle ADF


Desktop
ADF Swing Metadata Services (MDS) Office Mobile

Browser-Based
JSF ADF Faces JSP

Vi ew

JSF

ADF Controller

Struts

C ont r ol l er

ADF Binding

M odel Busi ness Ser vi ces

Java

EJB

ADFbc

BAM

Web Services

BPEL

BI

Portlets

D at a Ser vi ces
Database Web Services Legacy Systems Apps Unlimited

Frameworks Oracle ADF


Oracle ADF - ADF Rich Faces
JSF

Componentes propios ADF


Incorporacin de AJAX: Partial Page Rendering Validacin en el cliente Soporte Look & Feel a travs de skins

Internacionalizacin

Frameworks Oracle ADF


Oracle ADF Modelo
Basada en componente: ADF Business Components (ADF BC)

Entities
ViewObjects ApplicationModules Sus elementos son una combinacin de elementos declarativos y cdigo Java: La parte declarativa se gestiona a travs de pantallas de configuracin 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

Frameworks Comparacin

Spring

Frameworks Spring
Spring
Framework ligero para la construccin de aplicaciones empresariales

Basado en diferentes patrones de diseo y Best Practices


Organizado en diferentes mdulos

Frameworks Spring
Spring
Primera Release: 06/2003

Versin 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 ms ligeros
Spring no es un producto estndar lo que lo hace ms flexible y adaptable, permitiendo aadir nuevas funcionalidades Java EE 6 permite incorporar muchas de las libreras de Spring y extender sus funcionalidades, aunque no todas Spring es uno de los frameworks ms usuados dentro del entorno Java, pero no puede competir con las empresas privadas detrs de la especificacin Java EE 6 y sus diferentes implementaciones

Frameworks Comparacin

JBoss Seam

Frameworks JBoss Seam


JBoss Seam 3.0
Framework de soporte a Java EE, basado en tecnologas como:

AJAX
JSF JPA EJB 3.0

Jboss Tools, conjunto de herramientas que proporcionan un desarrollo rpido, mediante editores WYSIWYG

Caractersticas
Proporciona una solucin completa y extendida Java EE Elimina la necesidad de Backing Beans (JSF) para enlazar directamente con EJB Integra Ajax utilizando RichFaces y ICEFaces

Frameworks Comparacin

JPA

Frameworks JPA
Java Persistence API JSR 317
API estndar de mapeo O/R

Primera release: 05/2006


Versin 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 Estndares de facto Hibernate Diversas implementaciones de la especificacin EclipseLink (Implementacin de referencia) JBoss Hibernate

Frameworks JPA
Caractersticas
Diseada 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 bsica de persistencia

Mapeo entre Entity (Clase Java) y diversas tablas


EntityManager, unidad bsica de gestin de la persistencia persistence.xml (configuracin de la conexin)

Frameworks JPA
Implementaciones
Hibernate

EclipseLink (Implementacin de referencia)

Hibernate vs EclipseLink
Hibernate es ms popular y extendido que EclipseLink EclipseLink requiere bytecode, mientras Hibernate utiliza proxies dinmicos Control Lazy mejorado en EclipseLink

Ambos son una buen eleccin

Construccin de proyectos Java EE

1.

2.

3.

Entorno Java EE Introduccin Arquitectura Frameworks Java EE Criterios de seleccin Clasificacin de Frameworks Comparando Frameworks Metodologa de proyecto Descripcin Herramientas

Construccin de proyectos Java EE


Metodologa
Seleccin tecnolgica

Frameworks a utilizar
Seleccin IDE Jdeveloper Eclipse

NetBeans
IDEA Repositorio de cdigo Subversion CVS Mercurial

Construccin de proyectos Java EE


Metodologa
Herramienta de construccin

Maven
Ant Definicin del entorno Entorno de desarrollo

Entorno de integracin
Integracin continua Hudson Jenkins CruiseControl Apache Continuum Bamboo (Atlassian Software Systems)

Construccin de proyectos Java EE


Metodologa
Pruebas unitarias

TestNG
Junit Selenium Pruebas de rendimiento

Jmeter
Grinder

Construccin de proyectos Java EE


Metodologa
Calidad del Software

Sonar
Mtricas de cdigo Cdigo testeado en test unitarios Reglas de codificacin

Herramientas incluidas
PMD/Checkstyle Findbugs Cobertura JaCoCo

Conclusiones
Desarrollo de aplicaciones Java EE
Estndares

Soporte empresarial
Tecnologa Oracle
Oracle ADF

Tecnologa JBoss
JBoss Seam

Otras tecnologas
Utiliza estndares Java EE
JSF
EJB JPA

Potrebbero piacerti anche