Índice
Arquitecturas características de las aplicaciones empresarialesTecnologías J2EEAlternativas a J2EEPatrones arquitectónicos Model-View-Controller y LayersRecursos en InternetMaterial de clase
Características de las aplicaciones empresariales (1)
Acceso a bases de datos (BD)Normalmente con BD relacionales
TransaccionalesPropiedades ACID (Atomicity-Consistency-Isolation-Durability)
EscalablesDeberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas)
DisponibilidadIdealmente no deben dejar de prestar servicio
SegurasNo todos los usuarios pueden acceder a la misma funcionalidad
IntegraciónEs preciso integrar aplicaciones construidas con distintas tecnologías
Características de las aplicaciones empresariales (y 2)
Tipo de interfazDe entorno de ventanas (clientes standalone): normalmente sólo tiene sentido en intranetsWeb: En Internet y en intranets
Separación clara entre la interfaz gráfica y el modeloModelo: encapsula la lógica de negocioEjemplo => aplicación bancaria
Modelo: conjunto de clases que nos permiten: crear cuentas, destruirlas, encontrarlas por distintos criterios, hacer transferencias bancarias, etc.
El modelo debería ser reusable con distintas interfaces gráficas
En el ejemplo de la aplicación bancaria podría haber dos clientes: uno web y otro standalone
Arquitecturas multi-capa
Una aplicación con clientes standaloneArquitectura en dos capas (1)
Intranet
Int.gráfica Modelo
Capa 1 Capa 2
Int.gráfica Modelo
Int.gráfica Modelo
Base de datos
Una aplicación con clientes standaloneArquitectura en dos capas (y 2)
ProblemaCambios en la implementación de la capa modelo => recompilación de toda la aplicación y reinstalación en clientes
Cambios de drivers de acceso a la BDCambios en la lógica del modeloCambio de tipo de BD
SoluciónModelo en servidor intermedio
Un cambio en la implementación del modelo sólo afecta al servidor
Clientes standaloneSólo disponen de la interfaz gráficaAcceden al servidor que implementa el modelo
Una aplicación con clientes standaloneArquitectura en tres capas
Intranet
Capa 2 Capa 3Capa 1
Int.gráfica
Int.gráfica
Int.gráfica
Modelo
Serv. modelo
Base de datos
Una aplicación webArquitectura en tres capas
Internet/Itranet
Capa 2 Capa 3
NavegadorInt.web Modelo
Navegador
Capa 1
Navegador
Base de datos
Serv. ap. web
Una aplicación webArquitectura en cuatro capas
Internet/Intranet
Capa 2 Capa 3 Capa 4
Int.web Modelo
Navegador
Navegador
Capa 1
Base de datos
Serv. ap. web Serv. modelo
Navegador
Comentarios
Para una aplicación web, la arquitectura en tres capas es más eficiente
En la arquitectura en tres capas, la comunicación entre la interfaz gráfica y el modelo es localEn la arquitectura en cuatro capas, la comunicación entre la interfaz gráfica y el modelo es remota
¿ Cómo conseguir escalabiliad y disponibilidad ?Replicando servidores
¿ Qué es J2EE ?J2EE es un conjunto de especificaciones de APIs Java para la construcción de aplicaciones empresariales
La mayor parte de las abstracciones de las APIs corresponden a interfaces y clases abstractasExisten múltiples implementaciones de distintos fabricantes, incluso algunas Open Source Una aplicación construida con J2EE no depende de una implementación particularSitio central: http://java.sun.com/j2ee
Es necesario distinguir entreJ2ME (Java 2 Platform, Micro Edition)
Para dispositivos (ej.: PDAs)Ahora renombrado como Java ME
J2SE (Java 2 Platform, Standard Edition)Para aplicaciones y appletsAhora renombrado como Java SE
J2EE (Java 2 Platform, Enterprise Edition)Se apoya en J2SECon el paso del tiempo, algunas APIs de J2EE se pasaron (y quizás se sigan pasando) a J2SEAhora renombrado como Java EE
Principales tecnologías proporcionadas por J2EE (1)
JDBC (J2SE)API para acceso a bases de datos relacionalesEl programador puede lanzar queries (consulta, actualización, inserción y borrado), agrupar queries en transacciones, etc.
Principales tecnologías proporcionadas por J2EE (2)
Tecnologías web (J2EE)APIs: Servlets, páginas JSP y JSTLPermiten implementar la interfaz gráfica de una aplicación web
BDAplicaciones
web (int. gráf. + modelo )
Contenedor deaplicaciones web
NavegadorJDBC
NOTA: Contenedor = servidor
Principales tecnologías proporcionadas por J2EE (3)
EJB (J2EE)API de Persistencia
Permite mapear clases persistentes (llamadas “entidades”) a una BD relacional
Session BeansPermiten implementar fachadas del modeloPueden tener interfaz local y/o remotaPermiten especificar declarativamente las políticas de transacciones y seguridad
Facilidad de desarrollo
NOTACon el objetivo de reducir el temario de Java EE, se ha suprimido el tema de EJB (ver http://www.tic.udc.es/~fbellas/teaching/is-2005-2006)
La distribución de los ejemplos Java de la asignatura (J2EE-Examples-src) conserva los ejemplos de EJB (con mejoras)
Como parte del tema 5 se dará un seminario que proporciona una visión global de esta tecnología
Principales tecnologías proporcionadas por J2EE (4)
Arquitectura de una aplicación con clientes standalone
BDComponentes EJB (modelo)
Contenedor decomponentes EJB
Ap. Standalone(int. gráfica)
Principales tecnologías proporcionadas por J2EE (5)
Arquitectura de una aplicación web con un contenedor completo J2EE (tres capas)
BDNavegador
Componentes EJB (modelo)
Aplicaciones web (int. gráf.)
Contenedor J2EE
Principales tecnologías proporcionadas por J2EE (6)
Arquitectura de una aplicación web con un contenedor web y un contenedor de EJB (quizás de distinto fabricante)
Si los dos contenedores corren en la misma máquina física, se puede considerar como una arquitectura en tres capas
BDNavegador Componentes
EJB (modelo)
Contenedor decomponentes EJB
Aplicaciones web (int. gráf.)
Contenedor deaplicaciones web
Principales tecnologías proporcionadas por J2EE (7)
APIs para XMLXML (http://www.w3c.org)
Lenguaje de tags (similar en sintaxis a HTML)Es extensible (no dispone de tags predefinidos)Permite expresar datos y no aspecto visual (a diferencia de HTML)
Ejemplo<?xml version=“1.0”><forecasts>
<city name="COR"><forecast type="sunny" day="1” month=“10” year=“2001"/><forecast type="foggy" day="2” month=“10” year=“2001"/>
</city><city name="LUG">
<forecast type="rainy" day="1” month=“10” year=“2001"/><forecast type="rainy" day="2” month=“10” year=“2001"/>
</city>...
</forecasts>
Principales tecnologías proporcionadas por J2EE (y 8)
APIs para XML (cont)Campos de aplicación
Intercambio de datos entre aplicaciones heterogéneasConfiguración de aplicacionesGeneración de aspecto visual (ej.: HTML) a partir de los datosBases de datos... y muchos otros ...
JAXP (J2SE)API Java para procesamiento de documentos XML
APIs para integración de aplicaciones heterogéneasPrincipalmente APIs para Servicios Web
Tecnologías basadas en XML para la integración de aplicaciones heterogéneas
Se explican en “Análisis y Diseño Orientado a Objetos”(Optativa 2º ciclo)
Implementaciones de J2EE (1)
Existen un gran número de fabricantes que venden servidores de aplicaciones certificados J2EE
Lista completa en http://java.sun.com/javaee/overview/compatibility.jspAlgunos ejemplos
BEA WebLogic Server: http://www.bea.comIBM WebSphere ApplicationServer: http://www.ibm.comSun Java System Application Server: http://www.sun.comOracle Application Server: http://www.oracle.com
Implementaciones de J2EE (y 2)
Implementaciones Open SourceTomcat (proyecto de Apache): http://tomcat.apache.org
Contenedor de aplicaciones webJBoss: http://www.jboss.com
Contenedor J2EEGlassFish: https://glassfish.dev.java.net
Contenedor J2EEOpenEJB: http://openejb.codehaus.org
Contenedor de EJBGeronimo: http://geronimo.apache.org
Contenedor J2EE
PortabilidadSi una aplicación sólo usa las APIs estándares => es posible instalarla sobre cualquier servidor de aplicaciones conforme a J2EE¡ No se depende de un fabricante !
Alternativas a J2EE (1)
.NEThttp://www.microsoft.com/netDefine un Common Language Runtime (CLR) y un IL (IntermediateLanguage) al que todos los lenguajes conformes a .NET compilan
Idea similar a la máquina virtual de Java y a los bytecodes generados por el compilador de Java, respectivamente
LenguajesVisual Basic .NET, Visual C++ .NET, Visual C# .NET, Visual J# .NET, etc.
TecnologíasADO.NET y ASP.NET: similares en concepto a JDBC y JSP, respectivamenteAPIs para XML y Servicios Web
ImplementacionesPrincipalmente la de MicrosoftTambién Mono (Open Source): http://www.mono-project.com
Alternativas a J2EE (y 2)
LAMPhttp://www.onlamp.comLinux + Apache + MySQL +Perl/PHP/PythonPerl/PHP/Python
Lenguajes tipo ScriptAcceso a base de datosTecnologías webSoporte para XML y Servicios Web
Requiere menos conocimientos técnicos que J2EE o .NET¿ Y la calidad del software ?
Patrones arquitectónicos Model-View-Controller y Layers (1)
¿ Cómo se debe diseñar una aplicación empresarial para que sea mantenible y contenga partes reusables ?
Debería estar diseñada siguiendo la arquitectura que fijan los patrones arquitectónicos Model-View-Controller(MVC) y Layers
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, Pattern-Oriented Software Architecture: A System Of Patterns, John Wiley and Sons, 1996.
Un patrón arquitectónico es un patrón de alto nivel que fija la arquitectura global de una aplicaciónPosteriormente, el diseño hará uso de patrones de diseño para resolver problemas específicos
Patrones arquitectónicos Model-View-Controller y Layers (2)
Patrón arquitectónico MVCSeparación clara entre el modelo (lógica de negocio) y la vista (interfaz gráfica), gracias a un controlador que los mantiene desacopladosVentajas:
El modelo es reusable con distintas vistas (ej.: una vista web y una con interfaz de ventanas)División clara de trabajo entre los miembros de un equipo, que estaráformado por personas con distintos niveles de especialización
Patrón arquitectónico LayersEl software está estructurado en capasPermite ocultar las tecnologías que usa nuestro software
Cuando hay un cambio de versión en una de ellas (o incluso se reemplaza por otra distinta), no tiene impacto sobre las capas superioresDivisión clara de trabajo entre los miembros de un equipo
Dará soporte a la arquitectura MVCEj.: tanto la vista como el controlador nunca conocerán las tecnologías que usa la implementación del modelo
Patrones arquitectónicos Model-View-Controller y Layers (y 3)
En esta asignatura nos concentraremos en J2EE y aprenderemos a diseñar aplicaciones empresariales con
Arquitectura {MVC + Layers} + múltiples patrones de diseñoFuentes
Libro Core J2EE PatternsJava BluePrints (http://java.sun.com/reference/blueprints)
La descripción de los anteriores patrones usa EJB, sin embargo gran parte de ellos son aplicables cuando se usa JDBCMuchos patrones se pueden usar con otras tecnologías (e.g. .NET)
Dos grandes ejemplos: MiniBank y MiniPortal, Iremos viendo el diseño del modelo, vista y controlador a medida que avancemosProporcionan varias versiones de la implementación de la capa modelo (con JDBC y con EJB), sin que ello afecte a la vista y alcontrolador
Recursos en Internet (1)
Sitio central de J2EEhttp://java.sun.com/javaeeEspecificaciones, JavaDoc del API, tutoriales, etc.
Java BluePrintshttp://java.sun.com/reference/blueprintsGuías de diseño para J2EE
The ServerSide.comhttp://www.theserverside.comNoticias y artículos relacionadas con J2EE
Recursos en Internet (2)
Software Java ApacheOpen SourceUsaremos:
Ant (sistema de compilación)http://ant.apache.org
Tomcat (implementación de servlets y JSP)http://tomcat.apache.org
Standard TagLibs (implementación de JSTL)http://jakarta.apache.org/taglibs
Struts (implementación de MVC sobre servlets y JSP)http://struts.apache.org
Disponibles en el “DVD de IS y ADOO”
Recursos en Internet (3)
JBosshttp://www.jboss.orgServidor Open Source conforme a J2EE Disponible en el “DVD de IS y ADOO”
Bases de datosMySQL: http://www.mysql.comPostgreSQL: http://www.postgresql.orgDisponibles en el “DVD de IS y ADOO”
J2SEhttp://java.sun.com/j2seMáquina y compilador de JavaDisponible en el “DVD de IS y ADOO”
Recursos en Internet (y 4)
Eclipsehttp://www.eclipse.orgIDEDisponible en el “DVD de IS y ADOO”
CSS (Cascading Style Sheets)Especificación: http://www.w3.org/Style/CSSTécnicas de diseño
http://www.alistapart.comhttp://www.glish.com/csshttp://www.csszengarden.com
Material de clase
Página web de la asignaturahttp://www.tic.udc.es/~fbellas/teaching/isSitio web de apoyo a la parte I (Java EE) de la asignaturaTransparencias y código con los ejemplosEnlaces (en Internet) al software usado en el laboratorio
“DVD de IS y ADOO”Contiene todo el software (para Linux y MS-Windows) para realizar las prácticas de las asignaturas
Integración de Sistemas (Java EE)Análisis y Diseño Orientado a Objetos
Top Related