Introducción al Desarrollo de Aplicaciones Empresariales

27
Introducción al Desarrollo de Aplicaciones Empresariales Fernando Bellas Permuy Departamento de Tecnologías de la Información y las Comunicaciones (TIC) Universidad de A Coruña http://www.tic.udc.es/~fbellas [email protected]

Transcript of Introducción al Desarrollo de Aplicaciones Empresariales

Page 1: 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

[email protected]

Page 2: Introducción al Desarrollo de Aplicaciones Empresariales

Índice

Arquitecturas características de las aplicaciones empresarialesTecnologías J2EEAlternativas a J2EEReferencias

Page 3: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 4: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 5: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 6: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 7: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 8: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 9: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 10: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 11: Introducción al Desarrollo de Aplicaciones Empresariales

¿ 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

Page 12: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 13: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 14: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 15: Introducción al Desarrollo de Aplicaciones Empresariales

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)

Page 16: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 17: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 18: Introducción al Desarrollo de Aplicaciones Empresariales

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>

Page 19: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 20: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 21: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 22: Introducción al Desarrollo de Aplicaciones Empresariales

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 !

Page 23: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 24: Introducción al Desarrollo de Aplicaciones Empresariales

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 ?

Page 25: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 26: Introducción al Desarrollo de Aplicaciones Empresariales

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

Page 27: Introducción al Desarrollo de Aplicaciones Empresariales

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