Você está na página 1de 97

@juanitourquiza

Programacion
Orientada a Objetos

Conceptos bsicos de la
tecnologa de objetos
Comenzaremos nuestra introduccin al tema de la orientacin
a objetos con cierta terminologa clave.
En cualquier parte del mundo real puede ver objetos: gente,
animales, plantas, automviles, aviones, edicios,
computadoras, etctera.
Los humanos pensamos en trminos de objetos. Los
telfonos, casas, semforos, hornos de microondas y
enfriadores de agua son slo unos cuantos objetos ms.
Los programas de cmputo, como los programas de que
escribamos, estn compuestos por muchos objetos de
software con capacidad de interaccin.
2
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
En ocasiones dividimos a los objetos en dos categoras:
animados e inanimados.
Los objetos animados estn vivos en cierto sentido; se
mueven a su alrededor y hacen cosas.
Por otro lado, los objetos inanimados no se mueven por su
propia cuenta. Sin embargo, los objetos de ambos tipos tienen
ciertas cosas en comn.
Todos ellos tienen atributos (como tamao, forma, color y
peso), y todos exhiben comportamientos (por ejemplo, una
pelota rueda, rebota, se in a y desina; un beb llora,
duerme, gatea, camina y parpadea; un automvil acelera,
frena y da vuelta; una toalla absorbe agua).
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
Estudiaremos los tipos de atributos y comportamientos que
tienen los objetos de software.
Los humanos aprenden acerca de los objetos existentes
estudiando sus atributos y observando sus comportamientos.
Distintos objetos pueden tener atributos similares y pueden
exhibir comportamientos similares.
Por ejemplo, pueden hacerse comparaciones entre los bebs y
los adultos, y entre los humanos y los chimpancs.

4
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
El diseo orientado a objetos (DOO) modela el software en trminos
similares a los que utilizan las personas para describir objetos del
mundo real.
Este diseo aprovecha las relaciones entre las clases, en donde los
objetos de cierta clase (como una clase de vehculos) tienen las
mismas caractersticas; los automviles, camiones, pequeos
vagones rojos y patines tienen mucho en comn.
El DOO tambin aprovecha las relaciones de herencia, en donde las
nuevas clases de objetos se derivan absorbiendo las caractersticas
de las clases existentes y agregando sus propias caractersticas
nicas.
Un objeto de la clase convertible ciertamente tiene las
caractersticas de la clase ms general automvil pero, de manera
ms especca, el techo de un convertible puede ponerse y quitarse.
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
El diseo orientado a objetos proporciona una manera natural
e intuitiva de ver el proceso de diseo de software: a saber,
modelando los objetos por sus atributos y comportamientos,
de igual forma que como describimos los objetos del mundo
real.
El DOO tambin modela la comunicacin entre los objetos.
As como las personas se envan mensajes unas a otras (por
ejemplo, un sargento ordenando a un soldado que
permanezca rme), los objetos tambin se comunican
mediante mensajes.
Un objeto cuenta de banco puede recibir un mensaje para
reducir su saldo por cierta cantidad, debido a que el cliente ha
retirado esa cantidad de dinero.
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
El DOO encapsula (es decir, envuelve) los atributos y las
operaciones (comportamientos) en los objetos; los atributos y
las operaciones de un objeto se enlazan ntimamente entre s.
Los objetos tienen la propiedad de ocultamiento de
informacin. Esto signi ca que los objetos pueden saber
cmo comunicarse entre s a travs de interfaces bien de
nidas, pero por lo general no se les permite saber cmo se
implementan otros objetos; los detalles de la implementacin
se ocultan dentro de los mismos objetos.

7
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
Por ejemplo, podemos conducir un automvil con efectividad,
sin necesidad de saber los detalles acerca de cmo funcionan
internamente los motores, las transmisiones y los sistemas de
escape; siempre y cuando sepamos cmo usar el pedal del
acelerador, el pedal del freno, el volante, etctera. Ms
adelante veremos por qu el ocultamiento de informacin es
tan imprescindible para la buena ingeniera de software.

