Sie sind auf Seite 1von 12

Arquitectura e Introduccin a JEE

Arquitectura en 3-capas
3
La arquitectura elegida para el desarrollo de una aplicacin determina la forma en
la que se va a estructurar su cdigo.
Este patrn de arquitectura de software fue diseado pensando en la reutilizacin
de cdigo y en facilitar el desarrollo de aplicaciones y su mantenimiento. Para ello se
propone la divisin del cdigo en estas tres entidades o capas separadas, definiendo por
un lado componentes para la representacin de la informacin y por otro para la
interaccin con el usuario.

Capa de presentacin
Esta capa contiene la lgica de presentacin que se emplea para generar una
respuesta al cliente, las operaciones en esta capa son soportadas por el contenedor web
que es el encargado de dar un acceso visual al sistema a travs de una interfaz de
usuario como la web a travs de un navegador. Esta capa utiliza la capa de lgica
lgic del
negocio para realizar ciertas operaciones.

Figura 1: Arquitectura de 3 capas basada en Java.

Capa de Negocio

Arquitectura e Introduccin a JEE


Esta capa es la encargada de las reglas del negocio que resuelve o satisface las
necesidades de un dominio en un negocio particular. En esta capa se encuentra en el
servidor de aplicaciones, los componentes de la capa de negocio interactan con la capa
de datos y son normalmente implementados como componentes EJB.

Capa de Persistencia
Esta capa recibe solicitudes de almacenamiento o recuperacin de informacin
por parte de la capa de negocio, en otras palabras esta capa es la encargada de cargar y
modificar la informacin guardada en la base de datos, cuenta con un mecanismo de
conversin de datos relacionales a objetos, se encarga tambin de convertir los datos de
los registros de la base de datos a objetos.

Java EE

Arquitectura e Introduccin a JEE

1.1.1.1. Introduccin a las aplicaciones web


En los ltimos aos el desarrollo de software se ha orientado principalmente a las
aplicaciones web, no slo como fuente de comunicacin a travs de Internet, sino
tambin como forma de distribucin de software empresarial, que sustituye a
aplicaciones tradicionales de escritorio. Los usuarios demandan software dinmico,
actualizable, con un acceso simple, y accesible desde distintos medios, sin necesidad de
complejas instalaciones y costosos mantenimientos. Sin duda, las aplicaciones web son
las que mejor pueden dar una mejor respuesta a estas necesidades.
Podemos definir aplicacin web como una aplicacin informtica distribuida cuya
interfaz de usuario es accesible desde un cliente web, normalmente un navegador web.
Desde el punto de vista de la arquitectura se distinguen dos lados; uno es el del
cliente, donde se encuentra el usuario final utilizando la aplicacin por medio de un
navegador (como Internet Explorer o Mozilla Firefox) y el otro el del servidor, que es
donde residen realmente los datos, reglas y lgica de la aplicacin. A travs del
navegador, el usuario interacta con la aplicacin localizada en el servidor.
Adems de otras ventajas, como las mencionadas anteriormente, las aplicaciones
web utilizan lo que se conoce como clientes ligeros, los cuales no ejecutan demasiadas
labores de procesamiento para la ejecucin, con lo que no se requieren muchos recursos
por parte del cliente, caracterstica que ha favorecido su aceptacin.
A la hora de desarrollar una aplicacin web nos encontramos con gran variedad de
tecnologas de programacin y herramientas, pero la basada en Java es una de las ms
destacadas, demostrando desde su aparicin gran proliferacin y mejoras continuas,
tanto en las libreras de software como en las herramientas disponibles.

1.1.1.2. Origen y evolucin de Java EE


Java [3, 4] apareci a mediados de los aos 90 de la mano de Sun Microsystems,
surgi como un lenguaje de programacin para un amplio rango de aparatos
electrnicos. Estos aparatos tenan diferentes CPU (Control Process Unit) por lo que
era necesario un lenguaje que sirviese para varias plataformas, a esta caracterstica fue a
lo que se denomin portabilidad.

Arquitectura e Introduccin a JEE


La filosofa de Java era perfecta para integrarse en Internet, as que pronto se
utiliz para la creacin de componentes interactivos integrados en pginas web y para la
programacin de aplicaciones independientes.
Desde su lanzamiento, Java no ha dejado de evolucionar desarrollando soluciones
personalizadas para cada mbito tecnolgico; por ello, su entorno de desarrollo, ha
pasado por diferentes versiones, antes de poder hablar de Java 8 lanzada en marzo de
este mismo ao.
Cada uno de estos mbitos ha sido agrupado en una edicin distinta del lenguaje
Java:

