Introducción al Desarrollo de Aplicaciones Empresariales
Transcript of Introducción al Desarrollo de Aplicaciones Empresariales
Introducción al Desarrollo de Aplicaciones Empresariales
Fernando Bellas PermuyDepartamento de Tecnologías de la Información y las Comunicaciones (TIC)
Universidad de A Coruñahttp://www.tic.udc.es/~fbellas
Índice
Arquitecturas características de las aplicaciones empresarialesTecnologías J2EEAlternativas a J2EEReferencias
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 modeloArquitecturas 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/Intranet
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 OpenSourceUna 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)J2SE (Java 2 Platform, Standard Edition)
Para aplicaciones y appletsJ2EE (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 J2SE
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.Permite implementar la capa modelo
Principales tecnologías proporcionadas por J2EE (2)
Tecnologías web (J2EE)APIs: Servlets, páginas JSP y JSTLPermiten implementar la interfaz gráfica (vista+controlador) 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)
Componentes EJB (J2EE)Automatizan la persistencia
De manera independiente del repositorio de datos (BD relacional, BD orientada a objetos, etc.)Alternativa de más alto nivel a JDBC
En el caso de una BD relacional, la implementación de EJB utiliza JDBC
Dan soporte para la implementación de fachadasPueden ser locales o remotas
Enfoque declarativoSe declaran las clases que son persistentesSe declaran las operaciones que son transaccionales y los aspectos de seguridadLa implementación de EJB automatiza los anteriores aspectos
Facilidad de desarrolloAl menos con el futuro EJB 3.0 ...
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
En general, es mejor la anterior alternativa
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 (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
Principales tecnologías proporcionadas por J2EE (y 9)
Servicios WebUn servicio Web ofrece un conjunto de operaciones que pueden serinvocadas por clientes remotos, independientemente de la tecnología en la que estén implementados el servidor y el clienteProtocolo de comunicación: SOAP
Estandarizado por W3C (http://www.w3c.org)Utiliza XML para el intercambio de informaciónConceptualmente permite enviar peticiones/respuestas en XML (normalmente sobre HTTP)
Definición de la interfaz del servicio: WSDLEstandarizado por W3C (http://www.w3c.org)
Existen APIs para los lenguajes más usualesDisponible para J2EE, .NET y LAMP
Buena solución para integración de aplicaciones heterogéneas
SOAPCliente Servidor
Serv
icio
Web
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/j2ee/compatibility.htmlAlgunos 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.comSun Java 2 SDK Enterprise Edition: http://java.sun.com/j2ee/download.html
¡ Es la implementación de referencia y no es eficiente !Es especialmente útil para los fabricantes de servidores J2EE
Implementaciones de J2EE (y 2)
Implementaciones OpenSourceTomcat (subproyecto de Jakarta): http://jakarta.apache.org/tomcat
Contenedor de aplicaciones web
JBoss: http://www.jboss.comContenedor J2EE
OpenEJB: http://openejb.codehaus.orgContenedor de EJB
Geronimo: http://geronimo.apache.orgContenedor 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, ASP.NET, COM+: similares en concepto a JDBC, JSP y EJB (parcialmente), respectivamenteSon una mejora de sus versiones anteriores (ADO, ASP, COM, etc.)APIs para XML y servicios Web
ImplementacionesPrincipalmente la de MicrosoftMono (Open Source, Linux y otros sistemas operativos): http://www.mono-project.com
Menos maduro que J2EE
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 ?
Referencias (1)
LibrosJ. Crupi, D. Alur, D. Malks, Core J2EE Patterns, 2nd edition, Prentice Hall, 2003F. Marinescu, EJB Design Patterns, John Wiley & Sons, 2002G. Reese, Database Programming with JDBC and Java, 2nd edition, O. Reilly, 2000E. R. Harold, W. S. Means, XML in a Nutshell: A Desktop Quick Reference, O. Reilly , 2001B. McLaughlin, Java and XML, 2nd edition, O. Reilly, 2001H. Bergsten, JavaServer Pages, 3rd edition, O. Reilly, 2003T. Husted, C. Dumoulin, G. Franciscus, D. Winterfeldt, Struts in Action, Manning, 2003.E. Roman, S. W. Ambler, T. Jewell, Mastering Enterprise Java Beans, 2nd Edition, John Wiley & Sons, 2002R. Monson-Haefel, Enterprise JavaBeans, 4th edition, O. Reilly, 2004D. Shafer, HTML Utopia: Designing Without Tables Using CSS, Sitepoint Pty Ltd, 2003
Referencias (2)
Libros (cont)J. Zeldman, Designing with Web Standards, New Riders, 2003J. McGovern, S. Tyagi, M. E. Stevens, S. Mathew, Java Web Services Architecture, Morgan Kaufmann, 2003
Sitios Webhttp://java.sun.com/reference/blueprints/index.html
http://java.sun.com/j2eehttp://java.sun.com/webserviceshttp://jakarta.apache.orghttp://www.w3.org/Style/CSS
http://www.microsoft.com/nethttp://www.onlamp.comhttp://www.xml.org
Referencias (y 3)
Asignaturas en la Facultad de Informática de la UDCIntegración de Sistemas
http://www.tic.udc.es/~fbellas/teaching/is5º Ingeniería InformáticaSe centra en el diseño e implementación de aplicaciones empresariales con J2EETransparencias y código disponibles
Análisis y Diseño Orientado a Objetoshttp://www.tic.udc.es/~fbellas/teaching/adooOptativa 2º ciclo, Ingeniería InformáticaSe centra en diseño e implementación con servicios Web con J2EETransparencias y código disponibles
Transparencias de esta charla disponibles enhttp://www.tic.udc.es/~fbellas/teaching/pfc3