8
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
Los lenguajes como Java son orientados a objetos.
La programacin en dichos lenguajes se llama programacin
orientada a objetos (POO), y permite a los programadores de
computadoras implementar un diseo orientado a objetos como un
sistema funcional.
Por otra parte, los lenguajes como C son por procedimientos, de
manera que la programacin tiende a ser orientada a la accin. En C,
la unidad de programacin es la funcin.
Los grupos de acciones que realizan cierta tarea comn se forman
en funciones, y las funciones se agrupan para formar programas. En
Java, la unidad de programacin es la clase a partir de la cual se
instancian (crean) los objetos en un momento dado.
Las clases en Java contienen mtodos (que implementan
operaciones y son similares a las funciones en C) y campos (que
implementan atributos).
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
Los programadores de Java se concentran en crear clases. Cada clase
contiene campos, adems del conjunto de mtodos que manipulan
esos campos y proporcionan servicios a clientes (es decir, otras
clases que utilizan esa clase).
El programador utiliza las clases existentes como bloques de
construccin para crear nuevas clases.
Las clases son para los objetos lo que los planos de construccin,
para las casas. As como podemos construir muchas casas a partir de
un plano, podemos instanciar (crear) muchos objetos a partir de una
clase.
Las clases pueden tener relaciones con otras clases. Por ejemplo, en
un diseo orientado a objetos de un banco, la clase cajero necesita
relacionarse con las clases cliente, cajn de efectivo, bveda,
etctera. A estas relaciones se les llama asociaciones.
@juanitourquiza

10

Conceptos bsicos de la
tecnologa de objetos
Al empaquetar el software en forma de clases, los sistemas de
software posteriores pueden reutilizar esas clases.
Los grupos de clases relacionadas se empaquetan
comnmente como componentes reutilizables.
La reutilizacin de cdigo es un proceso que ahorra tiempo y
esfuerzo; tambin ayuda a los programadores a crear sistemas
ms conables y efectivos, ya que las clases y componentes
existentes a menudo han pasado por un proceso extenso de
prueba, depuracin y optimizacin del rendimiento.

11
@juanitourquiza

Conceptos bsicos de la
tecnologa de objetos
Al empaquetar el software en forma de clases, los sistemas de
software posteriores pueden reutilizar esas clases.
Los grupos de clases relacionadas se empaquetan
comnmente como componentes reutilizables.
Clases,
objetos,es
mtodos
y variables
La reutilizacin
de cdigo
un proceso
quedeahorra tiempo y
instancia
esfuerzo; tambin
ayuda a los programadores a crear sistemas
ms conables y efectivos, ya que las clases y componentes
existentes a menudo han pasado por un proceso extenso de
prueba, depuracin y optimizacin del rendimiento.

12
@juanitourquiza

Clases, objetos, mtodos y


variables de instancia
Al empaquetar el software en forma de clases, los sistemas de
software posteriores pueden reutilizar esas clases.
Los grupos de clases relacionadas se empaquetan
comnmente como componentes reutilizables.
Clases,
objetos,es
mtodos
y variables
La reutilizacin
de cdigo
un proceso
quedeahorra tiempo y
instancia
esfuerzo; tambin
ayuda a los programadores a crear sistemas
ms conables y efectivos, ya que las clases y componentes
existentes a menudo han pasado por un proceso extenso de
prueba, depuracin y optimizacin del rendimiento.

13
@juanitourquiza

Basta con que tu te imagines por ejemplo una persona...


que atributo puede tener una persona o mas bien dicho
caracteristicas...
una persona puede tener:
*Nombre
*Apellido
*Edad
*Estatura
*etc.
ahora bien que acciones realiza una persona:
*caminar
*dormir
*comer
*estudiar
*leer
*etc.

@juanitourquiza

Ejercicio Practico

14

Clase Main (Ejemplo)


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//se declaran las variables que vamos a utilizar
String Nombre="Juan Antonio";
String Apellildo="Ibarra Castro";
int Edad=12;
//se debe de crear una instancia de la clase persona
Persona p=new Persona(Nombre,Apellildo,Edad);
//se muestran los datos de la persona en un mensaje.JOptionPane.showMessageDialog(null,"Nombre Completo:\n"+
p.datos()+"\n"
+ "Edad: "+p.edad()+" aos");
}
}

@juanitourquiza

Clase Main (clase principal)


public class Ejemplo {

15

Clase Persona
class Persona {
String nombre,apellido;
int edad;
//constructor de la clase persona que recibe por parametro el nombre apellido y edad
public Persona(String nombre, String apellido, int edad) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
//metodos que sirvan para obtener y poner los datos de la persona
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}

@juanitourquiza

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}
//metodo que devuelve los datos de la persona
public String datos(){
return this.nombre+"\n"+this.apellido;
}
public int edad(){
return this.edad;
}

16

Es una plataforma de programacin para el Desarrollo de


Aplicaciones Empresariales en el lenguaje Java, un conjunto de
especificaciones y tecnologas desarrolladas por la compaa
Oracle
Integrada por diversas tecnologas y frameworks de cada capa
como Java Server Faces (JSF2), Weld CDI, Enterprise Java
Beans (EJB3) y JPA entre otras (RichFaces, AJAX), dentro de un
mismo conjunto de set de herramientas para el desarrollo de
aplicaciones web y empresariales

@juanitourquiza

Qu es Java EE7?

17

Weld es la implementacin de referencia de la especificacin