Java SE (Java Standard Edition): constituye el entorno bsico de Java,


orientado al desarrollo de aplicaciones independientes y de applets.

Java EE (Java Enterprise Edition): ampla la especificacin de Java SE


para dar soporte a los requisitos de aplicaciones de empresa y est
orientado al desarrollo de aplicaciones distribuidas.

Java ME (Java Micro Edition): se trata de la versin simplificada de


Java SE que contiene una mnima parte de las API (Application
Programming Interface) de Java, y est destinada al desarrollo de
aplicaciones para dispositivos embebidos y electrnicos con una
potencia limitada y posibilidad de conexin a una red.

En este caso vamos a centrarnos en la versin de Java para aplicaciones


empresariales.
Java Enterprise Edition (Java EE), fue lanzado en 1999 con el nombre de J2EE.
Es una plataforma para el desarrollo de aplicaciones empresariales, escalable, robusta,
multiplataforma, bien documentada y madura.
Java EE define varios tipos de componentes:

Applets: componentes de aplicaciones que se ejecutan en un


navegador.

Arquitectura e Introduccin a JEE




Aplicaciones: programas que se ejecutan en un cliente.

Aplicaciones web: servlets, pginas JSP (Java Server Pages) y pginas


JSF (JavaServer Faces) que se ejecutan en un contenedor web y
responden a las peticiones HTTP (Hypertext Transfer Protocol) del
cliente.

Aplicaciones empresariales: EJB (Enterprise JavaBeans), JMS (Java


Message Service), JTA (Java Transaction API), etc. son ejecutadas en
un contenedor EJB.

Java EE se divide en dominios lgicos llamados contenedores. Cada contenedor


tiene una funcin especfica, soporta un conjunto de API y ofrece servicios a los
componentes tales como seguridad, acceso a base de datos, gestin de transacciones,
nombres de directorios, e inyeccin de recursos. Los contenedores ocultan la
complejidad tcnica y mejoran la portabilidad. El contenedor EJB es responsable de
administrar la ejecucin de los beans que contienen la lgica de negocio.
Los contenedores proporcionan servicios subyacentes a sus componentes
desplegados, esto permite al desarrollador centrarse en la lgica de aplicacin en lugar
de resolver problemas tcnicos. Algunos de los servicios que proporciona Java EE se
describen a continuacin:

JTA (Java Transaction API): este servicio ofrece una demarcacin de


transacciones API utilizada por el contenedor y la aplicacin. Tambin
proporciona una interfaz entre el administrador de transacciones y el
administrador de recursos en el nivel Service Provider Interface (SPI).

JPA (Java Persistence API): API estndar para el mapeo de objetorelacional o ORM (Object Relational Mapping). Con JPQL (Java
Persistence Query Language), se puede consultar objetos almacenados
en la base de datos subyacente.

Validacin: el bean de validacin proporciona un nivel de declaracin


de restriccin de la clase y la facilidad de validacin.

Arquitectura e Introduccin a JEE




JMS (Java Message Service): permite que los componentes se


comuniquen de forma asincrnica a travs de mensajes.

JNDI (Java Naming and Directory Interface): esta API, incluida en


Java SE, se utiliza para acceder a los sistemas de nombres y
directorios. La aplicacin se utiliza para asociar (enlazar) los nombres
de los objetos y luego encontrar estos objetos (bsqueda) en un
directorio. Puede buscar fuentes de datos, JMS, EJB y otros recursos.

JavaMail: muchas aplicaciones requieren la capacidad de enviar


correos electrnicos que pueden ser implementadas a travs del uso de
la API JavaMail.

JAX-RS
2.0

JSP 2.2
EL 3.0

JSF 2.2

Servlet 3.1

CDI 1.1 / Interceptors 1.1 / JSR 250 1.1


Managed Beans 1.0
JPA 2.1

EJB 3.2
JTA 1.1

Bean Validation 1.1

CDI
Extensions

Web
Container
Extensions

JMS 2.0

Figura 2: Arquitectura de Java EE 7.

1.1.2. JSF
JSF (JavaServer Faces) es un framework web Java EE de cdigo abierto, basado
en componentes de interfaz de usuario.
Un framework es una estructura software compuesta de componentes
personalizables que permiten desarrollar una aplicacin. Los framework Java EE
facilitan el desarrollo de las aplicaciones, reducen el tiempo del proceso de desarrollo,

