2. Objetivos del curso
● Formar para diseñar los sistemas a nivel corporativo
● Utilizar J2EE para implantar sistemas multicapa
● Aprender a utilizar las tecnologías J2EE para
mejorar la calidad de servicio de los sistemas
corporativos
3. Conceptos básicos
● ¿Qué es arquitectura y qué es diseño?
● Arquitectura:
– Cubre toda la estructura de un sistema
– Escalabilidad, seguridad, portabilidad, rendimiento,
fiabilidad, flexibilidad
– Los detalles de implementación están ocultos
● Diseño:
– Opera a un nivel de abstracción más bajo
– Trata sobre los detalles de implementación
4. Problemas de los arquitectos
● Tiempo
● Coste
● Experiencia
● Habilidades
● Visibilidad
● Complejidad
● Cambios
6. Fases en el desarrollo SW
● Análisis de requisitos / Alcance del problema
– HW, SW, topología de la red, desarrollo, testeo,
entorno de producción
– Generar el modelo de dominio: clases, objetos e
interacciones
● Análisis OO/Arquitectura
– UML
● Diseño de la arquitectura
– Framework, protocolos
● Implementación
10. Características en la arquitectura
● Disponibilidad
– Grado de accesibilidad de un sistema (ej: 24x7)
– Relacionado con el rendimiento
● Fiabilidad
– Garantizar la integridad y consistencia de una
aplicación y sus transacciones
● Gestionabilidad
– Gestionar los recursos de un sistema para garantizar la
disponibilidad y el rendimiento respecto a otros
factores (plugins)
11. Características en la arquitectura
● Flexibilidad
– Acometer cambios en la configuración de la
arquitectura y el HW sin un gran impacto en el
sistema
● Rendimiento
– Cumplir las funcionalidades en un tiempo
razonable
● Capacidad
– Habilidad de un sistema para realizar múltiples
tareas por unidad de tiempo
12. Características en la arquitectura
● Escalabilidad
– Capacidad de que ante incrementos de
transacciones el sistema cumpla con los
requisitos de rendimiento y disponibilidad
● Extensibilidad
– Capacidad de extender la funcionalidad
● Validez
– Capacidad para predecir o confirmar resultados
en función de determinadas entradas de usuario
13. Características en la arquitectura
● Reusabilidad
– Poder utilizar un componente en más de un contexto
sin modificarlo internamente
● Seguridad
– Garantizar la accesibilidad e integridad de la
información de acuerdo a la política de la empresa
14. J2EE - Introducción
● Define un modelo para desarrollar aplicaciones
distribuidas
● Basado en un modelo multicapa
● Define un conjunto de componentes que pueden
reutilizarse
● Destinado para estandarizar y simplificar el
desarrollo de aplicaciones distribuidas
● La utilización de componentes es flexible
15. Desarrollo de aplicaciones
corporativas J2EE - Retos
● Productividad
– Equipos de desarrollo con medios de estándar
– Evitar soluciones específicas y arquitecturas
propietarias
– Facilitar la división del trabajo
● Integración con sistemas existentes
– Legacy systems (CICS, DB2, Mainframes, ...)
16. Desarrollo de aplicaciones
corporativas J2EE - Retos
● Libertad de elección de herramientas,
componentes (Websphere, Weblogic, Jboss, etc)
● Respuesta a la demanda
– Disponibilidad, flexibilidad, escalabilidad
– Evitar la necesidad de rediseño, recodificación
para conseguir lo anterior
● Mantenimiento de la seguridad
– Conseguir un modelo de seguridad integrado en
entornos heterogéneos
18. Plataforma J2EE
● Modelo de aplicación distribuida multicapa
– Capa cliente (navegador)
– Capa de presentación (servlets, JSP)
– Capa de lógica de negocio (EJBs)
– Capa de datos (BD)
19. Plataforma J2EE
● Gestión de componentes basados en contenedor
– Los contenedores son entornos de ejecución
estándares que proveen servicios específicos a
componentes
– Por ejemplo: El contenedor web proporciona
respuestas a peticiones de clientes (invocando un
JSP o servlet)
– Proporcionan selección de comportamiento en
tiempo de despliegue
– Los contenedores pueden convivir o no en una
misma plataforma
20. Plataforma J2EE
● Soporte para componentes de cliente
– Páginas HTML estáticas
– HTML generado dinámicamente JSP
– Java applets
– Aplicaciones autónomas (stand-alone) Java o no
– Comunicación con el middle tier por medio de HTTP,
HTML, XML
21. Plataforma J2EE
● Soporte para componentes de negocio
– EJB (Enterprise Java Beans)
– Permite a los desarrolladores concentrarse en la lógica
de negocio delegando las complejidades de las
transacciones al contenedor
23. Ventajas de la plataforma J2EE
● Desarrollo y arquitectura más simples
– Funcionalidad más fácil de implementar
– Permite especificar comportamientos en tiempo
de despliegue
– Permite la división del trabajo
● Integración con los sistemas de información
corporativos
– JDBC, JTA, JNDI, JMS, JavaMail, JAXP,
CORBA
24. Ventajas de la plataforma J2EE
● Múltiples servidores, herramientas,
componentes
– Servidores: Glashfish, Websphere, Weblogic,...
– Herramientas: Netbeans, Eclipse, Websphere,...
– Frameworks: Struts, Spring, Hibernate,...
● Fácil escalabilidad
– Los contenedores implementan mecanismos para
la escalabilidad de aplicaciones distribuidas
25. Ventajas de la plataforma J2EE
● Modelo de seguridad unificado y simplificado
– Tanto en los contenedores Web como de EJB la
seguridad puede definirse en los ficheros descriptores
de despliegue (flexibilidad)
26. Modelos de aplicaciones J2EE
● La arquitectura J2EE es flexible permite la elección
de los contenedores a utilizar en cada caso
30. J2EE – Capa de cliente
● Desde el punto de vista del usuario el cliente es la
aplicación
● Debe ser útil, usable, rápida
● Dependiendo del tipo de cliente a utilizar hay una
serie de consideraciones a tener en cuenta
31. Capa de cliente - Consideraciones
● Consideraciones de la red
– Diferentes tipos de conexión
– Latencia
– Ancho de banda
– La red no siempre es fiable
– El cliente ideal se conecta con el servidor sólo lo
necesario, transmite la información necesaria y
funciona razonablemente bien cuando no puede
conectarse
32. Capa de cliente - Consideraciones
● Consideraciones de seguridad
– Cuando existe un cortafuegos se limita la elección de
los protocolos (HTTP, HTTPS) para la comunicación
– Tipo de red: Internet, Intranet → Afecta a la
autenticación
33. Capa de cliente - Consideraciones
● Consideraciones de la plataforma cliente
– Tipo de terminal en el que se visualizará
– Periféricos: Tamaño de la pantalla, ratón, teclado
– Complejidad de las aplicaciones multiplataforma
34. Capa de cliente – Directrices
generales de diseño
● Aunque la plataforma J2EE recomienda el uso
de clientes ligeros la capa cliente puede realizar
las siguientes funciones:
– Presentación del interfaz de usuario
– Validar las entradas del usuario
– Comunicarse con el servidor
– Gestionar el estado de la conversación
● Cuantas más funciones tenga la capa de cliente
mayor rapidez de respuesta → RIA
35. Directrices de diseño para
navegadores
● Ventajas de la utilización de navegadores:
– Son los clientes más ligeros
– No están afectados por los cambios de la aplicación
– Están en todas partes: Pcs, Móviles, Estaciones de
trabajo
36. Directrices de diseño para
navegadores
● Presentación del interfaz de usuario
– Descargan los documentos del servidor
– HTML, XML
– Son estáticos o generados dinámicamente (JSP,
servlets)
– Los navegadores ofrecen un entorno familiar al
usuario
– Pero ofrecen una limitada interactividad->
requiere muchas conexiones con el servidor
– Javascript
37. Directrices de diseño para
navegadores
● Validación de las entradas del usuario
– Utilizar Javascript (ECMA) para la validación de los
campos del formulario
– El código de Javascript común debe estar incluido en
un fichero-> el navegador lo guarda en la caché
– No exime la validación en el lado del servidor
– La aplicación debe funcionar si se desactiva Javascript
38. Directrices de diseño para
navegadores
● Comunicación con el servidor
– Se realiza a través de HTTP(S)
– Métodos GET y POST
– Las peticiones para actualizar datos
generalmente son a través de POST
– El API de servlet proporciona el interfaz para
atender ambos métodos (doGet, doPost)
– Una aplicación J2EE debe utilizar JSP para
generar documentos HTML
39. Directrices de diseño para
navegadores
● Gestión de la sesión
– HTTP es un protocolo de petición-respuesta donde
cada petición es tratada independientemente
– Sesión: Secuencia de peticiones realizadas por un
usuario utilizando un único cliente
– Formas de guardar la sesión:
● Cookies
● Reescritura de URL (URL rewriting)
– Identificador de sesión (jsessionid)
– Los servidores deben manejar el estado de la sesión
40. Directrices de diseño para navegadores
● Accesibilidad web
– Capacidad de acceso a la web y a sus contenidos por
todas las personas independientemente de la
discapacidad que presenten y del contexto de uso
(ambientales, tecnológicas)
– Validación semántica del contenido (Test W3C)
– Herramientas de accesibilidad (TAW)
– Relacionado con el posicionamiento en buscadores