CDI (JSR 299): Contextos e inyeccin de dependencias para la
plataforma Java EE7
JBoss Weld est integrado en muchos servidores de
aplicaciones Java EE como WildFly, JBoss Enterprise
Application Platform, GlassFish, Oracle WebLogic y otros. Weld
tambin se puede utilizar en un entorno de Servlet solamente
(Tomcat, Jetty) incluso en un sencillo entorno Java SE

@juanitourquiza

Qu es Weld CDI?

18

Es el estndar de Java para la inyeccin de dependencia y la


gestin del ciclo de vida contextual y una de las partes ms
importantes y populares de la plataforma Java EE7
Un liviano pero a su vez un robusto framework CDI
Desarrollado por JBoss una divisin de Red Hat, para el
desarrollo de Aplicaciones Empresariales basado en la
arquitectura Java EE
Es la evolucin de JBoss Seam

@juanitourquiza

Qu es Weld CDI?

19

Modularidad de Componentes a travs del patrn Inyeccin


de Dependencia (CDI)
Promueve la composicin y modularidad entre las partes que
componen una aplicacin
Plain Old Java Objects mantienen su cdigo limpio, simple y
modular, bajo acoplamiento y alta cohesin
Simplicidad
Las aplicaciones con Java EE7 con Weld son simples y
requieren mucho menos cdigo (Java y XML) para la misma
funcionalidad

@juanitourquiza

Por qu Java EE7 con Weld


CDI?

20

Por qu Java EE7 con Weld


CDI?

AOP (Aspect Oriented Programming)


Paradigma de programacin que permite modularizarlas
aplicaciones y mejorar la separacin de responsabilidades
entre mdulos y/o clases mediante el uso de Interceptores y
Eventos

@juanitourquiza

Capacidad de pruebas unitarias


Dependencias limpias, actualizadas y los justo y necesaria,
aseguran que la integracin con unittestingsea muy simple
con Arquillian

21

Facilidad de configuracin
Se elimina la mayor parte del cdigo repetitivo y la
configuracin de XML a partir de sus aplicaciones y mayor uso
de anotaciones
Soporte a aplicaciones Web con estado
Weld ha sido diseado para aplicaciones Web con estado,
incorpora el concepto de conversacin contextual

@juanitourquiza

Por qu Java EE7 con Weld


CDI?

22

Diseo orientado a interfaces


Programacin basadas en contratos de implementacin,
permitiendo al usuario centrarse en la funcionalidad,
ocultando el detalle de implementacin
Tecnologas
CDI y EJB 3.2 (Lgica de negocio)
JPA, Hibernate, iBates, JDBC (Pesistencia)
JSF2, JBossRichFaces, Ajax, etc(Capa Web)

@juanitourquiza

Por qu Java EE7 con Weld


CDI?

23

Plenamente probado, seguro y confiable


Java EE7 y Weld ha sido probado y utilizado en diversos
proyectos alrededor del mundo, como en Instituciones
Bancarias, Aseguradoras, Instituciones Educativas y de
Gobierno, entre muchos otros tipos de proyectos y empresas
Productividad
Ganancias de productividad y una reduccin en el tiempo de
desarrollo e implementacin utilizando Java EE7 con Weld

@juanitourquiza

Por qu Java EE7 con Weld


CDI?

24

Gestin de configuracin basada en componentes Java Beans