Arquitectura e Introduccin a JEE


ayudan a la reutilizacin de cdigo y al uso de patrones, contribuyendo todo ello a
mejorar la calidad del software resultante.
JavaServer Faces facilita la construccin de las aplicaciones web proporcionando
un entorno de trabajo que gestiona las acciones producidas por el usuario en la pgina
HTML y las traduce a eventos que son enviados al servidor con el objetivo de regenerar
la pgina original y reflejar los cambios pertinentes provocados por esas acciones.
JSF oculta al programador los detalles de las peticiones y respuestas HTTP,
simplificando la programacin de aplicaciones web y acercndolas a un estilo de
desarrollo similar al de las aplicaciones de escritorio.
JavaServer Faces es el nico framework que posee una especificacin creada por
JCP (Java Community Process) lo que lo convierte en un estndar. Se ha alimentado de
las experiencias de desarrolladores en otros entornos de trabajos como Structs para
tratar de eliminar las deficiencias que este pueda tener, de hecho, Craig R. McClanahan
conocido por ser creador de Structs ha participado en la especificacin de JSF.
Para las distintas versiones del framework, disponemos de su especificacin
correspondiente:

JSR 127 - JSF1.0 y 1.1

JSR 252 JSF 1.2

JSR 314 JSF2.0

JSR 344 JSF2.2

La versin 2.2 lanzada el 16 de Abril de 2013 introduce soporte a HTML 5, Faces


Flow, Stateless Views y Resource Library Contracts y es la que se ha utilizado en la
programacin del presente proyecto.

1.1.3. PrimeFaces
PrimeFaces es una librera de componentes visuales cdigo abierto para
JavaServer Faces, desarrollada y mantenida por la compaa Prime Technology es
distribuida bajo licencia Apache License Versin 2.0.

Arquitectura e Introduccin a JEE


Esta librera ofrece un conjunto de etiquetas y componentes muy funcionales para
facilitar la creacin de aplicaciones web. Soportoa AJAX (Asynchronous JavaScript
And XML), usa JQuery como framework JavaScript, posee una versin para
dispositivos mviles y cuenta con amplia documentacin.
PrimeFaces por sus caractersticas ha tenido una buena aceptacin y en la
actualidad se presenta como la principal opcin desbancando a otras libreras como
Richfaces y Icefaces.
Actualmente, en su ltima versin 4.0 es compatible con JSF 2.2, situndose
como un referente en la programacin de aplicaciones web.

1.1.4. EJB
Un Enterprise Java Bean (EJB) [6] es un componente del lado del servidor que
encapsula la lgica de negocio de una aplicacin. Permiten construir aplicaciones
portables, reutilizables y escalables usando el lenguaje Java.
Algunas de sus caractersticas ms destacadas y que ayudan a comprender las
funcionalidades de los EJB son las siguientes:

Contienen la lgica de negocio, que opera sobre los datos de la


empresa.

Las instancias de un EJB son administradas en tiempo de ejecucin por


un contendedor.

Los servicios como transaccin y seguridad, pueden ser especificados


junto a la lgica de negocio del bean a travs de anotaciones, o en un
descriptor de despliegue XML.

El acceso del cliente es negociado por el contenedor en el cual el EJB


es desplegado. Este acceso es transparente para el cliente.

El contenedor asegura que los beans y sus clientes pueden ser


desplegados en mltiples ambientes de ejecucin sin compilacin.

El uso de Enterprise Java Beans representa muchos beneficios:

Arquitectura e Introduccin a JEE

Simplifican el desarrollo, ya que el contendor EJB es responsable de la


administracin de transacciones y autorizaciones de seguridad.

La lgica del negocio reside en los Enterprise Beans y no en el lado del


cliente, permitiendo que el desarrollo del lado del cliente este
desacoplado de la lgica del negocio.

Los Enterprise Beans son componentes portables, reutilizables y


pueden ser desplegados en servidores que usen los estndares del API
JEE.

Pueden residir en diferentes servidores y pueden ser invocados por un


cliente remoto.

Es recomendable su utilizacin en aplicaciones multiusuario que se desea que


sean escalables y en las que necesitamos asegurar la integridad de los datos de las
transacciones.
A partir de la versin EJB 3.0 y Java EE5 se simplifica el desarrollo de Enterprise
Java Beans mediante el uso de clases POJO (Plain Old Java Objects) y anotaciones
XML. Lo que hace ms fcil e interesante el uso de EJB en las aplicaciones.

