Arquitectura e Introducción a JEE

12
 Arquitectura en La arqu it ec tura el eg i la qu e se v a a es tructurar s Este patrón de arquit de código y en facilitar el propone la división del có un la do co mpo nente s par interacción con el usuario. Capa de presentaci Est a ca pa c ont ien e l respuesta al cliente, las op que es el e nc argado de d usuario c omo l a web a tr a neg ocio p ara realizar cie rta Figura 1:  Arquitectura de 3 Capa de Negocio Arquitectura e In -capas a para el desarr ol lo de una ap li caci ón deter código. ectur a de so ftware f ue dis eñad o pens ando e de sa rr ol lo de ap lic ac ion es y su ma nten imi e igo e n es tas tre s enti dades o ca pas s epar ada a la representación de la información y n a ló gi ca de pr es en tac n que se empl ea p raciones en esta capa son soportadas por el r un acceso visual al sistema a través de és de u n na veg ador. Esta ca pa u tili za l a c a s operaciones. capas basada en Java. roducción a JEE ina la forma en la reutilización nto. Para ello se , definiendo por or otro para la ara generar una contenedor web una interfaz de pa de lógica del

description

Arquitectura e Introducción a JEE

Transcript of Arquitectura e Introducción a JEE

  • Arquitectura en 3

    La arquitectura elegida para el desarrollo de una aplicacin determina la que se va a estructurar su cdigo.

    Este patrn de arquitectura de software de cdigo y en facilitar el desarrollo de aplicaciones y su mantenimiento. Para ello se propone la divisin del cdigo en 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 generarrespuesta 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 lgicnegocio para realizar ciertas operaciones.

    Figura 1: Arquitectura de 3 capas basada en Java.

    Capa de Negocio

    Arquitectura e Introduccin a JEE

    3-capas

    La arquitectura elegida para el desarrollo de una aplicacin determina la que se va a estructurar su cdigo.

    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

    Capa de presentacin

    Esta capa contiene la lgica de presentacin que se emplea para generarrespuesta 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 lgicnegocio para realizar ciertas operaciones.

    Arquitectura de 3 capas basada en Java.

    Introduccin a JEE

    La arquitectura elegida para el desarrollo de una aplicacin determina la forma en

    pensando en la reutilizacin de cdigo y en facilitar el desarrollo de aplicaciones y su mantenimiento. Para ello se

    separadas, definiendo por un lado componentes para la representacin de la informacin y por otro para la

    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 del

  • 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 objeto-relacional 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.

    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,

    JPA 2.1

    Managed Beans 1.0 EJB 3.2

    CDI 1.1 / Interceptors 1.1 / JSR 250 1.1

    Servlet 3.1

    CDIExtensions

    JSP 2.2EL 3.0JSF 2.2

    JAX-RS 2.0

    WebContainerExtensions

    Be

    an

    Va

    lida

    tion

    1.

    1

    JMS 2.0JTA 1.1

  • 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.