y aplica el principio de Biyeccin de Dependencia para
manejar relaciones entre los objetos, evitando relaciones
manuales y creaciones de instancias explcitas, esto hace un
bajo acoplamiento y alta cohesin, mejorando la reutilizacin
y mantencin de los componentes
Weld en su CORE est basado en un contenedor liviano y
robusto que extiende al contenedor EJB3 (Las Enterprise
JavaBeans (tambin conocidas por sus siglas EJB) son una de
las interfaces de programacin de aplicaciones (API) que
forman parte del estndar de construccin de aplicaciones
empresariales J2EE (ahora JEE) de Oracle
Corporation (inicialmente desarrollado por Sun Microsystems).
y es usado globalmente dentro de nuestra aplicacin

@juanitourquiza

Caractersticas: CDI

25

Este tipo de gestin de la dependencia bidireccional es


ampliamente utilizado en las ms sencillas Aplicaciones. Es lo
que llamamos biyeccinde dependencias, desde y hacia el
contenedor y contexto de Weld

@juanitourquiza

Caractersticas: CDI Biyeccin

26

@juanitourquiza

Caractersticas: CDI Biyeccin

27

Diseado para implementar las mejores prcticas en el mapeo


relacional, sobre todo el ciclo de vida de la interaccin web,
evitando Lazy Initialization Exception
Alta abstraccin por sobre los ORM usando JPA y manejo de
transacciones
Integracin con frameworksde persistencia como Hibernate,
Toplink, OpenJPA, etc

@juanitourquiza

Caractersticas: ORM y
Persistencia

28

La arquitectura MVC es uno de los principales componentes y


tecnologas, y como su propio nombre nos indica implementa
una arquitectura Modelo -Vista Controlador
Separacin de capas utilizando el Framework Java
ServerFaces(JSF2)

@juanitourquiza

Caractersticas: MVC

29

@juanitourquiza

Caractersticas: MVC

30

@juanitourquiza

Arquitectura Java EE7

31

Arquitectura Java EE7

Capa Web: JSF2 simplifica el desarrollo de interfaces de


usuario en aplicaciones Java EE, adems de los frameworks
RichFace o IceFace (UI component) para interfaces ricas de
usuario en la web, Ajax etc.

@juanitourquiza

La arquitectura se compone en distintas capas, cada una tiene


su funcin especfica:

32

Arquitectura Java EE7

Capa de Datos: aqu vamos a encontrar tecnologas JDBC,


ORM (JPA, Hibernate, etc), Datasource y conexiones a bases
de datos

@juanitourquiza

Capa Lgica de Negocio: en esta capa podemos encontrar


tecnologa como los CDI Java Beans (POJOs), EJBs (Dao,
Services etc) y clases Entities

33

Modelo Contextual Weld CDI

Los componentes son objetos con estado, por lo general EJB o


Java Beans
Una instancia de un componente se asocia con un contexto, y
se le da un nombre en ese contexto

@juanitourquiza

Los dos conceptos bsicos en Weld son los conceptos de un


contexto y la nocin de un componente

Los contextos son creados y destruidos por Weld


34

@juanitourquiza

Modelo Contextual Weld CDI

35

Java EE7 con Weld CDI

JBoss Weld es la implementacin de referencia de CDI


(Contextos e inyeccin de dependencia) para la plataforma
Java EE, forma parte del estndar de Java para la
especificacin CDI (inyeccin de dependencia) y el manejo del
ciclo de vida contextual, una de las partes ms importantes y
populares de la plataforma Java EE.

@juanitourquiza

JBoss Weld es una de las principales tecnologas bajo los


estndares de Java EE7, multiplataforma y de arquitectura
multicapa para el desarrollo de aplicaciones empresariales de
la plataforma Java Oracle.

36

Weld es desarrollado y mantenido por JBoss, una divisin de


Red Hat, que adems se integra con tecnologas Enterprise
Java Beans (EJB3) y Java Server Faces (JSF2). Se puede acceder
a cualquier componente CDI desde la capa de presentacin
refirindose a l mediante su nombre de componente.

JBoss es un servidor de aplicaciones Java EE de cdigo abierto implementado en Java puro. Al estar basado en Java, JBoss
puede ser utilizado en cualquier sistema operativo para el que est disponible la mquina virtual de Java. JBoss Inc., empresa
fundada por Marc Fleury y que desarroll inicialmente JBoss, fue adquirida por Red Hat en abril del 2006.
El proyecto se nutre de una red mundial de colaboradores. Los ingresos de la empresa estn basados en un modelo de
negocio de servicios. JBoss implementa todo el paquete de servicios de J2EE.
Las Enterprise JavaBeans (tambin conocidas por sus siglas EJB) son una de las interfaces de programacin de
aplicaciones (API) que forman parte del estndar de construccin de aplicaciones empresarialesJ2EE (ahora JEE) de Oracle
Corporation (inicialmente desarrollado por Sun Microsystems).

@juanitourquiza

Java EE7 con Weld CDI

JavaServer Faces (JSF) es una tecnologa y framework para aplicaciones Java basadas en web que simplifica el
desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnologa que
permite hacer el despliegue de las pginas, pero tambin se puede acomodar a otras tecnologas
como XUL (acrnimo de XML-based User-interface Language, lenguaje basado en XML para la interfaz de usuario)

37

Weld est integrado en la mayora de los servidores de


aplicaciones Java EE como WildFly, JBoss Enterprise
Application Platform (JBoss EAP), GlassFish, Oracle WebLogic y
otros. Weld tambin se puede utilizar en un entorno
Servlet/JSP con Tomcat o Jetty y tambin en entorno Java SE.
A grandes rasgos, un framework es un conjunto de
componentes, APIs y de clases que nos permiten resolver un
problema en especfico, que ya tiene resuelto el tema del
diseo y de la arquitectura. En el caso particular de Java EE7
con Weld CDI + JSF2 + JPA2, nos permite resolver muchos de
los problemas que se presentan al desarrollar aplicaciones
con tecnologa JEE (Persistencia, Mvc, Inyeccin de
Dependencia, AOP, Interfaces de usuarios etc., con bajo
acoplamiento y alta cohesin etc).

@juanitourquiza

Java EE7 con Weld CDI

38

El desarrollo es a travs del uso de la herramienta JBoss Tools,


que es un conjunto de plug-ins diseados para el entorno
integrado de desarrollo Eclipse. Adems puede ser integrado
con los componentes de interfaces de usuarios Jboss
RichFaces o con ICEFaces.
JBoss Weld es la evolucin de framework JBoss Seam creado
por Gavin King, el inventor de la tecnologa ms popular de
ORM (Hibernate), lo que le permite estar diseado para
ejecutar las mejores prcticas en el mapeo relacional.
Adems, puesto que integra la capa del ORM con las capas de
negocio y presentacin, podemos visualizar los objetos ORM
directamente, validar sobre la base de datos, mediante el uso
de las anotaciones sobre los formularios de entrada, y redirigir
las excepciones ORM a pginas de error por defecto.

@juanitourquiza

Java EE7 con Weld CDI

39

La pgina oficial de JBoss Weld es http://weld.cdi-spec.org


donde se pueden encontrar todos los proyectos relacionados
con dicha tecnologa. Es utilizado en proyectos muy diversos,
como puede ser en Instituciones Bancarias, Aseguradoras,
Instituciones Educativas y de Gobierno, entre muchos otros
tipos de proyectos y empresas.
Weld permiti simplificar el desarrollo JEE al utilizar clases
Java Simples (POJO Plain Old Java Object) para la
configuracin de servicios. Debido a que muchos proyectos
muestran las mismas tareas a realizar una y otra vez, tales
como Localizacin de Servicios, Manejo de Transacciones,
Manejo de Excepciones, Parametrizacin de la aplicacin,
entre muchos ms.

@juanitourquiza

Java EE7 con Weld CDI

40

Weld conecta los componentes POJO, mediante un patrn de


diseo popular conocido como la dependencia de inyeccin
(DI). Bajo este esquema, el framework gestiona el ciclo de vida
de todos los componentes. Cuando un componente tiene que
usar otro, se declara esta dependencia en el contexto CDI de
Weld, mediante anotaciones. El contenedor CDI determina
dnde conseguir este componente dependiente basndose en
el estado actual de la aplicacin y lo "inyecta" en el
componente que ha realizado la peticin.

@juanitourquiza

Java EE7 con Weld CDI

41

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

42

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

43

Portabilidad
Las aplicaciones se ejecutan en el Servidor de Aplicaciones JBoss
Wildfly, o bien en JBoss Enterprise Application Platform (JBoss
EAP) y en otros servidores de aplicaciones Java EE, tales como
Glassfish etc., as como tambin en Apache Tomcat.

Capacidad de pruebas unitarias


Dependencias limpias, actualizadas y los justo y necesaria,
aseguran que la integracin con unit testing sea muy simple.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

44

Weld se compone de distintos componentes, permitiendo


seleccionar solo algunos de ellos o todos, dependiendo de la
naturaleza de la aplicacin. En la figura podemos observar
algunos de los componentes o mdulos principales de JBoss
Weld. A continuacin listaremos varios de ellos:

Contexts: Este mdulo provee los diferentes contextos o


alcances que tiene el Framework, entre ellos tenemos a
Stateless context, Request context, Conversation context,
Session context y Application context.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

45

Components: Los components son POJOs (Plain Old Java


Objects) con un ampliouso de anotaciones del estndar de
Java EE7, Especificacin CDI (Weld) y Especificacin EJB3. En
particular, JavaBeans o EJB 3.2. No necesariamente tienen que
ser componentes EJB3, tambin pueden ser JavaBeans
(POJOs) que pueden ser utilizados sin la necesidad de un
contenedor compatible con EJB3 (o servidor de aplicaciones),
por ejemplo se podra usar un componente JavaBeans que no
sea un EJB y anotar como un componente CDI y ser utilizado
en un contenedor Tomcat o Jetty. Pero sin embargo Java EE7
con CDI Weld fue diseado con EJB 3.2 en mente e incluye una
profunda integracin con este.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

46

Interseptors: Permite aplicar los conceptos de Programacin


Orientada a Aspectos (AOP), adems incluye clases de soporte
para el manejo transaccional, logger, la seguridad, entre varias
clases ms, permitiendo desacoplar estas caractersticas de
nuestra aplicacin. Adems nos permite desarrollar
interceptores de mtodo y puntos de corte para desacoplar el
cdigo de las funcionalidades transversales.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

47

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

Web Services: Permite el desarrollo e integracin con


tecnologas como RestFul con JBoss RestEasy y SOAP handler.

@juanitourquiza

Object/Relational Mapping: Permite integrarse con


tecnologas JPA2 con las implementaciones o proveedores de
Hibernate, EclipseLink, OpenJPA y otros.

48

Picketlink Security: Una poderosa herramienta de


autenticacin basada en JAAS, altamente configurable y un
framework de control de acceso con Identity
Management con usuarios, roles y reglas basadas en permisos
ACL (Lista de control de acceso). Es uno de los proyectos de
JBoss ms maduros y ampliamente utilizados.
Capa Web: Permite el desarrollo y la integracin con
tecnologas como JSF2 a travs de controles (JSF controls),
RichFace, entre otros.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

49

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

Web Services: Permite el desarrollo e integracin con


tecnologas como RestFul con JBoss RestEasy y SOAP handler.

@juanitourquiza

Object/Relational Mapping: Permite integrarse con


tecnologas JPA2 con las implementaciones o proveedores de
Hibernate, EclipseLink, OpenJPA y otros.

50

Picketlink Security: Una poderosa herramienta de


autenticacin basada en JAAS, altamente configurable y un
framework de control de acceso con Identity Management
con usuarios, roles y reglas basadas en permisos ACL (Lista de
Capa Web: Permite el desarrollo y la integracin con
tecnologas como JSF2 a travs de controles (JSF controls),
RichFace, entre otros.

@juanitourquiza

Las cuatro claves de beneficios


de Java EE7 y Weld CDI

51

La arquitectura de una aplicacin empresarial en Java se


compone de distintas capas, tiene varias ventajas, como son
separacin de responsabilidades, un mejor mantenimiento a la
aplicacin, especializacin de los programadores en cada capa,
entre muchas ms. Java EE7 integrado con tecnologas CDI
(Weld), JSF2, EJB3, JPA2 resuelve varios problemas de distintas
capas, desde la capa de presentacin con JSF2, la capa de
negocio con CDI (Weld) + EJB3 y la capa de datos con JPA2. A
continuacin mencionaremos cada una de las capas de una
aplicacin multicapas.

@juanitourquiza

Arquitectura

52

Capa Cliente o Web: la capa web que puede residir en un


servidor web o de aplicaciones, bsicamente JavaServer Face 2
(JSF2) que simplifica el desarrollo de interfaces de usuario en
aplicaciones Java EE. JSF2 usa JavaServer Pages (JSP) como la
tecnologa que permite presentar (desplegar) las pginas,
adems de los frameworks RichFace o IceFace (UI component)
que proponen y agregan un set de controles y componentes
avanzados para JSF.
Capa de Negocio: en esta capa podemos encontrar tecnologa
como son los Java Beans (POJOs) como componentes CDI
(anotados con @Named), Enterprise Java Beans (EJBs) o clases
Entities beans.

@juanitourquiza

Arquitectura

53

Arquitectura

@juanitourquiza

Capa de Datos: aqu vamos a encontrar tecnologas como


JDBC, JPA, Hibernate, entre otras. Este cdigo nos va a
permitir comunicarnos con nuestra base de datos para leer y
almacenar informacin en ella.

54

Java EE7 se prueba constantemente mediante tcnicas de test


unitario de Java por ejemplo con Arquillian de JBoss, desde el
principio, con estrictos requisitos en materia de calidad de
cdigo para asegurarse de que todo el cdigo contribuido no
slo ha sido objeto testeado, adems de ser estable y fcil de
extender y de mantener.
Con todo esto buscan garantizar que podemos crear nuestras
propias aplicaciones a partir de Java EE7.

@juanitourquiza

Plenamente probado, seguro y


confiable

55

Software Necesario
Antes de comenzar necesitaremos descargar e instalar las
siguientes aplicaciones en nuestro equipo.
Java Platform (JDK) versin 7.0, 8.0 o superior
(http://www.oracle.com/technetwork/java/javase/downloads
/index.html)
Eclipse como Entorno de desarrollo integrado
(http://www.eclipse.org/downloads/)
JBoss Tools (http://www.jboss.org/tools)
WildFly (Servidor de Aplicaciones de JBoss)
(http://wildfly.org/downloads/)

@juanitourquiza

Instalacin y Configuraciones

56

Sistemas operativos que podemos usar


Windows (XP, Vista, 7, etc)
Solaris x86, Solaris Sparc
Linux
Mac OS X

@juanitourquiza

Instalacin y Configuraciones

57

@juanitourquiza

Instalacion del JDK

58

Para continuar con la


descarga clic en
aceptar los trminos
y condiciones
"Accept License
Agreement.

@juanitourquiza

Instalacin y Configuraciones

59

Luego de hacer Clic en


'Accept License
Agreement '
seleccionar el archivo
para descargar Java SE
Development Kit
dependiendo de
nuestra la Plataforma
o Sistema Operativo
(x86 o x64).

@juanitourquiza

Instalacin y Configuraciones

60

Instalacin Java
Instalamos JDK con
las configuraciones
por defecto.
Haga doble clic jdk-8windows-x64.exe
(para Windows) para
ejecutar la
instalacin.
Tambin se debe
instalar el JRE.

@juanitourquiza

Instalacin y Configuraciones

61

Ahora vamos a Descargar Eclipse que es el IDE que vamos a


utilizar para desarrollar aplicaciones con Java EE7, entonces
usando un navegador como Firefox o Google Chrome, nos
vamos a la pgina oficial.
1. Seleccionamos el Sistema Operativo.
2. Descargamos Eclipse IDE for Java EE Developers, 32 o 64 Bit
segn sea nuestro caso.

@juanitourquiza

Descargar y descomprimir
Eclipse IDE

62

@juanitourquiza

Descargar Eclipse

63

La instalacin es bastante sencilla, simplemente se


descomprime:
Guardar en un directorio local de su eleccin.
Descomprimirlo con winrar, winzip o bien pueden utilizar "tar
xvf <nombre-archivo-zip>".
O bien puede utilizar la utilidad jar, como se muestra a
continuacin. (La utilidad jar viene con el JDK).
Observe cmo se crea el directorio eclipse al descomprimir.
Tenga en cuenta que hay un archivo ejecutable, eclipse.exe
(para la plataforma Windows) en el directorio
"eclipse\eclipse.exe".

@juanitourquiza

Instalacin Eclipse

64

Ejecute el archivo
ejecutable haciendo
doble clic en l:
<Eclipse_Directorio_D
escomprimido>/eclips
e/eclipse.exe (para
Windows) o
<Eclipse_Directorio_D
escomprimido>eclipse
/eclipse.sh (para
Linux/Mac OS).

@juanitourquiza

Instalacin Eclipse

65

Luego aparecer una ventana


para seleccionar el workspace
(espacio de trabajo), que es
el directorio donde se
guardaran nuestros
proyectos Java EE7.
Para el campo workspace,
seleccionar el que viene por
defecto o bien elegir un
directorio diferente.
Si seleccionamos la casilla o
checkbox Use this as the
default and do not ask again
no nos volver a preguntar
ms sobre el workspace.
Clic en OK.

@juanitourquiza

Instalacin Eclipse

66

Finalmente hacemos
un clic en
Workbench, para
comenzar a usarlo:

@juanitourquiza

Instalacin Eclipse

67

JBoss Tools es un plugin para Eclipse que est diseado para


crear aplicaciones para Java EE7 con Weld CDI de forma
confiable, robustas y rpidas.
JBoss Tools extiende las funcionalidades de Eclipse para que se
puedan configurar y crear rpidamente nuevos proyectos
usando maven, crear interfaces de usuario (UI) usando JSF2 y
RichFace, aadir componentes CDI, depurar cdigo, e incluso
exportar con el fin de distribuir la aplicacin en los diferentes
servidores.

@juanitourquiza

Instalando JBoss Tools plugin en Eclipse IDE

68

Desarrollar aplicaciones Java EE7 con Eclipse es altamente


recomendado, una de las mejores opciones disponibles del
mercado y sin duda es la manera ms rpida y robusta.
Adems entre muchas cosas tiene un excelente wizard para
crear aplicaciones guiadas, as como la integracin con otras
tecnologas como Servidores de aplicaciones, en nuestro caso
WildFly, los editores de XML personalizados, y el panel de
depuracin, JBoss Tools da un impulso importante en el
desarrollo de aplicaciones Java.

@juanitourquiza

Instalando JBoss Tools


plugin en Eclipse IDE

69

@juanitourquiza

Iniciando Eclipse

70

@juanitourquiza

Eclipse versin Luna

71

Luego aparecer una ventana para seleccionar el workspace


(espacio de trabajo), que es el directorio donde se guardaran
nuestros proyectos de Eclipse.
Para el campo workspace, seleccionar el que viene por
defecto o bien elegir un directorio diferente.
Si seleccionamos la casilla o checkbox Use this as the default
and do not ask again no nos volver a preguntar ms sobre
el workspace.
Clic en Aceptar.

@juanitourquiza

Eclipse

72

@juanitourquiza

Instalacin workspace

73

Instalacin JBoss Tools

@juanitourquiza

Luego iniciamos el proceso de instalar y configurar el plug-in


JBoss Tools como un nuevo software para el Eclipse.
Haga clic en Help (Ayuda) en el men de nivel superior.
Seleccione Intall New Software.

74

Instalacin JBoss Tools

@juanitourquiza

Agregamos un nuevo repositorio (JBoss Tools) para el IDE de


Eclipse. Un repositorio es un software que est en continua
mantencin y actualizacin.
Clic en el botn Add

75

Observe que aparece la ventana de dilogo Add Repository.


Para el campo Name, introduzca JBoss Tools (o un nombre a
eleccin).
Para el campo Location, escriba
http://download.jboss.org/jbosstools/updates/developmen
t/luna/
Nota: la URL anterior es para descargar JBoss tools para la
versin de Eclipse Luna, actualmente Luna es muy reciente y la
versin de JBoos tools es beta (Development), si la versin de
eclipse es diferente, por ejemplo Eclipse Kepler, slo tienen
que ir a la siguiente pgina oficial de JBoss Tools y seleccionar
la versin adecuada para Eclipse y seguir las instrucciones de
instalacin que son similares a la propuesta aqu para Eclipse
Luna: http://www.jboss.org/tools/download

@juanitourquiza

JB Tools

76

@juanitourquiza

Instalacin JB Tools

77

i. Context and Dependency Injection Tools


ii. JBoss Tools JSF
iii. JBoss Tools RichFaces
iv. JBossAS Tools

Luego se debe aplastar en NEXT

@juanitourquiza

Instalacin JB Tools

78

@juanitourquiza

Instalacin JB Tools

79

@juanitourquiza

Instalacin JB Tools

80

@juanitourquiza

Instalacin JB Tools

81

Despus de descargar y
obtener todos los
componentes y plugins,
es posible que aparezca
un mensaje de
advertencia indicando
que hay libreras (jar) sin
firmar. No dar
importancia ya que es
normal, simplemente
aceptar la advertencia y
continuar.

@juanitourquiza

Instalacin JB Tools

82

Al finalizar la
instalacin aparecer
una ventana para
reiniciar el IDE, apara
que tengan efectos
los nuevos
componentes
instalados.

@juanitourquiza

Instalacin JB Tools

83

Descargar e instalar
Servidor de
Aplicaciones JBoss
Wildfly
Descargar Servidor
wildfly usando un
browser, ir a la
pgina oficial.
Click en la pestaa
Downloads

@juanitourquiza

Instalar Widfly

84

Descargar la ltima
versin Final.
Descargar la ltima
versin para Java
EE7 Full & Web
Distribution.

@juanitourquiza

Instalar Widfly

85

Descomprimirlo en un directorio de su eleccin.


o Descomprimirlo en un directorio de eleccin con winrar,
winzip, tar xvf u otro.
Por ejemplo C:\Weld o C:\JavaEE7 o
C:\download\weld
Observe que se crea el directorio wildfly-8.1.0.Final/.

@juanitourquiza

Instalar Widfly

86

Luego necesitamos
revisar que este todo
configurado en el
Eclipse respecto al
JRE con el JDK que
tengamos instalado
en nuestro equipo,
como se muestra a
continuacin.
Abrir Preferences

@juanitourquiza

Configurando el JDK en
Eclipse

87

Agregar una nueva


instalacin del JRE
incluyendo JDK.
En la Izquierda,
pestaas: Java>Installed JREs->Clic
en botn Add.

@juanitourquiza

Configurando el JDK en
Eclipse

88

@juanitourquiza

Configurando el JDK en
Eclipse

89

@juanitourquiza

Configurando el JDK en
Eclipse

90

@juanitourquiza

Configurando el JDK en
Eclipse

91

@juanitourquiza

Configurando el Servidor de
Aplicaciones JBoss Wildfly
en Eclipse

92

Luego seleccionamos el
servidor de aplicaciones
de ejecucin (Define a
New Server)
Expandimos en JBoss
Community
Seleccionamos la
versin Wildfly 8.x
Runtime
(correspondiente a la
descarga)
Clic Next >

@juanitourquiza

Configurando el Servidor de
Aplicaciones JBoss Wildfly
en Eclipse

93

@juanitourquiza

Configurando el Servidor de
Aplicaciones JBoss Wildfly
en Eclipse

94

Observe la ventana para


seleccionar la ruta del
servidor WildFly 8.x
Runtime.
Clic en el botn Browse...
Busca y selecciona el
directorio donde tenemos
el WildFly 8.x
En JRE nos aseguramos
de seleccionar un JDK:
JDK1.7.x o JDK1.8.x
Clic Finish

@juanitourquiza

Configurando el Servidor de
Aplicaciones JBoss Wildfly
en Eclipse

95

@juanitourquiza

Configurando el Servidor de
Aplicaciones JBoss Wildfly
en Eclipse

96

En esta primera parte logramos instalar y configurar Java


Platform (JDK), luego descargamos e instalamos el IDE
Eclipse junto con configurar el plugins JBoss Tools. Adems
descargamos y descomprimimos el Servidor de Aplicaciones
de JBoss Wildfly junto con configurarlo en eclipse como
Servidor Runtime por defecto.
Estamos listos para continuar con la siguiente etapa que es
crear una aplicacin "Hola Mundo" con Java EE7 y Weld!

@juanitourquiza

Resumen

97

Você também pode gostar