Figura 3: Representacin grfica de un Enterprise Java Bean.

Clasificacin
Los Enterprice Java Beans estn divididos en las siguientes clases:


EJB de sesin o Session Beans: representa los procesos de negocio,


gestionan la interaccin con los clientes, sirviendo de fachada de los
servicios proporcionados por otros componentes disponibles en el

Arquitectura e Introduccin a JEE


servidor. A su vez, los beans de sesin se dividen en varias subclases
como son los Stateless Session Bean, Stateful Session Bean y Singleton
Session Bean que se comentan a continuacin:
Stateless Session Bean: los beans de sesin sin estado son objetos
distribuidos que no mantienen un estado entre diferentes invocaciones
concurrentemente. Estos son normalmente usados para proveer
servicios y son compartidos por varios clientes. Son muy eficientes a
nivel de uso de memoria y recursos en el servidor.
Stateful Session Bean: en los bean de sesin con estado, las variables
de instancia del bean almacenan datos especficos obtenidos durante la
conexin con el cliente. Cada bean, por tanto, almacena el estado
conversacional de un cliente, de forma que acciones llevadas a cabo en
invocaciones anteriores son tenidas en cuenta en invocaciones
posteriores. Son menos eficientes a nivel de uso de memoria y recursos
en el servidor.
Singleton Session Bean: es tipo de bean es introducido en la versin
EJB 3.1 y se trata de un componente que puede ser compartido por
muchos clientes y del que se crea slo una instancia, por lo que son los
ms eficientes en cuanto al uso de memoria y recursos.


EJB dirigidos por mensajes o Message-driven Beans: actan como


escuchadores de eventos y permiten el procesamiento de mensajes de
forma asncrona.

EJB de entidad o Entity Beans: se trata de una clase (POJO) que


representa una tabla de una base de datos, y cada instancia de esta clase
representa un registro de la tabla, es decir, crean un mapeo entre las
propiedades de una clase y los campos de una tabla y permiten
especificar las relaciones que existen entre las clases (uno a uno, uno a
muchos, muchos a uno y muchos a muchos).

1.1.5. JPA

Arquitectura e Introduccin a JEE


Java Persistence API (JPA) proporciona un estndar para gestionar datos
relacionales en aplicaciones Java SE o Java EE que simplifica el desarrollo de la
persistencia de datos.
En su definicin, se han combinado ideas y conceptos de los principales
framework de persistencia, como Hibernate, Toplink y JDO (Java Data Objects), y
versiones anteriores de EJB.
JPA permite la persistencia no solo en bases de datos, sino tambin en otras
estructuras como archivos de texto, planos y XML.
El framework esta divido en 3 reas:

El API de persistencia.

El lenguaje de consulta JPQL Java Persistence Query Language


(JPQL).

El mapeo de los metadatos objeto/relacional.

Entre las caractersticas ms importantes de este framework estn las siguientes:

Manejo de transacciones atmicas.

Utilizacin de clases POJO: una de las caractersticas ms importantes


de JPA es el hecho de que las entidades persistentes son clases POJO,
lo que significa que no hay nada en particular que haga que un objeto
pueda ser persistente ya que el mapeo objeto relacional est basado
completamente en metadatos utilizando anotaciones o definido
externamente usando XML (Extensible Markup Language).

No intrusiva: el API de persistencia existe en una capa separada de los


objetos persistentes. Dicho de otra forma el API no se entromete en el
cdigo del los objetos de las clases persistentes.

Lenguaje de consultas: JPA ofrece un potente lenguaje de consultas


llamado JPQL el cual que ofrece la capacidad de hacer consultas entre
las entidades persistentes y es independiente de la base de datos que se

Arquitectura e Introduccin a JEE


utilice ya que es el framework como tal el que se encarga de construir
las consultas SQL para su ejecucin.


Entidades movibles: las entidades persistentes que maneja JPA tienen


la caracterstica de poder moverse por la red desde una mquina a otra
desconectndose al salir de la capa de negocio lo cual permite hacer
cambios sobre las mismas en otras capas manteniendo la consistencia.

Testeabilidad: ya que JPA puede ser usada en un entorno JSE (Java


Standard Edition) se puede usar en pruebas unitarias junto con
cualquier framework fuera del servidor de aplicaciones.

Das könnte Ihnen auch gefallen