SlideShare una empresa de Scribd logo
1
Java EE 5 (sucesor de J2EE):Java EE 5 (sucesor de J2EE):
el reto de volver a empezarel reto de volver a empezar
MarMaríía Consuelo Frankya Consuelo Franky
Abril de 2007Abril de 2007
CincoSOFT Ltda.CincoSOFT Ltda.
ConsueloFranky@cincosoft.comConsueloFranky@cincosoft.com
http://www.cincosoft.comhttp://www.cincosoft.com
2
IntroducciIntroduccióónn
• Java EE 5 reemplazó a J2EE hace menos de 1 año: cambio
profundo de modelo conceptual, arquitectura y estrategia de
desarrollo
• Aplicaciones Java EE 5 son mucho más concisas y eficientes:
reducen el código a la tercera parte
• El reto es volver a aprender a hacer aplicaciones de una
manera completamente distinta
• Objetivo de la conferencia: visión general del desarrollo de
aplicaciones Java EE 5 con sus ventajas y dificultades
3
ContenidoContenido
A: Arquitectura de una aplicación Java EE 5
B: Concepto y programación de un caso de uso
C: Facilidades para el desarrollo de aplicaciones Java EE 5
D: Elementos JSF para pantallas
E: Meta-framework para acelerar el desarrollo en Java EE 5
(experiencia CincoSOFT)
4
A:A:
Arquitectura de unaArquitectura de una
aplicaciaplicacióón Java EE 5n Java EE 5
5
•Maneja
interacción
con usuario
•Despliegue
HTML
•Validación
sintáctica
PresentaciPresentacióónn
Cliente conCliente con
navegador Webnavegador Web
•Invoca
servicios
•Validación
sintáctica
•Adapta
respuestas
a interfaz
usuario
•Maneja
excepciones
AplicaciAplicacióónn
ServidorServidor WebWeb
•Realiza
servicios
sobre
objetos del
dominio
•Implanta
reglas del
negocio
•Estado de
sesión
-usuario
•Control
transacción
ServiciosServicios
Servidor de ComponentesServidor de Componentes
•Servicios
básicos de
persistencia
de objetos
del dominio
•Transforma-
ción Objeto-
Relacional
•Soporte
transacción
PersistenciaPersistencia
Servidor BDServidor BD
•Modela
entidades
del negocio
y sus reglas
básicas
•Validación
semántica
DominioDominio
Niveles de una arquitecturaNiveles de una arquitectura multimulti--nivelnivel
6
Elementos del estElementos del estáándar Java EE 5ndar Java EE 5
Múltiples frameworks
Framework:
• librería
• reglas de uso
• soporta 1 aspecto
del desarrollo
7
8
Pantallas se contruyen con componentes gráficos
que reaccionan a eventos:
son componentes de alto nivel que encapsulan elementos
HTML y tienen comportamiento asociado
como reacción a eventos (por ej: oprimir un botón) invocan
directamente métodos de clases java ("backing beans")
Aspectos de validación de los datos del usuario:
Validación automática asociada a cada componente gráfico
Cuando la validación falla se vuelve a mostrar la pantalla junto
con los mensajes de error
Procesamiento de eventos solo cuando la validación es
exitosa
Nivel web basado en JSFNivel web basado en JSF
9
Framework JSF
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
servlet Faces
Servidor Web Servidor BDServidor de
componentes
DominioDominio
JSP
pantallazo1
HTML
1
JSP
pantallazo2
Backing
Bean 2
VISTAS
MODELO
CONTROLADOR
Backing
Bean 1
BD
rela-
cional
HTML
2
EJB
sesión
A
EJB
entidad
C
10
Concepto de EJB de entidad
modela una entidad de negocio persistente
Concepto de EJB de sesión
componente de negocio: implementa los servicios ofrecidos
por la aplicación
Simplificación de Java EE 5 respecto a J2EE
clases simples para implementar entidades y componentes de
negocio:
• se regresa a un POJO: “Plain Old Java Objects”
descriptores desaparecen (pero ahora hay @anotaciones no
obligatorias)
• más trabajo para el Contenedor, menos para el desarrollador
persistencia automática: desaparece SQL burocrático
ahora sí se programa en términos de objetos (entidades) y no en
términos de tablas de la BD
• código se reduce a la tercera parte (y más robusto)
Niveles de Servicio y DominioNiveles de Servicio y Dominio
basados en EJBs 3.0basados en EJBs 3.0
11
J2EE:J2EE:
Arquitectura MVC de una aplicaciArquitectura MVC de una aplicacióónn
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
Servidor Web Servidor BDServidor de componentes
DominioDominio
VISTAS
MODELO
CONTROLADOR
BD
rela-
cional
servlet controlador
EJB sesión
A
EJB entidad
C
StateMachine
javaBean 1
javaBean
2
WebProxy
EJB controlador
ScreenFlow-
Manager
JSP
pantallazo1
JSP
pantallazo2
JSP
template
HTML
1
RequestProcessor
HTML
2
MainServlet
DAO
Model
DAO
Value
BD
12
Java EE 5:Java EE 5:
Arquitectura de una aplicaciArquitectura de una aplicacióónn
utilizando frameworks JSF, EJB 3.0 y Seamutilizando frameworks JSF, EJB 3.0 y Seam
Navegador Cliente
JSP
N. AplicaciN. Aplicacióón (Web)n (Web)
ejb
aplicación
N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
JSP
entidades
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
servlet
JSF
servlet
Seam
ejb
Seam
ejb
aplicación
entity
manager
forward
frameworks
13
Seam logra que las entidades estén asociadas
directamente a las pantallas
las pantallas muestran valores de atributos de entidades
el usuario modifica o suministra valores para estos atributos
Procesamiento de eventos de pantallas es realizado
directamente por los componentes EJB de sesión
Se eliminan intermediarios => muchos patrones se
vuelven innecesarios
Portabilidad de Seam a cualquier servidor que soporte JSF y
EJB 3.0
Acople entre niveles utilizando elAcople entre niveles utilizando el
framework JBoss Seamframework JBoss Seam
14
B:B:
Concepto y programaciConcepto y programacióónn
de un caso de usode un caso de uso
(propuesta CincoSOFT)(propuesta CincoSOFT)
15
J2EE:J2EE:
Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
Servidor Web Servidor BDServidor de
componentes
DominioDominio
VISTAS MODELO
BD
rela-
cional
JSP
pantallazo1
JSP
pantallazo2
JSP
template
servlet controlador
CONTROLADOR
WebProxy
EJB sesión
A
DAO
EJB controlador
StateMachine
XxxEjbHandler
XxxModel
ScreenFlow-
Manager
XxxFlow-
Handler
HTML
1
RequestProcessor
HTML
2
MainServlet
RequestToEventTrans
XxxRequest-
Handler
XxxValue
EJB entidad
C
DAO
16
Java EE 5:Java EE 5:
Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso
Navegador Cliente
JSP 2
N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
JSP 1
Entidades
(compartidas por los casos de uso)
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
Ejb para el
caso de uso
forward
Frameworks JSF, EJB 3.0 y Seam
17
pantalla P
Concepto de un caso de usoConcepto de un caso de uso
Es un conjunto de servicios sobre entidades de negocio,
implementado por un ejb de sesión y por un conjunto de
pantallas desde donde se solicitan estos servicios
ejb de sesión
entidad A
entidad B
pantalla Q pantalla Rcampos de
pantallas
asociados a
atributos de
entidades y
del ejb
botones de
pantallas que
invocan servicios
del ejb
entidades
compartidas por
todos los casos de
uso
los servicios del ejb
consultan y modifican
las entidades
18
Un ejb de sesión que soporta un caso de uso puede exponerse
como Web service ofreciendo públicamente un subconjunto
de sus servicios
ejb de sesión
Web service
entidad A
entidad B
19
AplicaciAplicacióón =n =
entidades + ejbs + web services + pantallasentidades + ejbs + web services + pantallas
caso de uso 1 caso de uso 2
Web service 1 Web service 2
ejb sesión
caso uso 1
entidad A
entidad B
entidad C
entidad D
entidades de negocio
ejb sesión
caso uso 1
ejb sesión
20
Flujo de negocio paraFlujo de negocio para
un nuevo caso de usoun nuevo caso de uso
Caso de uso “inscribir nuevo hotel”
invocar servicio newHotel() para iniciar conversacion creando
nuevo objeto Hotel vacio
mostrar pantalla "editHotel" que muestra el objeto Hotel para que
el usuario de valor a sus atributos
invocar servicio verifyNewHotel() para validar el objeto Hotel:
• si hay errores de validacion volver a mostrar la pantalla "editHotel”
• si no hay errores mostrar la pantalla "confirmHotel" para pedir al
usuario su confirmacion o cancelación
cuando el usuario confirma:
• invocar servicio confirm() para agregar el nuevo Hotel a la BD y
cerrar la conversacion
• mostrar la pantalla "main" del sistema, la cual mostrará un mensaje
de confirmacion
cuando el usuario cancela:
• invocar servicio cancel() para cerrar conversacion
• mostrar pantalla "main"
21
/hotels/editHotel.xhtml
hotels/confirmHotel.xhtml
common/main.xhtml
editHotel
newHotel()
confirmHotel
verifyNewHotel()
confirm()
Flujo de negocio:Flujo de negocio:
caso de usocaso de uso ““inscribir nuevo hotelinscribir nuevo hotel””
f
tProceed
B
Cancel
cancel()
E
main
Revise
Confirm
E
Cancel
Reglas de navegación de pantallas se describen en archivos de
configuración: faces-config.xml, pages.xml
22
pages.xml: reglas de navegación entre
pantallas
desde cualquier pantalla con la acción newHotel se solicita ir
a la pantalla editHotel de entrada al caso de uso
en la pantalla editHotel el usuario suministra los datos del
nuevo hotel e invoca la acción verifyNewHotel; después va
a la pantalla confirmHotel solo si el nuevo hotel es válido
<!-- reglas desde cualquier pantalla -->
<page view-id="*">
...
<navigation from-action="#{hotelInscription.newHotel}">
<redirect view-id=
"/pages/hotels/hotelInscription/editHotel.xhtml"/>
</navigation>
</page>
<!-- reglas desde pantalla editHotel -->
<page view-id="/pages/hotels/hotelInscription/editHotel.xhtml"
conversation-required="true">
<navigation from-action="#{hotelInscription.verifyNewHotel}">
<rule if="#{hotelInscription.hotelValid}">
<redirect view-id=
"/pages/hotels/hotelInscription/confirmHotel.xhtml"/>
</rule>
</navigation>
</page>
23
Ejb de sesiEjb de sesióón para el caso de uson para el caso de uso
Atributos:
atributos que representan los frameworks de control
atributos que son entidades
atributo que indica el resultado de validar la nueva entidad Hotel
inyección/extracción de atributos
@Stateful
@Name("hotelInscription")
public class HotelInscriptionAction
implements HotelInscription {
@PersistenceContext
private EntityManager em;
@In
private FacesMessages facesMessages;
@In(required=false)
@Out(required=false)
private Hotel hotel;
private boolean hotelValid;
public boolean isHotelValid(){
return hotelValid;
}
@Destroy @Remove
public void destroy() {}
24
Servicios:
servicios que inician o terminan conversación de inscribir un hotel
servicio que valida el nuevo hotel
servicio que ingresa el nuevo hotel a la BD
@Begin
public void newHotel() {
hotel = new Hotel();
}
public void verifyNewHotel() {
if ( ! hotel.getCountry().equals("USA") ) {
facesMessages.add
("Only accepts hotels in USA ");
return;
}
if ( ! hotel.getZip().matches("^d*$") ) {
facesMessages.add("Zipcode must be numeric");
return;
}
hotelValid = true;
}
@End
public void confirm() {
em.persist(hotel);
facesMessages.add("Thank you, your inscription"
+ " of #{hotel.name} has id #{hotel.id}");
}
@End
public void cancel(){}
}
25
Entidades que participanEntidades que participan
en el caso de usoen el caso de uso
entidad maestra Hotel
@Entity
@Name("hotel")
@Scope(CONVERSATION)
@Table(name="Lodge")
public class Hotel implements Serializable {
private Long id;
private String name;
...
private List<Atraction> atractions
= new ArrayList<Atraction>();
public Hotel() {}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
• Observar:
– atributo de relación con otra entidad (detalles)
– anotación indicando el atributo llave
26
@NotNull
@Length (min = 1, max = 50, message =
"name is required and must be at most {max} characters long")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
@OneToMany(mappedBy="hotel", cascade=CascadeType.ALL)
@OrderBy("description asc")
public List<Atraction> getAtractions() {
return atractions;
}
public void setAtractions(List<Atraction> atractions) {
this.atractions = atractions;
}
}
• Observar:
– anotación de validación de un atributo
– anotación de relación con otra entidad
27
PantallaPantalla ““editHoteleditHotel””
de edicide edicióón de una entidad Hoteln de una entidad Hotel
28
Expone directamente los atributos de la entidad Hotel
...
<div class="label">Name:</div>
<div class="input">
<h:inputText id="name" value="#{hotel.name}"
required="true" />
<br/>
<span class="errors"><h:message for="name" /></span>
</div>
Hay una zona para los mensajes FacesMessages
<div class="entry errors">
<h:messages globalOnly="true" />
</div>
Los botones invocan servicios
<div class="input">
<t:commandButton id="proceed" value="Proceed"
action="#{hotelInscription.verifyNewHotel}"
styleClass="button"/>&#160;
<s:button value="Cancel" id="cancel"
action="#{hotelInscription.cancel}"
styleClass="button"/>
</div>
29
Validación JSF antes de invocar servicios:
30
C:C:
Facilidades para el desarrollo deFacilidades para el desarrollo de
aplicaciones Java EE 5aplicaciones Java EE 5
31
Variables en contextos Seam:Variables en contextos Seam:
inyecciinyeccióón y extraccin y extraccióón (biyeccin (biyeccióón)n)
hotel
booking
hotels
atractions
hotelSearching
hotelInscription
hotelBooking
out
in
entidad
lista de
entidades
ejb de
sesión
Convenciones
Biyección: asociación dinámica, contextual y bidireccional entre
las variables de los contextos y los atributos de los componentes
32
hotelInscription
editHotel.xhtml
out
in
entidad
lista de
entidades
ejb de
sesión
Convenciones
action
Uso de las variables por las pantallas
ej: editHotel
hotel
33
Tipos de contextos en Seam:
StatelessContext: variables sin estado (como ejbs sin estado); en
realidad es un no contexto
EventContext: equivale al request context, asociado a pedido JSF
PageContext: estado asociado a una pantalla mostrada
ConversationContext: unidad de trabajo para el usuario, puede
durar varios pedidos
SessionContext: asociada a toda la sesión de un usuario
BusinessContext: asociado a un proceso de negocio que puede
involucrar múltiples interaccionees con múltiples usuarios
ApplicationContext: asociado al estado global del servidor
34
Servicios de persistenciaServicios de persistencia
del EntityManager (framework EJB3.0)del EntityManager (framework EJB3.0)
Invocados desde los ejb de sesión
Obtener la referencia al EntityManager por inyección:
@PersistenceContext
private EntityManager em;
insert en la BD una nueva entidad :
em.persist(hotel); // el objeto adquiere PK
select en la BD una entidad existente, conociendo su PK:
Hotel hotel = (Hotel)em.find(Hotel.class, hotelId);
select en la BD una entidad existente, cancelando posibles
modificaciones en memoria:
em.refresh(hotel);
update diferido en la BD con modificaciones de una entidad
existente (se difiere hasta el commit de la transacción):
hotel.setName("Hotel Rey");
em.merge(hotel);
delete en la BD de una entidad existente:
em.remove(hotel);
35
createQuery(): consulta o actualización en la BD según
diversos criterios (EJB QL):
select una entidad:
Hotel hotel = (Hotel)em.createQuery
("from Hotel h where h.name=:name and h.city=:city")
.setParameter("name", "Hotel Rey")
.setParameter("city", "Bogota")
.getSingleResult();
select una lista de entidades:
List<Hotel> theList = em.createQuery
("from Hotel h where h.city = :city")
.setParameter("city", ”Bogota")
.getResultList();
update una o varias entidades:
em.createQuery
("update Hotel h set h.city = :city")
.setParameter("city", "Bogota")
.executeUpdate();
delete una o varias entidades:
em.createQuery
("delete from Hotel h where h.city = :city")
.setParameter("city", ”Bogota")
.executeUpdate();
36
Otras facilidades importantesOtras facilidades importantes
Facilidades de Log proporcionadas por Seam
permite mostrar banderas que combinan texto parametrizado y
variables de contextos:
log.info("Cancel booking: #0 for #{user.username}",
booking.getId());
Seguridad por roles
por anotaciones se puede proteger un ejb o un servicio particular
para que solo pueda ser invocado por un rol particular
Cada botón de una pantalla se puede habilitar o mostrar solo para
un rol particular
Internacionalización: se pueden lograr las siguientes
características:
el usuario escoge el idioma de su preferencia
existe idioma por defecto según localización del usuario
los letreros de las pantallas salen en el idioma vigente
los mensajes de errores de validación salen en el idioma vigente
37
D:D:
Elementos JSF para pantallasElementos JSF para pantallas
38
PantallasPantallas ““faceletsfacelets””
construidas con templates y <div>construidas con templates y <div>
Concepto de template:
pantalla base que define estructura común de las pantallas reales
contiene partes fijas y partes que deben ser redefinidas por cada pantalla
ejemplo de estructura de pantalla:
banner
contentsidebar
footer
39
Ejemplo de template: template.xhtml
<!-- librerias de etiquetas -->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:t="http://myfaces.apache.org/tomahawk">
<!-- referencia al archivo que define estilos de los div -->
<head>
<meta http-equiv="Content-Type"
content="text/html;charset=iso-8859-1" />
<title>Hotels reservation system</title>
<link href="../css/screen.css" rel="stylesheet" type="text/css"/>
</head>
40
<body>
<!-- div que define la estructura global de toda pantalla -->
<div id="document" >
<!-- toda pantalla tiene un banner fijo -->
<div id="headerMenu">
<div id="titleMenu"><h4>CincoSOFT framework</h4></div>
<div id="statusMenu">
<t:jscookMenu layout="hbr" theme="ThemeIE">
<t:navigationMenuItems value="#{login.menu}" />
</t:jscookMenu>
</div>
</div>
<!-- toda pantalla tiene un contenido variable: las partes
sidebar y content deben ser definidos por c/pantalla real-->
<div id="container">
<div id="sidebar" style=" width : 150px;">
<ui:insert name="sidebar"/>
</div>
<div id="content" style="width : 500px;">
<ui:insert name="content"/>
<ui:include src="footer.xhtml" />
</div>
</div>
</div>
</body>
</html>
41
Pantalla real que se basa en el template:
la etiqueta más externa <ui:composition> indica que se usa un template
la etiqueta <ui:define> redefine partes variables del template
se diseña con <div> que tienen estilos asociados
ejemplo: password.xhtml :
<!-- librerias de etiquetas e indicacion del template utilizado -->
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:s="http://jboss.com/products/seam/taglib"
template="../common/template.xhtml">
<!-- definicion de la parte content -->
<ui:define name="content">
<div class="section"> <h1>Change Your Password</h1></div>
<div class="section">
...
</div>
</ui:define>
<!-- definicion de la parte content -->
<ui:define name="sidebar">
<h1>changePassword use case</h1>
</ui:define>
</ui:composition>
42
Elementos avanzados de JSFElementos avanzados de JSF
Menú jerárquico dinámico: etiqueta <t:jscookMenu>
43
Calendario: etiqueta <t:inputCalendar>
44
Tabla con scroll y ordenable por columnas :
etiqueta <t:dataTable>
45
Tabla editable con validación por celda :
etiqueta <t:dataTable>
46
Tablas anidadas : etiqueta <t:dataTable>
47
E:E:
MetaMeta--framework para acelerar elframework para acelerar el
desarrollo en Java EE 5desarrollo en Java EE 5
(experiencia CincoSOFT)(experiencia CincoSOFT)
48
Su control se apoya en frameworks: JSF, EJB3.0, Seam
Debe contener un módulo de seguridad:
basado en roles JEE para autenticación y autorización
entidades y casos de uso para: cambiar password, manejar perfiles
de seguridad (basados en roles), manejo de usuarios e inscripción en
perfiles ,...
Debe contener los descriptores correctamente configurados
Debe disponer de un menú jerárquico que se carga de la BD
según perfil del usuario
Sus fuentes deben estar organizados por módulos y dentro
de cada módulo por casos de uso
inicialmente nace solo con el módulo de seguridad
Debe disponer de un ANT para compilación, empaque y
despliegue
Debe manejar logs
El esqueleto de una aplicaciEl esqueleto de una aplicacióón Java EE 5n Java EE 5
49
Genera el esqueleto de una aplicación Java EE 5
se apoya en frameworks estándares JEE5:
JSF: implementado por Apache Myfaces
EJB 3.0: implementado por el servidor JBoss; en el futuro debe
operar también con otros servidores (BEA, IBM WebSphere, …)
JBoss Seam: acopla JSF y EJB 3.0
JBoss jBPM: workflow
otros: Log4j, Quartz, Jasper, ….
Además ofrece generadores de esqueletos para agregar a la
aplicación:
una nueva Entidad
un nuevo EJB
un nuevo Web-Service
una nueva pantalla
un nuevo Caso de Uso
un nuevo Módulo
El Meta-Framework de CincoSOFT no amarra a la aplicación a
utilizar permanentemente el Meta-Framework
el código generado es claro y documentado
organizado según el estándar: por módulos y casos de uso
indica secciones que deben ser llenadas por el programador
MetaMeta--framework de CincoSOFTframework de CincoSOFT
50
Esqueleto inicial de una aplicaciEsqueleto inicial de una aplicacióón Java EE 5n Java EE 5
generado por el Metagenerado por el Meta--framework de CincoSOFTframework de CincoSOFT
Navegador Cliente
N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
password.xhtml
Module, Usecase, Service,
Profile, ProfileService,
User, UserProfile,
Menu
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
Ejb ChangePassword
forward Frameworks JSF, EJB 3.0 y Seam
acople mediante descriptores generados por
el meta-framework CincoSOFT
users.xhtml
profiles.xhtml
Ejb UserGestion
Ejb ProfileGestion
ENTIDADES
51
ConclusionesConclusiones
Atractivos de Java EE 5:
Conciso y eficiente; reduce código a la tercera parte
Desaparece JDBC (código burocrático SQL) y varios patrones
Integración de múltiples frameworks que ofrecen muchas
facilidades: persistencia, seguridad, logs, internacionalización,
BPM, testing, ...
Pantallas con elementos ricos de interfaz y relativa facilidad de
uso: múltiples implementaciones de JSF por Apache MyFaces,
Oracle ADF, …
Dificultades planteadas por Java EE 5:
comenzar de nuevo ….
Pérdida del control a un nivel fino de detalle porque los
frameworks actúan como cajas negras => dificultad de depurar
Actualmente no es soportado por todos los proveedores de la
tecnología Java
Utilidad de un meta-framework
disminuir sustancialmente la curva de aprendizaje
acelera el proceso de desarrollo
52
ReferenciasReferencias
Libros sobre Java EE 5:
• “JavaServer Faces: The Complete Reference”, Mc Graw Hill,
2007.
• “Pro EJB 3: Java Persistence API”, Apress, 2006.
Fuentes en internet:
• http://java.sun.com/javaee/5/docs/tutorial/doc : "The Java EE 5
Tutorial " es el tutorial oficial de Sun (versiones HTML y PDF)
• http://labs.jboss.com/portal/jbossseam/docs:
Manuales de referencia de JBoss Seam
• http://java.sun.com/javaee/technologies/javaee5.jsp: “Get Started
with the Java EE 5 SDK": son tutoriales y demos para comenzar
• http://java.sun.com/reference/blueprints: Patrones y guías para el
desarrollo de aplicaciones Java EE en general

Más contenido relacionado

La actualidad más candente

JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
Aitor Acedo
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Rodolfo Finochietti
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Sorey García
 
Planificando las bases de una aplicación windows phone
Planificando las bases de una aplicación windows phonePlanificando las bases de una aplicación windows phone
Planificando las bases de una aplicación windows phoneSorey García
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Oscar Gensollen
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
ayreonmx
 
Trabajo gru
Trabajo gruTrabajo gru
Trabajo gru
jhoffry dekentai
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
Juan Carlos Prieto
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajes
Héctor Garduño Real
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
Javier Suárez Ruiz
 
Reglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows VistaReglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows Vista
juliocasal
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsfpablo lopez
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server Faces
Eudris Cabrera
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
Luis Fernando Aguas Bucheli
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
IBM
 

La actualidad más candente (18)

JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)
 
Planificando las bases de una aplicación windows phone
Planificando las bases de una aplicación windows phonePlanificando las bases de una aplicación windows phone
Planificando las bases de una aplicación windows phone
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 
Servicios web
Servicios webServicios web
Servicios web
 
Trabajo gru
Trabajo gruTrabajo gru
Trabajo gru
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Javascript
JavascriptJavascript
Javascript
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajes
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Reglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows VistaReglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows Vista
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server Faces
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
Java server faces
Java server facesJava server faces
Java server faces
 

Destacado

Veritech corporate profile
Veritech corporate profileVeritech corporate profile
Veritech corporate profileveritech
 
Pinoso, Plot: ref.pi37-182
Pinoso, Plot: ref.pi37-182Pinoso, Plot: ref.pi37-182
Home offices in essex - london garden room
Home offices in essex - london garden roomHome offices in essex - london garden room
Home offices in essex - london garden room
medavidjones
 
Fi ware en Hack for good (#H4G)
Fi ware en Hack for good  (#H4G) Fi ware en Hack for good  (#H4G)
Fi ware en Hack for good (#H4G)
Joaquín Salvachúa
 
New Jenoptik Opticline 2016
New  Jenoptik Opticline 2016New  Jenoptik Opticline 2016
New Jenoptik Opticline 2016
Hommel Etamic (Jenoptik)
 
La Soddisfazione Del Cliente Della P. A
La Soddisfazione Del Cliente Della P. ALa Soddisfazione Del Cliente Della P. A
La Soddisfazione Del Cliente Della P. A
Pierluca Santoro
 
Jornada ISACA-CV: Presentación TIC (1 de 3)
Jornada ISACA-CV: Presentación TIC (1 de 3)Jornada ISACA-CV: Presentación TIC (1 de 3)
Jornada ISACA-CV: Presentación TIC (1 de 3)
Santiago Bonet
 
Campañas de correo masivo
Campañas de correo masivoCampañas de correo masivo
Campañas de correo masivoCarlos Hincapié
 
Climas de Chile
Climas de ChileClimas de Chile
Climas de Chile
Diego Sebastián MJ
 
DoubleTrade Sharing
DoubleTrade SharingDoubleTrade Sharing
Belleza negra anna sewell
Belleza negra   anna sewellBelleza negra   anna sewell
Belleza negra anna sewell
Itsac Jose Solis Mejia
 
Resumen
ResumenResumen
Resumen
Edgar Pineda
 
Quality Prediction for Speech-based Telecommunication Services
Quality Prediction for Speech-based Telecommunication ServicesQuality Prediction for Speech-based Telecommunication Services
Quality Prediction for Speech-based Telecommunication ServicesFörderverein Technische Fakultät
 
DIANÉTICA Y CIENCIOLOGÍA
DIANÉTICA Y CIENCIOLOGÍADIANÉTICA Y CIENCIOLOGÍA
DIANÉTICA Y CIENCIOLOGÍA
Natalia Sánchez
 
Manual de Instruções do Medidor de Tensão Arterial RS2 da Omron
Manual de Instruções do Medidor de Tensão Arterial RS2 da OmronManual de Instruções do Medidor de Tensão Arterial RS2 da Omron
Manual de Instruções do Medidor de Tensão Arterial RS2 da Omron
Viver Qualidade
 
Presentación Cegos Turismo 2013
Presentación Cegos Turismo 2013Presentación Cegos Turismo 2013
Presentación Cegos Turismo 2013
CEGOS Turismo
 
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACION
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACIONUNIVERSIDAD AUTONOMA DEL PERU INVESTIGACION
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACIONDr. Pedro Espino Vargas
 
Actividades Unidad 2. Derecho Internacional Público.
Actividades Unidad 2. Derecho Internacional Público.Actividades Unidad 2. Derecho Internacional Público.
Actividades Unidad 2. Derecho Internacional Público.Marlenne Juárez Rodríguez
 

Destacado (20)

World War Ii
World War IiWorld War Ii
World War Ii
 
Veritech corporate profile
Veritech corporate profileVeritech corporate profile
Veritech corporate profile
 
Pinoso, Plot: ref.pi37-182
Pinoso, Plot: ref.pi37-182Pinoso, Plot: ref.pi37-182
Pinoso, Plot: ref.pi37-182
 
Home offices in essex - london garden room
Home offices in essex - london garden roomHome offices in essex - london garden room
Home offices in essex - london garden room
 
Fi ware en Hack for good (#H4G)
Fi ware en Hack for good  (#H4G) Fi ware en Hack for good  (#H4G)
Fi ware en Hack for good (#H4G)
 
New Jenoptik Opticline 2016
New  Jenoptik Opticline 2016New  Jenoptik Opticline 2016
New Jenoptik Opticline 2016
 
La Soddisfazione Del Cliente Della P. A
La Soddisfazione Del Cliente Della P. ALa Soddisfazione Del Cliente Della P. A
La Soddisfazione Del Cliente Della P. A
 
Jornada ISACA-CV: Presentación TIC (1 de 3)
Jornada ISACA-CV: Presentación TIC (1 de 3)Jornada ISACA-CV: Presentación TIC (1 de 3)
Jornada ISACA-CV: Presentación TIC (1 de 3)
 
Campañas de correo masivo
Campañas de correo masivoCampañas de correo masivo
Campañas de correo masivo
 
Climas de Chile
Climas de ChileClimas de Chile
Climas de Chile
 
DoubleTrade Sharing
DoubleTrade SharingDoubleTrade Sharing
DoubleTrade Sharing
 
Belleza negra anna sewell
Belleza negra   anna sewellBelleza negra   anna sewell
Belleza negra anna sewell
 
Resumen
ResumenResumen
Resumen
 
Quality Prediction for Speech-based Telecommunication Services
Quality Prediction for Speech-based Telecommunication ServicesQuality Prediction for Speech-based Telecommunication Services
Quality Prediction for Speech-based Telecommunication Services
 
DIANÉTICA Y CIENCIOLOGÍA
DIANÉTICA Y CIENCIOLOGÍADIANÉTICA Y CIENCIOLOGÍA
DIANÉTICA Y CIENCIOLOGÍA
 
Manual de Instruções do Medidor de Tensão Arterial RS2 da Omron
Manual de Instruções do Medidor de Tensão Arterial RS2 da OmronManual de Instruções do Medidor de Tensão Arterial RS2 da Omron
Manual de Instruções do Medidor de Tensão Arterial RS2 da Omron
 
Presentación Cegos Turismo 2013
Presentación Cegos Turismo 2013Presentación Cegos Turismo 2013
Presentación Cegos Turismo 2013
 
Pediculosis
PediculosisPediculosis
Pediculosis
 
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACION
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACIONUNIVERSIDAD AUTONOMA DEL PERU INVESTIGACION
UNIVERSIDAD AUTONOMA DEL PERU INVESTIGACION
 
Actividades Unidad 2. Derecho Internacional Público.
Actividades Unidad 2. Derecho Internacional Público.Actividades Unidad 2. Derecho Internacional Público.
Actividades Unidad 2. Derecho Internacional Público.
 

Similar a JAVA EE5

De Forms a Oracle Fusion Middleware
De Forms a Oracle Fusion MiddlewareDe Forms a Oracle Fusion Middleware
De Forms a Oracle Fusion Middleware
JC_Diaz_Belmonte
 
Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010Bruno Capuano
 
Desarollo JavaEE con Spring Framework
Desarollo JavaEE con Spring FrameworkDesarollo JavaEE con Spring Framework
Desarollo JavaEE con Spring Framework
Lennon Shimokawa
 
MVVM vs MVU en NET MAUI.pptx
MVVM vs MVU en NET MAUI.pptxMVVM vs MVU en NET MAUI.pptx
MVVM vs MVU en NET MAUI.pptx
icebeam7
 
eMobc Android Startup
eMobc Android StartupeMobc Android Startup
eMobc Android Startup
emobc
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
V Sanchez
 
Jbuilder
JbuilderJbuilder
Jbuilder
Gómez Y
 
Presentación de eMobc en BetaBeers Madrid
Presentación de eMobc en BetaBeers MadridPresentación de eMobc en BetaBeers Madrid
Presentación de eMobc en BetaBeers Madrid
emobc
 
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Desarrollos NEA
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005hvillarreal
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwrgarciafjgs
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwrdamaji2
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwr
Carlos Luis Sánchez Bocanegra
 
Lanzamiento Visual Studio 2008
Lanzamiento Visual Studio 2008Lanzamiento Visual Studio 2008
Lanzamiento Visual Studio 2008
Tonymx
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
DubiWeb.TK
 
Desarrollo de aplicaciones .NET
Desarrollo de aplicaciones .NETDesarrollo de aplicaciones .NET
Desarrollo de aplicaciones .NET
Hernan Chavarriaga
 
Webinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencialWebinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencial
atSistemas
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
Rodrigo Zottola Pareja
 

Similar a JAVA EE5 (20)

De Forms a Oracle Fusion Middleware
De Forms a Oracle Fusion MiddlewareDe Forms a Oracle Fusion Middleware
De Forms a Oracle Fusion Middleware
 
Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010Novedades En Visual Studio Team System 2010
Novedades En Visual Studio Team System 2010
 
4 Jhs J Developer Adf
4  Jhs J Developer Adf4  Jhs J Developer Adf
4 Jhs J Developer Adf
 
Desarollo JavaEE con Spring Framework
Desarollo JavaEE con Spring FrameworkDesarollo JavaEE con Spring Framework
Desarollo JavaEE con Spring Framework
 
MVVM vs MVU en NET MAUI.pptx
MVVM vs MVU en NET MAUI.pptxMVVM vs MVU en NET MAUI.pptx
MVVM vs MVU en NET MAUI.pptx
 
eMobc Android Startup
eMobc Android StartupeMobc Android Startup
eMobc Android Startup
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
 
Jbuilder
JbuilderJbuilder
Jbuilder
 
Presentación de eMobc en BetaBeers Madrid
Presentación de eMobc en BetaBeers MadridPresentación de eMobc en BetaBeers Madrid
Presentación de eMobc en BetaBeers Madrid
 
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwr
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwr
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwr
 
Lanzamiento Visual Studio 2008
Lanzamiento Visual Studio 2008Lanzamiento Visual Studio 2008
Lanzamiento Visual Studio 2008
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
 
Desarrollo de aplicaciones .NET
Desarrollo de aplicaciones .NETDesarrollo de aplicaciones .NET
Desarrollo de aplicaciones .NET
 
Webinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencialWebinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencial
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 

JAVA EE5

  • 1. 1 Java EE 5 (sucesor de J2EE):Java EE 5 (sucesor de J2EE): el reto de volver a empezarel reto de volver a empezar MarMaríía Consuelo Frankya Consuelo Franky Abril de 2007Abril de 2007 CincoSOFT Ltda.CincoSOFT Ltda. ConsueloFranky@cincosoft.comConsueloFranky@cincosoft.com http://www.cincosoft.comhttp://www.cincosoft.com
  • 2. 2 IntroducciIntroduccióónn • Java EE 5 reemplazó a J2EE hace menos de 1 año: cambio profundo de modelo conceptual, arquitectura y estrategia de desarrollo • Aplicaciones Java EE 5 son mucho más concisas y eficientes: reducen el código a la tercera parte • El reto es volver a aprender a hacer aplicaciones de una manera completamente distinta • Objetivo de la conferencia: visión general del desarrollo de aplicaciones Java EE 5 con sus ventajas y dificultades
  • 3. 3 ContenidoContenido A: Arquitectura de una aplicación Java EE 5 B: Concepto y programación de un caso de uso C: Facilidades para el desarrollo de aplicaciones Java EE 5 D: Elementos JSF para pantallas E: Meta-framework para acelerar el desarrollo en Java EE 5 (experiencia CincoSOFT)
  • 4. 4 A:A: Arquitectura de unaArquitectura de una aplicaciaplicacióón Java EE 5n Java EE 5
  • 5. 5 •Maneja interacción con usuario •Despliegue HTML •Validación sintáctica PresentaciPresentacióónn Cliente conCliente con navegador Webnavegador Web •Invoca servicios •Validación sintáctica •Adapta respuestas a interfaz usuario •Maneja excepciones AplicaciAplicacióónn ServidorServidor WebWeb •Realiza servicios sobre objetos del dominio •Implanta reglas del negocio •Estado de sesión -usuario •Control transacción ServiciosServicios Servidor de ComponentesServidor de Componentes •Servicios básicos de persistencia de objetos del dominio •Transforma- ción Objeto- Relacional •Soporte transacción PersistenciaPersistencia Servidor BDServidor BD •Modela entidades del negocio y sus reglas básicas •Validación semántica DominioDominio Niveles de una arquitecturaNiveles de una arquitectura multimulti--nivelnivel
  • 6. 6 Elementos del estElementos del estáándar Java EE 5ndar Java EE 5 Múltiples frameworks Framework: • librería • reglas de uso • soporta 1 aspecto del desarrollo
  • 7. 7
  • 8. 8 Pantallas se contruyen con componentes gráficos que reaccionan a eventos: son componentes de alto nivel que encapsulan elementos HTML y tienen comportamiento asociado como reacción a eventos (por ej: oprimir un botón) invocan directamente métodos de clases java ("backing beans") Aspectos de validación de los datos del usuario: Validación automática asociada a cada componente gráfico Cuando la validación falla se vuelve a mostrar la pantalla junto con los mensajes de error Procesamiento de eventos solo cuando la validación es exitosa Nivel web basado en JSFNivel web basado en JSF
  • 9. 9 Framework JSF Navegador Cliente PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia servlet Faces Servidor Web Servidor BDServidor de componentes DominioDominio JSP pantallazo1 HTML 1 JSP pantallazo2 Backing Bean 2 VISTAS MODELO CONTROLADOR Backing Bean 1 BD rela- cional HTML 2 EJB sesión A EJB entidad C
  • 10. 10 Concepto de EJB de entidad modela una entidad de negocio persistente Concepto de EJB de sesión componente de negocio: implementa los servicios ofrecidos por la aplicación Simplificación de Java EE 5 respecto a J2EE clases simples para implementar entidades y componentes de negocio: • se regresa a un POJO: “Plain Old Java Objects” descriptores desaparecen (pero ahora hay @anotaciones no obligatorias) • más trabajo para el Contenedor, menos para el desarrollador persistencia automática: desaparece SQL burocrático ahora sí se programa en términos de objetos (entidades) y no en términos de tablas de la BD • código se reduce a la tercera parte (y más robusto) Niveles de Servicio y DominioNiveles de Servicio y Dominio basados en EJBs 3.0basados en EJBs 3.0
  • 11. 11 J2EE:J2EE: Arquitectura MVC de una aplicaciArquitectura MVC de una aplicacióónn Navegador Cliente PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia Servidor Web Servidor BDServidor de componentes DominioDominio VISTAS MODELO CONTROLADOR BD rela- cional servlet controlador EJB sesión A EJB entidad C StateMachine javaBean 1 javaBean 2 WebProxy EJB controlador ScreenFlow- Manager JSP pantallazo1 JSP pantallazo2 JSP template HTML 1 RequestProcessor HTML 2 MainServlet DAO Model DAO Value BD
  • 12. 12 Java EE 5:Java EE 5: Arquitectura de una aplicaciArquitectura de una aplicacióónn utilizando frameworks JSF, EJB 3.0 y Seamutilizando frameworks JSF, EJB 3.0 y Seam Navegador Cliente JSP N. AplicaciN. Aplicacióón (Web)n (Web) ejb aplicación N. ServiciosN. Servicios N. PersistenciaN. Persistencia Servidor Web Servidor de BD N. PresentaciN. Presentacióónn Servidor de componentes BD relacional HTML JSP entidades Convenciones: interacción HTTP invocación acceso BD uso de atributos de entidades (get y set) servlet JSF servlet Seam ejb Seam ejb aplicación entity manager forward frameworks
  • 13. 13 Seam logra que las entidades estén asociadas directamente a las pantallas las pantallas muestran valores de atributos de entidades el usuario modifica o suministra valores para estos atributos Procesamiento de eventos de pantallas es realizado directamente por los componentes EJB de sesión Se eliminan intermediarios => muchos patrones se vuelven innecesarios Portabilidad de Seam a cualquier servidor que soporte JSF y EJB 3.0 Acople entre niveles utilizando elAcople entre niveles utilizando el framework JBoss Seamframework JBoss Seam
  • 14. 14 B:B: Concepto y programaciConcepto y programacióónn de un caso de usode un caso de uso (propuesta CincoSOFT)(propuesta CincoSOFT)
  • 15. 15 J2EE:J2EE: Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso Navegador Cliente PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia Servidor Web Servidor BDServidor de componentes DominioDominio VISTAS MODELO BD rela- cional JSP pantallazo1 JSP pantallazo2 JSP template servlet controlador CONTROLADOR WebProxy EJB sesión A DAO EJB controlador StateMachine XxxEjbHandler XxxModel ScreenFlow- Manager XxxFlow- Handler HTML 1 RequestProcessor HTML 2 MainServlet RequestToEventTrans XxxRequest- Handler XxxValue EJB entidad C DAO
  • 16. 16 Java EE 5:Java EE 5: Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso Navegador Cliente JSP 2 N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia Servidor Web Servidor de BD N. PresentaciN. Presentacióónn Servidor de componentes BD relacional HTML JSP 1 Entidades (compartidas por los casos de uso) Convenciones: interacción HTTP invocación acceso BD uso de atributos de entidades (get y set) Ejb para el caso de uso forward Frameworks JSF, EJB 3.0 y Seam
  • 17. 17 pantalla P Concepto de un caso de usoConcepto de un caso de uso Es un conjunto de servicios sobre entidades de negocio, implementado por un ejb de sesión y por un conjunto de pantallas desde donde se solicitan estos servicios ejb de sesión entidad A entidad B pantalla Q pantalla Rcampos de pantallas asociados a atributos de entidades y del ejb botones de pantallas que invocan servicios del ejb entidades compartidas por todos los casos de uso los servicios del ejb consultan y modifican las entidades
  • 18. 18 Un ejb de sesión que soporta un caso de uso puede exponerse como Web service ofreciendo públicamente un subconjunto de sus servicios ejb de sesión Web service entidad A entidad B
  • 19. 19 AplicaciAplicacióón =n = entidades + ejbs + web services + pantallasentidades + ejbs + web services + pantallas caso de uso 1 caso de uso 2 Web service 1 Web service 2 ejb sesión caso uso 1 entidad A entidad B entidad C entidad D entidades de negocio ejb sesión caso uso 1 ejb sesión
  • 20. 20 Flujo de negocio paraFlujo de negocio para un nuevo caso de usoun nuevo caso de uso Caso de uso “inscribir nuevo hotel” invocar servicio newHotel() para iniciar conversacion creando nuevo objeto Hotel vacio mostrar pantalla "editHotel" que muestra el objeto Hotel para que el usuario de valor a sus atributos invocar servicio verifyNewHotel() para validar el objeto Hotel: • si hay errores de validacion volver a mostrar la pantalla "editHotel” • si no hay errores mostrar la pantalla "confirmHotel" para pedir al usuario su confirmacion o cancelación cuando el usuario confirma: • invocar servicio confirm() para agregar el nuevo Hotel a la BD y cerrar la conversacion • mostrar la pantalla "main" del sistema, la cual mostrará un mensaje de confirmacion cuando el usuario cancela: • invocar servicio cancel() para cerrar conversacion • mostrar pantalla "main"
  • 21. 21 /hotels/editHotel.xhtml hotels/confirmHotel.xhtml common/main.xhtml editHotel newHotel() confirmHotel verifyNewHotel() confirm() Flujo de negocio:Flujo de negocio: caso de usocaso de uso ““inscribir nuevo hotelinscribir nuevo hotel”” f tProceed B Cancel cancel() E main Revise Confirm E Cancel Reglas de navegación de pantallas se describen en archivos de configuración: faces-config.xml, pages.xml
  • 22. 22 pages.xml: reglas de navegación entre pantallas desde cualquier pantalla con la acción newHotel se solicita ir a la pantalla editHotel de entrada al caso de uso en la pantalla editHotel el usuario suministra los datos del nuevo hotel e invoca la acción verifyNewHotel; después va a la pantalla confirmHotel solo si el nuevo hotel es válido <!-- reglas desde cualquier pantalla --> <page view-id="*"> ... <navigation from-action="#{hotelInscription.newHotel}"> <redirect view-id= "/pages/hotels/hotelInscription/editHotel.xhtml"/> </navigation> </page> <!-- reglas desde pantalla editHotel --> <page view-id="/pages/hotels/hotelInscription/editHotel.xhtml" conversation-required="true"> <navigation from-action="#{hotelInscription.verifyNewHotel}"> <rule if="#{hotelInscription.hotelValid}"> <redirect view-id= "/pages/hotels/hotelInscription/confirmHotel.xhtml"/> </rule> </navigation> </page>
  • 23. 23 Ejb de sesiEjb de sesióón para el caso de uson para el caso de uso Atributos: atributos que representan los frameworks de control atributos que son entidades atributo que indica el resultado de validar la nueva entidad Hotel inyección/extracción de atributos @Stateful @Name("hotelInscription") public class HotelInscriptionAction implements HotelInscription { @PersistenceContext private EntityManager em; @In private FacesMessages facesMessages; @In(required=false) @Out(required=false) private Hotel hotel; private boolean hotelValid; public boolean isHotelValid(){ return hotelValid; } @Destroy @Remove public void destroy() {}
  • 24. 24 Servicios: servicios que inician o terminan conversación de inscribir un hotel servicio que valida el nuevo hotel servicio que ingresa el nuevo hotel a la BD @Begin public void newHotel() { hotel = new Hotel(); } public void verifyNewHotel() { if ( ! hotel.getCountry().equals("USA") ) { facesMessages.add ("Only accepts hotels in USA "); return; } if ( ! hotel.getZip().matches("^d*$") ) { facesMessages.add("Zipcode must be numeric"); return; } hotelValid = true; } @End public void confirm() { em.persist(hotel); facesMessages.add("Thank you, your inscription" + " of #{hotel.name} has id #{hotel.id}"); } @End public void cancel(){} }
  • 25. 25 Entidades que participanEntidades que participan en el caso de usoen el caso de uso entidad maestra Hotel @Entity @Name("hotel") @Scope(CONVERSATION) @Table(name="Lodge") public class Hotel implements Serializable { private Long id; private String name; ... private List<Atraction> atractions = new ArrayList<Atraction>(); public Hotel() {} @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } • Observar: – atributo de relación con otra entidad (detalles) – anotación indicando el atributo llave
  • 26. 26 @NotNull @Length (min = 1, max = 50, message = "name is required and must be at most {max} characters long") public String getName() { return name; } public void setName(String name) { this.name = name; } ... @OneToMany(mappedBy="hotel", cascade=CascadeType.ALL) @OrderBy("description asc") public List<Atraction> getAtractions() { return atractions; } public void setAtractions(List<Atraction> atractions) { this.atractions = atractions; } } • Observar: – anotación de validación de un atributo – anotación de relación con otra entidad
  • 27. 27 PantallaPantalla ““editHoteleditHotel”” de edicide edicióón de una entidad Hoteln de una entidad Hotel
  • 28. 28 Expone directamente los atributos de la entidad Hotel ... <div class="label">Name:</div> <div class="input"> <h:inputText id="name" value="#{hotel.name}" required="true" /> <br/> <span class="errors"><h:message for="name" /></span> </div> Hay una zona para los mensajes FacesMessages <div class="entry errors"> <h:messages globalOnly="true" /> </div> Los botones invocan servicios <div class="input"> <t:commandButton id="proceed" value="Proceed" action="#{hotelInscription.verifyNewHotel}" styleClass="button"/>&#160; <s:button value="Cancel" id="cancel" action="#{hotelInscription.cancel}" styleClass="button"/> </div>
  • 29. 29 Validación JSF antes de invocar servicios:
  • 30. 30 C:C: Facilidades para el desarrollo deFacilidades para el desarrollo de aplicaciones Java EE 5aplicaciones Java EE 5
  • 31. 31 Variables en contextos Seam:Variables en contextos Seam: inyecciinyeccióón y extraccin y extraccióón (biyeccin (biyeccióón)n) hotel booking hotels atractions hotelSearching hotelInscription hotelBooking out in entidad lista de entidades ejb de sesión Convenciones Biyección: asociación dinámica, contextual y bidireccional entre las variables de los contextos y los atributos de los componentes
  • 33. 33 Tipos de contextos en Seam: StatelessContext: variables sin estado (como ejbs sin estado); en realidad es un no contexto EventContext: equivale al request context, asociado a pedido JSF PageContext: estado asociado a una pantalla mostrada ConversationContext: unidad de trabajo para el usuario, puede durar varios pedidos SessionContext: asociada a toda la sesión de un usuario BusinessContext: asociado a un proceso de negocio que puede involucrar múltiples interaccionees con múltiples usuarios ApplicationContext: asociado al estado global del servidor
  • 34. 34 Servicios de persistenciaServicios de persistencia del EntityManager (framework EJB3.0)del EntityManager (framework EJB3.0) Invocados desde los ejb de sesión Obtener la referencia al EntityManager por inyección: @PersistenceContext private EntityManager em; insert en la BD una nueva entidad : em.persist(hotel); // el objeto adquiere PK select en la BD una entidad existente, conociendo su PK: Hotel hotel = (Hotel)em.find(Hotel.class, hotelId); select en la BD una entidad existente, cancelando posibles modificaciones en memoria: em.refresh(hotel); update diferido en la BD con modificaciones de una entidad existente (se difiere hasta el commit de la transacción): hotel.setName("Hotel Rey"); em.merge(hotel); delete en la BD de una entidad existente: em.remove(hotel);
  • 35. 35 createQuery(): consulta o actualización en la BD según diversos criterios (EJB QL): select una entidad: Hotel hotel = (Hotel)em.createQuery ("from Hotel h where h.name=:name and h.city=:city") .setParameter("name", "Hotel Rey") .setParameter("city", "Bogota") .getSingleResult(); select una lista de entidades: List<Hotel> theList = em.createQuery ("from Hotel h where h.city = :city") .setParameter("city", ”Bogota") .getResultList(); update una o varias entidades: em.createQuery ("update Hotel h set h.city = :city") .setParameter("city", "Bogota") .executeUpdate(); delete una o varias entidades: em.createQuery ("delete from Hotel h where h.city = :city") .setParameter("city", ”Bogota") .executeUpdate();
  • 36. 36 Otras facilidades importantesOtras facilidades importantes Facilidades de Log proporcionadas por Seam permite mostrar banderas que combinan texto parametrizado y variables de contextos: log.info("Cancel booking: #0 for #{user.username}", booking.getId()); Seguridad por roles por anotaciones se puede proteger un ejb o un servicio particular para que solo pueda ser invocado por un rol particular Cada botón de una pantalla se puede habilitar o mostrar solo para un rol particular Internacionalización: se pueden lograr las siguientes características: el usuario escoge el idioma de su preferencia existe idioma por defecto según localización del usuario los letreros de las pantallas salen en el idioma vigente los mensajes de errores de validación salen en el idioma vigente
  • 37. 37 D:D: Elementos JSF para pantallasElementos JSF para pantallas
  • 38. 38 PantallasPantallas ““faceletsfacelets”” construidas con templates y <div>construidas con templates y <div> Concepto de template: pantalla base que define estructura común de las pantallas reales contiene partes fijas y partes que deben ser redefinidas por cada pantalla ejemplo de estructura de pantalla: banner contentsidebar footer
  • 39. 39 Ejemplo de template: template.xhtml <!-- librerias de etiquetas --> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:t="http://myfaces.apache.org/tomahawk"> <!-- referencia al archivo que define estilos de los div --> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> <title>Hotels reservation system</title> <link href="../css/screen.css" rel="stylesheet" type="text/css"/> </head>
  • 40. 40 <body> <!-- div que define la estructura global de toda pantalla --> <div id="document" > <!-- toda pantalla tiene un banner fijo --> <div id="headerMenu"> <div id="titleMenu"><h4>CincoSOFT framework</h4></div> <div id="statusMenu"> <t:jscookMenu layout="hbr" theme="ThemeIE"> <t:navigationMenuItems value="#{login.menu}" /> </t:jscookMenu> </div> </div> <!-- toda pantalla tiene un contenido variable: las partes sidebar y content deben ser definidos por c/pantalla real--> <div id="container"> <div id="sidebar" style=" width : 150px;"> <ui:insert name="sidebar"/> </div> <div id="content" style="width : 500px;"> <ui:insert name="content"/> <ui:include src="footer.xhtml" /> </div> </div> </div> </body> </html>
  • 41. 41 Pantalla real que se basa en el template: la etiqueta más externa <ui:composition> indica que se usa un template la etiqueta <ui:define> redefine partes variables del template se diseña con <div> que tienen estilos asociados ejemplo: password.xhtml : <!-- librerias de etiquetas e indicacion del template utilizado --> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:s="http://jboss.com/products/seam/taglib" template="../common/template.xhtml"> <!-- definicion de la parte content --> <ui:define name="content"> <div class="section"> <h1>Change Your Password</h1></div> <div class="section"> ... </div> </ui:define> <!-- definicion de la parte content --> <ui:define name="sidebar"> <h1>changePassword use case</h1> </ui:define> </ui:composition>
  • 42. 42 Elementos avanzados de JSFElementos avanzados de JSF Menú jerárquico dinámico: etiqueta <t:jscookMenu>
  • 44. 44 Tabla con scroll y ordenable por columnas : etiqueta <t:dataTable>
  • 45. 45 Tabla editable con validación por celda : etiqueta <t:dataTable>
  • 46. 46 Tablas anidadas : etiqueta <t:dataTable>
  • 47. 47 E:E: MetaMeta--framework para acelerar elframework para acelerar el desarrollo en Java EE 5desarrollo en Java EE 5 (experiencia CincoSOFT)(experiencia CincoSOFT)
  • 48. 48 Su control se apoya en frameworks: JSF, EJB3.0, Seam Debe contener un módulo de seguridad: basado en roles JEE para autenticación y autorización entidades y casos de uso para: cambiar password, manejar perfiles de seguridad (basados en roles), manejo de usuarios e inscripción en perfiles ,... Debe contener los descriptores correctamente configurados Debe disponer de un menú jerárquico que se carga de la BD según perfil del usuario Sus fuentes deben estar organizados por módulos y dentro de cada módulo por casos de uso inicialmente nace solo con el módulo de seguridad Debe disponer de un ANT para compilación, empaque y despliegue Debe manejar logs El esqueleto de una aplicaciEl esqueleto de una aplicacióón Java EE 5n Java EE 5
  • 49. 49 Genera el esqueleto de una aplicación Java EE 5 se apoya en frameworks estándares JEE5: JSF: implementado por Apache Myfaces EJB 3.0: implementado por el servidor JBoss; en el futuro debe operar también con otros servidores (BEA, IBM WebSphere, …) JBoss Seam: acopla JSF y EJB 3.0 JBoss jBPM: workflow otros: Log4j, Quartz, Jasper, …. Además ofrece generadores de esqueletos para agregar a la aplicación: una nueva Entidad un nuevo EJB un nuevo Web-Service una nueva pantalla un nuevo Caso de Uso un nuevo Módulo El Meta-Framework de CincoSOFT no amarra a la aplicación a utilizar permanentemente el Meta-Framework el código generado es claro y documentado organizado según el estándar: por módulos y casos de uso indica secciones que deben ser llenadas por el programador MetaMeta--framework de CincoSOFTframework de CincoSOFT
  • 50. 50 Esqueleto inicial de una aplicaciEsqueleto inicial de una aplicacióón Java EE 5n Java EE 5 generado por el Metagenerado por el Meta--framework de CincoSOFTframework de CincoSOFT Navegador Cliente N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia Servidor Web Servidor de BD N. PresentaciN. Presentacióónn Servidor de componentes BD relacional HTML password.xhtml Module, Usecase, Service, Profile, ProfileService, User, UserProfile, Menu Convenciones: interacción HTTP invocación acceso BD uso de atributos de entidades (get y set) Ejb ChangePassword forward Frameworks JSF, EJB 3.0 y Seam acople mediante descriptores generados por el meta-framework CincoSOFT users.xhtml profiles.xhtml Ejb UserGestion Ejb ProfileGestion ENTIDADES
  • 51. 51 ConclusionesConclusiones Atractivos de Java EE 5: Conciso y eficiente; reduce código a la tercera parte Desaparece JDBC (código burocrático SQL) y varios patrones Integración de múltiples frameworks que ofrecen muchas facilidades: persistencia, seguridad, logs, internacionalización, BPM, testing, ... Pantallas con elementos ricos de interfaz y relativa facilidad de uso: múltiples implementaciones de JSF por Apache MyFaces, Oracle ADF, … Dificultades planteadas por Java EE 5: comenzar de nuevo …. Pérdida del control a un nivel fino de detalle porque los frameworks actúan como cajas negras => dificultad de depurar Actualmente no es soportado por todos los proveedores de la tecnología Java Utilidad de un meta-framework disminuir sustancialmente la curva de aprendizaje acelera el proceso de desarrollo
  • 52. 52 ReferenciasReferencias Libros sobre Java EE 5: • “JavaServer Faces: The Complete Reference”, Mc Graw Hill, 2007. • “Pro EJB 3: Java Persistence API”, Apress, 2006. Fuentes en internet: • http://java.sun.com/javaee/5/docs/tutorial/doc : "The Java EE 5 Tutorial " es el tutorial oficial de Sun (versiones HTML y PDF) • http://labs.jboss.com/portal/jbossseam/docs: Manuales de referencia de JBoss Seam • http://java.sun.com/javaee/technologies/javaee5.jsp: “Get Started with the Java EE 5 SDK": son tutoriales y demos para comenzar • http://java.sun.com/reference/blueprints: Patrones y guías para el desarrollo de aplicaciones Java EE en general