Download TEMA XX - oposcaib

Document related concepts
no text concepts found
Transcript
TEMA 54 – JEE
TEMA 54 – La arquitectura JEE
Índice
1 Introducción................................................................................................................................2
1.1 Tecnología JAVA________________________________________________________________3
1.2 Las plataformas Java_____________________________________________________________3
2 La plataforma JEE......................................................................................................................4
2.1 Modelo distribuido multicapa______________________________________________________4
2.2 Gestión de componentes basada en contenedores______________________________________5
2.2.1 Tecnologías de componentes........................................................................................................................6
2.2.2 Tecnologías de servicio................................................................................................................................6
2.2.3 Tecnologías de comunicación......................................................................................................................7
3 Componentes de la Plataforma JEE...........................................................................................8
3.1 EJB –Enterprise JavaBeans-_______________________________________________________8
3.2 SERVLETS_____________________________________________________________________9
3.3 JSP – Java Server Pages-_________________________________________________________10
4 Diversos escenarios de aplicación.............................................................................................11
4.1 Aplicación web-básica___________________________________________________________11
4.2 Aplicación centrada en web______________________________________________________11
4.3 Aplicación web mediante MVC___________________________________________________11
4.4 Aplicación independiente_________________________________________________________11
Página 1 de 11
TEMA 54 – JEE
1
Introducción
En la década de los 90, la arquitectura predominante para el desarrollo de aplicaciones
era la de cliente/servidor con clientes pesados. El servidor era una base de datos, a la
cual accedían los clientes que se encargaban de ejecutar la lógica de negocio y la
representación del interfaz de usuario. Se utilizaban tecnología como Visual Basic +
Sql Server, Delphi...
A finales de los 90, el desarrollo de aplicaciones corporativas sufrió una revolución con
el uso de las tecnologías de web para desarrollarlas.
Las aplicaciones web tienen una arquitectura diferente, una arquitectura multicapa,
generalmente 3 capas, y utilizan como cliente en la máquina del usuario un programa
“estándar” el navegador web.
Las ventajas de construir este tipo de aplicaciones son:
o Reducción de costes de mantenimiento:
♦ La administración de la aplicación se realiza de forma centralizada en los
servidores.
♦ El navegador web es un programa que viene por defecto en la mayoría
de SO, no tiene costes de adquisición y un coste de mantenimiento bajo.
o Las tecnologías web son tecnologías abiertas, basadas en estándares, esto
permite que:
♦ Se reduzcan las dependencias con los proveedores. Las aplicaciones
pueden operar sin problemas con aplicaciones de otros fabricantes.
♦ Independiente de la plataforma. Existen aplicaciones de soporte para
aplicaciones web para todo tipo de plataformas: Windows, Linux, Unix...
o Movilidad: Permiten que cualquier usuario conectado a la red LAN de la
organización pueda acceder a ellas (Intranet). Si se conecta la red LAN a
Internet, y se da acceso a las aplicaciones, cualquier usuario del mundo
conectado a Internet, puede acceder a las aplicaciones (Extranet).
Página 2 de 11
TEMA 54 – JEE
1.1
Tecnología JAVA
La tecnología líder para el desarrollo de aplicaciones web es la tecnología Java de la
empresa SUN. SUN ha desarrollado y liberalizado una especificación estándar para
crear las aplicaciones de soporte –Middleware- que da soporte a las aplicaciones web
portables y multiplataformas.
La tecnología de SUN se basa en el lenguaje Java, un lenguaje de programación
orientado a objetos de uso general, que posee una poderosa API para el desarrollo de
aplicaciones Web.
Al compilar un fichero Java, se genera un fichero escrito en lenguaje ByteCode, un
lenguaje de bajo nivel. El código ByteCode es interpretado por la máquina virtual de
Java –JVM-. La JVM permite independizar la ejecución del programa de la plataforma y
el SO, y protege al ordenador de fallos del programa.
El uso de la JVM permite la portabilidad de los programas copilados, pues cualquier
plataforma que tenga la JVM puede ejecutar el mismo fichero en ByteCode, y una
mayor seguridad en la ejecución, pues ésta es controlada por la JVM.
Las especificaciones de la plataforma Java son públicas, por ello, existen una gran
variedad de plataformas Java de fabricantes diferentes, incluso existen plataformas de
código libre muy buenas.
1.2
Las plataformas Java
Existen tres especificaciones diferentes de la plataforma de ejecución de aplicaciones
Java:
•
Java Micro Edition –JME-. Plataforma para aplicaciones para dispositivos como
PDA o móviles.
•
Java Standard Edition –JSE-. Plataforma estándar de Java.
•
Java Enterprise Edition –JEE-. Es la plataforma para aplicaciones
empresariales. Basada de la plataforma JSE pero con más funcionalidades.
Actualmente JEE se encuentra en la versión 1.5. En las versiones anteriores, JEE se
denominaba J2EE.
Cada especificación de una plataforma se compone de:
•
Una especificación de cómo debe ser el servidor de aplicaciones.
•
Una especificación de librerías de desarrollo que deben acompañar al servidor.
Las especificaciones son libres, por ello existen implementaciones de diferentes
fabricantes (Oracle, SUN, IBM…)
Página 3 de 11
TEMA 54 – JEE
2
La plataforma JEE
La plataforma JEE (Java Enterprise Edition) representa un modelo estándar para el
desarrollo y despliegue de aplicaciones corporativas. Utilizado principalmente para
crear componentes modulares dentro de los servidores de aplicaciones.
Provee de soluciones para el desarrollo de aplicaciones extensas y distribuidas, en
entornos heterogéneos y consigue que las aplicaciones sean escalables, fiables y
seguras.
Las características de la plataforma son:
2.1
Modelo distribuido multicapa
La plataforma JEE ofrece un modelo de aplicación distribuido multicapa. Esto significa
que varías partes de una aplicación pueden ejecutarse de forma independiente,
frecuentemente en equipos diferentes.
Las aplicaciones JEE organizan las aplicaciones en tres capas:
♦ La capa cliente: Es la parte que interactúa con el usuario (Navegadores Web,
aplicaciones de escritorio…). JEE no establece ninguna tecnología específica
para los componentes de la capa de cliente.
♦ La capa central: Contiene el software encargado de gestionar las peticiones de
los usuarios, ejecutar la lógica de negocio y gestionar el acceso a los datos.
♦ La capa de datos: Son los sistemas de almacenamiento de la información
corporativos, generalmente bases de datos. JEE contiene la tecnología
necesaria para conectarse a estos sistemas.
Cliente
EJB
Cliente
Contenedor EJB
EJB
Firewall
Cliente
Cliente
Capa Cliente
Contenedor Web
(Páginas JSP,
Servlets, HTML,
XML...)
JNDI
JMS
JavaMail
Capa Central
Página 4 de 11
Sistemas de
información de
la Empresa
(Bases de Datos,
Sistemas
heredados...)
Capa de datos
TEMA 54 – JEE
2.2
Gestión de componentes basada en contenedores
Los componentes de una aplicación JEE se ejecutan dentro de unos contenedores.
Los contenedores son entornos de ejecución estandarizados que ofrecen servicios a
los componentes. Al diseñar un componente, se sabe que dispondrán de estos
servicios en cualquier plataforma JEE. Por ejemplo, Los contenedores EJB ofrecen la
posibilidad de gestionar las transacciones por el contenedor.
Además, los contenedores ofrecen un mecanismo para configurar una aplicación una
vez implementada, utilizando descriptores de despliegue (ficheros XML que especifican
el comportamiento de los componentes).
El uso de descriptores de despliegue facilita la administración de las aplicaciones. Los
componentes se pueden configurar sin tener que recompilar las aplicaciones. Las
características que se pueden configurar en tiempos de despliegue incluyen:
seguridad, control de transacciones, fuentes de datos (DataSources), constantes de
despliege….
Página 5 de 11
TEMA 54 – JEE
Tecnologías de la plataforma JEE
Las tecnologías que componen el modelo JEE se pueden agrupar en tres categorías:
componentes, servicios y comunicaciones.
2.2.1 Tecnologías de componentes
Son las tecnologías usadas para desarrollar los elementos de una aplicación
corporativa. Una aplicación JEE se desarrolla como un conjunto de módulos con pocas
dependencias entre ellos.
La tecnología de componentes permite:
♦ Permite reutilizar los módulos en otras aplicaciones,
♦ Simplificar la programación de aplicaciones (técnica de divide y vencerás) y
♦ Permite configurar componentes de forma externa (ficheros de despliegue).
JEE está centrado en el desarrollo de los componentes de la capa central de la
aplicación. En esta capa aparecen dos tipos de componentes, que se ejecutan en
contenedores diferentes.
Por un lado los componentes orientados a la web, los Servlets y JSP
Estos componentes se encargan de atender las peticiones del cliente y generar la
respuesta adecuada. Generalmente una página html o documento XML. Para
generar el resultado pueden llamar a otros componentes.
Por otro lado, los componentes de la lógica de negocio, los EJB
Con estos componentes se implementa la lógica de negocio y el acceso a datos de
la aplicación. Los temas de escalabilidad y seguridad se gestionan en el servidor.
Los componentes básicos los explicaré en un apartado posterior.
2.2.2 Tecnologías de servicio
Son los servicios ofrecidos por los contenedores a los componentes de la aplicación.
Gracias a estos servicios, no es necesario desarrollarlos en las aplicaciones.
Los principales servicios son:
Arquitectura de conectores
La plataforma JEE dispone de un API estándar para conectar la plataforma JEE a los
Sistemas de Información (SI) de la empresa que no sean JEE.
La arquitectura define de mecanismo para la integración de estos SI con las
aplicaciones corporativas JEE.
Con el uso de esta arquitectura se evita tener que hacer un desarrollo particular para
conectar las aplicaciones JEE a cada tipo diferente de Sistema de Información.
El servidor JEE posee un conector estándar, accesible por cualquier aplicación. Cada
SI debe disponer también de un conector que cumpla el estándar del API. Si se
configuran ambos conectores para trabajar juntos, las aplicaciones pueden acceder al
SI de forma transparente.
Aplicación
JEE
Conector
estándar JEE
Página 6 de 11
Conector
fabricante
Sistema de
información
TEMA 54 – JEE
API JDBC – Java DataBase ConnectionLa API JDBC ofrece conectividad entre la plataforma JEE y un amplio abanico de
almacenes de datos. La tecnología JDBC permite a los componentes de una
aplicación:
•
Conectar y autenticar contra un servidor de base de datos
•
Enviar expresiones SQL a un motor de base de datos su ejecución
•
Ejecutar procedimientos almacenados, Gestionar transacciones
El uso de JDBC permite el uso uniforme de bases de datos heterogéneas. El código de
acceso a la BBDD es independiente de su tecnología.
JNDI (Java Naming and Directory Interface)
La API JNDI proporciona funcionalidad de acceso a un servicio de directorio. Ofrece
métodos para realizar operaciones estándar de directorio, tal y como asociar atributos
con objetos y buscar por objetos usando sus atributos. Usando JNDI, una aplicación
puede guardar y recuperar cualquier tipo de objeto Java.
Por ejemplo, en el JNDI se guarda el “DataSource” que hace referencia a la BBDD que
usa la aplicación. Cambiando la referencia en el JNDI, se puede cambiar de BBDD sin
tener que tocar el código de la aplicación.
Las aplicaciones JEE pueden usar JNDI para acceder a diferentes servicios de nombre
y directorio, como LDAP o DNS. Independientemente de su implementación.
2.2.3 Tecnologías de comunicación
Son las tecnologías que proporcionan un mecanismo para las comunicaciones entre
los clientes y los servidores y entre objetos ubicados en distintos servidores. La
especificación JEE requiere apoyo por el siguiente tipo de tecnologías:
•
Protocolos de Internet: El estándar JEE establece que los sistemas que le dan
soporte implementan los protocolos de comunicación TCP/IP
•
Protocolos de invocación remota de métodos (RMI): Es un conjunto de APIs
que permiten a los desarrolladores construir aplicaciones distribuidas Java.
Permite definir objetos remotos y conseguir realizar invocaciones remotas de
métodos.
Protocolos del Object Management Group (OMG): JEE necesita disponer de
de las tecnologías OMG para poder comunicarse con objetos remotos CORBA.
Tecnologías de mensajería: Proporcionan una forma de enviar y recibir
mensajes (Comunicaciones asíncronas). La API que lo implementa es JMS
(Java Message Service).
•
•
Los componentes de las aplicaciones en un servidor JEE estándar dispondrán de estos
servicios de comunicaciones accesibles a través de sus contendores.
Página 7 de 11
TEMA 54 – JEE
3
Componentes de la Plataforma JEE
3.1
EJB –Enterprise JavaBeans-
La arquitectura EJB es una tecnología de servidor para el desarrollo y despliegue de
componentes que contienen la lógica de negocio de la aplicación. Los componentes
EJB (entreprise beans) son escalables, transaccionales y soportan el acceso
concurrente por parte de múltiples clientes. La versión actual del estándar EJB 3.
Los EJB se implementan como una clase java y dos interfaces java (Home y Remote).
En la clase java se implementa el EJB, en las interfaces se declaran los métodos del
EJB accesibles de forma remota.
Hay tres tipos de enterprise beans: session beans, entity beans y message beans.
Session beans
Un session bean se crea para ofrecer un servicio a un cliente. Realiza operaciones
cómo pueden ser cálculos y accesos a base de datos. Un session bean no se puede
recuperar si su contenedor cae.
Los session bean pueden ser:

Sin estado (stateless). Las instancias del EJB no tienen un usuario asignado.
Cada acceso se considera independiente.

Con estado (statefull). Se crea una instancia del EJB para cada sesión del
usuario y guarda información sobre el estado de la sessión.
Los Session bean con estado ofrecen mayor funcionalidad que los “sin estado” al
gestionar ellos el estado de la comunicación. Pero son más lentos y consumen más
recursos.
Los objetos session bean debe gestionar sus propios datos persistentes.
Entity beans
Un entity bean es un objeto persistente que representa datos que se mantienen en un
almacén de datos. Un entity bean puede gestionar su propia persistencia o puede
delegar esta función a su contenedor. Un entity bean puede existir tanto como los
datos que representa.
A partir de JEE 1.5, los entitys beans desaparecen sustituidos por JPA (Java
Persistance API). Se ha desarrollado JPA debido a la excesiva complejidad de los
entity bean.
Message beans
Los message beans se comportan de forma muy similar a los stateless session beans,
pero son asíncronos. En el modelo asíncrono, un cliente puede invocar un bean y no
ha de esperar que el método acabe su ejecución para continuar.
Usan un modelo de colas de mensajes (compartidas o no compartidas) para
implementar la comunicación asíncrona.
Página 8 de 11
TEMA 54 – JEE
Contenedores EJB
Los EJB se encuentran en un contenedor de EJBs que les proporciona acceso a un
amplio abanico de servicios, como transacciones, persistencia… y controla su
ejecución.
El acceso a la capa de gestión de datos se realiza a través de los servicios que
proporciona JEE, generalmente usando JDBC.
3.2
SERVLETS
Los Java Servlets son una manera de extender la funcionalidad de un servidor Web.
Son los componentes capaces de generar contenido dinámico, normalmente páginas
web. La versión actual es la 2.5.
Las ventajas de usar Servlets para generar contenido dinámico son:

Escalabilidad: El rendimiento de los servlets es mejor que los métodos
anteriores, como el uso de scripts CGI. Un servlet puede ser cargado en
memoria una vez y entonces ser ejecutado tantas veces como sea necesario.

Proporcionan un API uniforme para mantener datos de sesión en una
aplicación web. Los datos de sesión pueden ser usados para superar las
limitaciones derivadas del protocolo http (Protocolo sin estado).

El contenedor web proporciona servicios de seguridad, control de
concurrencia... por lo que no tienen que ser desarrollados.
Los servlets se programan derivándolos de la clase abstracta Servlet o derivada y
sobrecargando los métodos que nos interesen.
Funcionamiento:
•
Cada servlet está asociado a una petición web. Por ejemplo, a la solicitud de la
página www.caib.es/index.html.
•
Cuando esta petición llega al servidor web, éste la transmite al contenedor web,
que crea un hilo para ejecutar el servlet o aprovecha alguno que este yo en
memoria y le pasa los parámetros de la petición.
•
El Servlet ejecuta las operaciones que considere necesarias según los
parámetros de la petición. Puede llamar a otros objetos Java.
•
Finalmente, genera la respuesta a la petición, en forma de página html, xml,
pdf... y se la envía al servidor web para que la envía al cliente.
Los servlets son un instrumento eficaz para gestionar las peticiones web, pero hacen
complejo y costoso el desarrollo de la lógica para generar la respuesta.
Un servlet utiliza métodos ‘print' para generar el código de la página web que se
enviará respuesta al usuario. Embeber HTML dentro del código Java genera dos
problemas.
1. El diseñador web no puede pre-visualizar el diseño de la página sin ejecutar el
servlet.
2. Se suele mezclar la lógica de presentación y contenido, lo que provoca que el
mantenimiento de ambas partes sea más difícil.
Por ello, se desarrollaron los JSP.
Página 9 de 11
TEMA 54 – JEE
3.3
JSP – Java Server Pages-
La tecnología JavaServer Pages (JSP) fue diseñada para reducir el esfuerzo de
generar páginas html, mediante servlets. La versión actual es la 2.1
La tecnología JSP está orientada a ser utilizada para generar el interfaz de las
aplicaciones, dejando a otros componentes la lógica de presentación.
Las páginas JSP son páginas HTML o XML, en la que se han embebido etiquetas JSP
y código Java entre etiquetas que lo identifican ( <% Código Java %>). El lenguaje JSP
es un lenguaje de script de servidor como ASP o PHP.
Las página JSP para ejecutarse, se traducen a un Servlet, el cual genera las páginas
web. El contenedor de Servlets es el encargado de gestionar y traducir los JSP a
servlets. La traducción se realiza sólo la primera vez que se llama a la página JSP, o
se puede hacer de forma adelantada para mejorar el rendimiento.
JSP permite:
♦ Utilizar herramientas gráficas de diseño web para crear y visualizar páginas
JSP.
♦ Crear etiquetas propias, para realizar tareas complejas, de forma que los
diseñadores web usen esos tags y no necesiten saber programar en Java para
crear páginas JSP complejas.
♦ Ofrecer contenido dinámico de forma portable e independiente. La tecnología
JSP también soporta el modelo de componentes reusables a través de la
inclusión de la tecnología JavaBeans y las extensiones de etiquetas.
El inconveniente de los JSP y del resto de lenguajes de script de servidor, es que el
mantenimiento de sus ficheros puede ser complejo, pues una página jsp puede
contener código de muchos lenguajes diferentes (HTML, CSS, JAVASCRIPT y JSP).
Página 10 de 11
TEMA 54 – JEE
4
4.1
Diversos escenarios de aplicación
Aplicación web-básica
En una aplicación web básica, donde el cliente en un navegador web. La generación
de contenidos dinámicos se realiza mediante JSP y se usa EJB para el acceso a los
datos de la aplicación. Suelen ser aplicaciones pequeñas y simples. La arquitectura
cumple con el modelo de tres capas de JEE.
Cliente
4.2
Contenedor
web
Contenedor
EJB
Servidor de datos
Aplicación centrada en web
En ocasiones, una aplicación no tiene (ni se prevé que tenga) la complejidad para
tener una capa de EJB. Los componentes Web directamente acceden a los datos (via
JDBC) e implementan la lógica de negocio. Esto reduce esfuerzo de desarrollo, a costa
de reducir la mantenibilidad de la aplicación.
Cliente
4.3
Contenedor
web
Servidor de datos
Aplicación web mediante MVC
En el diseño de aplicaciones web complejas se suele usar la arquitectura modelo-vistacontrolador, donde el modelo de negocio estará soportado por los componentes EJB,
la vista (interfaz) se generará mediante JSP y el control de la interacción con el usuario
se realizará con los servlets.
Este modelo de arquitectura facilita el desarrollo y mantenimiento de aplicaciones de
tamaño medio y grande. Es la arquitectura recomendada para aplicaciones web.
Cliente
Servlet web
Contenedor
Contenedor
EJB EJB
Servidor de datos
JSP
4.4
Aplicación independiente
El cliente es una aplicación independiente, hecha en Java u otro lenguaje. La
aplicación puede conectarse al contenedor web (vía http), al contenedor EJB (vía RMI,
CORBA…) o directamente los servidores de datos (via JDBC).
Cliente
Contenedor
web
Contenedor
EJB
Servidor de datos
Esta arquitectura permite realizar aplicaciones muy especializadas con características
que no puedan ofrecer las aplicaciones web, por ejemplo tiempo de respuesta. Su gran
inconveniente es que se pierden las ventajas de las aplicaciones web (coste de
desarrollo y mantenimiento, facilidad de uso, portabilidad…), por ello es una solución
usada en aplicaciones con requisitos que no puedan satisfacer una interfaz web.
Página 11 de 11