introducción al desarrollo de aplicaciones empresariales · pdf filemodelo: encapsula...

92
UNIVERSIDAD DE PAMPLONA Introducción al Desarrollo de Aplicaciones Empresariales Esp. Alexis Olvany Torres Ch.

Upload: dangxuyen

Post on 10-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

UNIVERSIDAD DE PAMPLONA

Introducción al Desarrollo de Aplicaciones Empresariales

Esp. Alexis Olvany Torres Ch.

Page 2: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Índice

• Arquitecturas características de las aplicaciones empresariales • Tecnologías Java EE • Alternativas a Java EE • Patrones Arquitectónicos

Model-View-Controller Layers

• Referencias

Introducción al Desarrollo de Aplicaciones Empresariales 2

Page 3: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Características de las aplicaciones empresariales (1)

• Acceso a bases de datos (BD) Normalmente con BD relacionales

• Transaccionales Propiedades ACID (Atomicity-Consistency-Isolation-Durability)

• Escalables Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas)

• Disponibilidad Idealmente no deben dejar de prestar servicio

• Seguras No todos los usuarios pueden acceder a la misma funcionalidad

• Integración Es preciso integrar aplicaciones construidas con distintas tecnologías

Introducción al Desarrollo de Aplicaciones Empresariales 3

Page 4: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Características de las aplicaciones empresariales (y 2)

• Tipo de interfaz

De entorno de ventanas (clientes standalone): • Normalmente sólo tiene sentido en intranets

Web: En Internet y en intranets

• Separación clara entre la interfaz gráfica y el modelo

Modelo: encapsula la lógica de negocio El modelo debería ser reusable con distintas interfaces gráficas

cu1

Interfaz gráfica 1

Gestor de Eventos

eventos de usuario Acciones a Ejecutar

Interfaz gráfica m

casos de uso

cu2

... cun

Modelo Base de Datos

• Arquitecturas multi-capa

Introducción al Desarrollo de Aplicaciones Empresariales 4

Page 5: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en dos capas (1)

Capa 1

Int. Modelo gráfica

Capa 2

Base de datos

Intranet

Int. Modelo gráfica Int.

Modelo gráfica

Introducción al Desarrollo de Aplicaciones Empresariales 5

Page 6: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en dos capas (y 2)

• Problema Cambios 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 BD • Cambios en la lógica del modelo • Cambio de tipo de BD

• Solución Modelo en servidor intermedio

• Un cambio en la implementación del modelo sólo afecta al servidor

Clientes standalone

• Sólo disponen de la interfaz gráfica • Acceden al servidor que implementa el modelo

Introducción al Desarrollo de Aplicaciones Empresariales 6

Page 7: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en tres capas

Capa 1

Int. gráfica

Capa 2

Modelo

Serv. modelo

Capa 3

Base de datos

Int. gráfica Intranet

Int. gráfica

Introducción al Desarrollo de Aplicaciones Empresariales 7

Page 8: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación web

Arquitectura en tres capas

Capa 1

Navegador

Capa 2

Int. Modelo

web

Serv. ap. web

Capa 3

Base de datos

Navegador

Internet/ Intranet

Navegador

Introducción al Desarrollo de Aplicaciones Empresariales 8

Page 9: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación web

Arquitectura en cuatro capas

Capa 1

Navegador

Int. web

Serv. ap. web

Modelo

Serv. modelo

Base de datos

Capa 2 Capa 3 Capa 4

Navegador Internet/ Intranet

Navegador

Introducción al Desarrollo de Aplicaciones Empresariales 9

Page 10: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

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 local En la arquitectura en cuatro capas, la comunicación entre la interfaz gráfica y el modelo es remota

• ¿ Cómo conseguir escalabilidad y disponibilidad ? Replicando servidores

Introducción al Desarrollo de Aplicaciones Empresariales 10

Page 11: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

¿ Qué es Java EE ?

• Java EE 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 abstractas Existen múltiples implementaciones de distintos fabricantes, incluso algunas OpenSource Una aplicación construida con Java EE no depende de una implementación particular Sitio central: http://java.sun.com/javaee

• Es necesario distinguir entre J2ME (Java 2 Platform, Micro Edition) – renombrado a Java ME

• Conjunto de tecnologías y especificaciones destinadas a dispositivos tales como teléfonos móviles, PDA's, ...

J2SE (Java 2 Platform, Standard Edition) – renombrado a Java SE • Para aplicaciones y applets

J2EE (Java 2 Platform, Enterprise Edition) – renombrado a Java EE • Se apoya en Java SE • Con el paso del tiempo, algunas APIs de Java EE se pasaron (y quizás se sigan pasando) a Java SE

pIntroducción al Desarrollo de Aplicaciones Empresariales 11

Page 12: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

API Java SE 5

Proporciona un entorno para el desarrollo de aplicaciones Java de Desktop y applets. Contiene un compilador, herramientas, entornos de ejecución y APIs Java que permiten escribir, probar y ejecutar applets y aplicaciones.

Tiger

Introducción al Desarrollo de Aplicaciones Empresariales 12

Page 13: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

API Java EE 5

Define un estándar para el desarrollo de aplicaciones empresariales multicapa basadas en componentes. Se basa en Java SE y proporciona servicios, herramientas y APIs adicionales para soportar el desarrollo simplificado de aplicaciones empresariales.

Introducción al Desarrollo de Aplicaciones Empresariales 13

Page 14: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Cada uno de los componentes de Java EE se ejecuta en un contenedor apropiado. • Un contenedor es el entorno de ejecución para un componente, que le proporciona acceso a una serie de servicios, entre los que se encuentran:

Seguridad Gestión de transacciones Directorio de nombres JNDI Conectividad remota

• De esta forma el desarrollador de componentes se centra en la resolución de los problemas de lógica de negocio. • Para que un componente pueda ser ejecutado, debe de ser previamente deployado en el contenedor correspondiente de un servidor Java EE.

Introducción al Desarrollo de Aplicaciones Empresariales 14

Page 15: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Características de las aplicaciones Empresariales Acceso a Bases de Datos: API JDBC (Java SE) Aplicaciones Transaccionales/Escalables/Disponibles/Seguras/Multicapa (derivadas de la arquitectura Java EE):

• Componentes que se ejecutan en la máquina cliente – Aplicaciones Cliente – Applets – Browser (aplicaciones web)

• Componentes que se ejecutan en la máquina servidora – Contenedor Web: » Componentes Web: API Servlets/JSPs/JSTL – Contenedor EJB: » Componentes de lógica de negocio (modelo) Componentes EJB

Integración de Aplicaciones Heterogéneas

• API XML (Java SE) • API Servicios Web

Introducción al Desarrollo de Aplicaciones Empresariales 15

Page 16: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Múltiples capas ...

Introducción al Desarrollo de Aplicaciones Empresariales 16

Page 17: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (1)

• JDBC (Java SE) API para acceso a bases de datos relacionales El programador puede lanzar queries (consulta, actualización, inserción y borrado), agrupar queries en transacciones, etc. Permite implementar la capa modelo

• Conceptos JDBC El programador siempre trabaja contra los paquetes java.sql y javax.sql. Para poder contectarse a la BD y lanzar queries, es preciso tener un driver adecuado a ella

• Un driver suele ser un fichero .jar que contiene una implementación de todas las interfaces de la API de JDBC • Nuestro código nunca depende del driver, dado que siempre trabaja contra los paquetes java.sql y javax.sql

Introducción al Desarrollo de Aplicaciones Empresariales 17

Page 18: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (2)

• Drivers JDBC

Aplicación Java java.sql javax.sql

API JDBC

JDBC Driver Manager API Driver JDBC

Driver JDBC-ODBC

Nativa Drivers ODBC

Driver Java

API Nativa BD

Servidor con API Genérica

Protocolo de acceso propietario a una base de datos

Driver JDBC-Net Driver Java

Implementaciones Driver JDBC

Base de Datos

Introducción al Desarrollo de Aplicaciones Empresariales 18

Page 19: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (3)

DriverM anager + m anages 0..n < < Interfac e> > Driver

< <i nstanti ate> >

< < Interfac e> > Connection

< < ins tantiate>> < < Interfac e> > S tatem ent

<<i ns tan ti ate>> << Interfac e> > ResultS et

Introducción al Desarrollo de Aplicaciones Empresariales 19

Page 20: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (y 4)

Idealmente, si nuestra aplicación cambia de BD, no necesitamos cambiar el código; simplemente, necesitamos otro driver Sin embargo, desafortunadamente las BDs relacionales usan distintos dialectos de SQL (¡ a pesar de que en teoría es un estándar !)

Tipos de datos: varían mucho según la BD Generación de identificadores: secuencias, autonumerados, etc.

• Solución

Usaremos interfaces para el acceso a BD, de manera que se puedan construir adaptadores para distintas BDs, proporcionando implementaciones por defecto con SQL estándar cuando sea posible

• Otros conceptos relacionados

DriverManager vs DataSource

• JNDI (Java Naming and Directory Interface)

Pool de conexiones Transacciones

Introducción al Desarrollo de Aplicaciones Empresariales 20

Page 21: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (1)

• Aplicación web

Aplicación que corre en al menos un servidor y a la que el usuario accede desde un cliente de propósito general (ej.: navegador en un PC, teléfono WAP, etc.)

• La comunicación en la Web gira en torno al protocolo HTTP

Protocolo de nivel de aplicación Funciona sobre TCP

• Usa el puerto 80 por defecto

Modelo petición/respuesta No tiene estado Al igual que SMTP, es un protocolo ASCII, que usa MIME para transferir información no ASCII

• Acceso a la web desde dispositivos móviles WAP es una pila de protocolos que nada tiene que ver con TCP/IP WML es el lenguaje equivalente a HTML para móviles

• Es una aplicación de XML • Lógicamente, tiene menos posibilidades gráficas

Introducción al Desarrollo de Aplicaciones Empresariales 21

Page 22: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (2)

• Objetivo que se pretende Separación de roles

• Personas que realizan el aspecto gráfico => diseñadores gráficos o similares

– Conocimientos de diseño gráfico y herramientas para generación de HTML y WML

• Personas que implementan el controlador y el modelo => informáticos

– Conocimientos de diseño e implementación

Se deberían poder usar directamente las herramientas de diseño de páginas web Las actualizaciones al aspecto gráfico no deben provocar un re- arranque del servidor

Introducción al Desarrollo de Aplicaciones Empresariales 22

Page 23: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (3)

• Tecnologías web (Java EE) APIs: Servlets, páginas JSP y JSTL Permiten implementar la interfaz gráfica (vista+controlador) de una aplicación web

Contenedor de aplicaciones web

Navegador

Aplicaciones web (int. gráf. + modelo )

JDBC

BD

NOTA: Contenedor = servidor

Noviembre 2006 Introducción al Desarrollo de Aplicaciones Empresariales 23

Page 24: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (y 4)

• Un servlet es una clase Java que puede recibir peticiones (normalmente HTTP) y generar una salida (normalmente HTML, WML o XML)

Los servlets que conforman una aplicación web se ejecutan en un servidor de aplicaciones web (contenedor) Cada servlet se puede asociar a uno o más URLs Paquetes javax.servlet y javax.servlet.http

• Una página JSP (Java Server Page) es un tipo especial de servlet (javax.servlet.jsp y javax.servlet.jsp.tagext) orientado a generar el texto de la interfaz gráfica

Tiene el aspecto de una página HTML Puede incluir scriptlets (scripts) para generar HTML dinámicamente Típicamente los scriptlets se escriben en Java

• JSTL (JSP Standard Tag Library) es una librería estándar de tags que pueden utilizarse en páginas JSP.

Introducción al Desarrollo de Aplicaciones Empresariales 24

Page 25: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Capa Modelo

• Componentes EJB (Java EE) Automatizan la persistencia: API de persistencia:

• Permite mapear clases persistentes (“llamadas entidades”) a una Base de Datos relacional • Alternativa de más alto nivel que JDBC

Dan soporte a la implementación de fachadas del modelo

• Session Beans • Pueden tener interfaz local y/o remota

Enfoque declarativo

• Se declaran las clases que son persistentes • Se declaran las operaciones que son transaccionales y los aspectos de seguridad

Facilidad de desarrollo

• Al menos con EJB 3.0 ...

Introducción al Desarrollo de Aplicaciones Empresariales 25

Page 26: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (1)

• Arquitectura de una aplicación con clientes standalone

Contenedor de componentes EJB

Ap. Standalone (int. gráfica)

Componentes EJB (modelo) BD

Introducción al Desarrollo de Aplicaciones Empresariales 26

Page 27: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (2)

• Arquitectura de una aplicación web con un contenedor completo Java EE (tres capas)

Contenedor Java EE

Navegador Aplicaciones web (int. gráf.)

Componentes EJB (modelo)

BD

Introducción al Desarrollo de Aplicaciones Empresariales 27

Page 28: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (y 3)

• Arquitectura de una aplicación web con un contenedor web y un contenedor de EJB (quizá de distinto fabricante)

Si los dos contenedores corren en la misma máquina física, se pude considerar como una arquitectura en tres capas. En general, es mejor la alternativa anterior

Contenedor de aplicaciones web

Navegador Aplicaciones web (int. gráf.)

Contenedor de componentes EJB

Componentes EJB (modelo) BD

Introducción al Desarrollo de Aplicaciones Empresariales 28

Page 29: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (1)

• APIs para XML XML - eXtensible Markup Language (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" <forecast type="foggy" </city> <city name="LUG"> <forecast type="rainy" <forecast type="rainy" </city> ... </forecasts>

day="1” month=“10” year=“2001"/> day="2” month=“10” year=“2001"/>

day="1” month=“10” year=“2001"/> day="2” month=“10” year=“2001"/>

Introducción al Desarrollo de Aplicaciones Empresariales 29

Page 30: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (2)

• APIs para XML (cont) Campos de aplicación (... entre muchos otros ...)

• • • •

Intercambio de datos entre aplicaciones heterogéneas Configuración de aplicaciones Generación de aspecto visual (ej.: HTML, PDF) a partir de los datos Bases de datos

Parsers XML (XML

• SAX

objetos + [validación estructura])

– Simple API for XML – Es un pequeño framework basado en eventos – El programador proporciona uno o varios objetos callback a los que el parser llamará cada vez que ocurra un evento de interés (apertura de un tag, cierre de un tag, un error, etc.)

• DOM

– Document Object Model – Construye una representación (un árbol) en memoria del documento – El programador puede acceder a los datos del documento recorriendo el árbol

Introducción al Desarrollo de Aplicaciones Empresariales 30

Page 31: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (3)

SAX

DOM

Introducción al Desarrollo de Aplicaciones Empresariales 31

Page 32: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (4)

• APIs para XML (cont) Las APIs de SAX y DOM están estandarizadas y existen un gran número de implementaciones para distintos lenguajes

• Ej.: Apache Software Foundation proporciona Crimson (SAX y DOM sólo para Java), Xerces (SAX y DOM) y Xalan (XSL) • En el caso de Java, familia de paquete org.xml.sax y org.w3c.dom (básicamente contienen interfaces y clases abstractas)

Lo que no está estandarizado es cómo crear instancias de los parsers JAXP - Java API for XML Processing (Java SE)

• API Java para procesamiento de documentos XML • Incluido en Java SE 1.4 • Familia de paquetes java.xml.{parsers, transform}

Introducción al Desarrollo de Aplicaciones Empresariales 32

Page 33: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (y 5)

• APIs para XML (cont) JAXP

• Define una API para trabajar con parsers SAX, DOM y transformaciones XSL • Proporciona factorías para crear instancias de parsers y transformadores XSL de manera portable • Existen un gran número de implementaciones que proporcionan adaptadores para JAXP

– Ej.: Crimson, Xerces y Xalan

• Sun proporciona una implementación de JAXP por defecto: Crimson y Xalan. • Es posible utilizar otras implementaciones vía configuración

Introducción al Desarrollo de Aplicaciones Empresariales 33

Page 34: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Servicios Web (1)

• •

Enfoque REST: peticiones directas HTTP, respuestas XML Se han estandarizado una serie de protocolos basados en XML que permiten el intercambio de información en un entorno distribuido

Cuentan con el respaldo de todos los fabricantes de tecnología (Sun, Oracle, IBM, Microsoft, etc.) También existen APIs para los lenguajes de programación más usuales, que facilitan el envío y recepción de mensajes En general, las APIs no son estándares, sin embargo ello no afecta a la interoperabilidad (porque los protocolos están estandarizados) En Java, las APIs se estandarizan

• Un Servicio Web es un servicio ofrecido a través de la web, que usa los anteriores protocolos y APIs para recibir peticiones y enviar las correspondientes respuestas

Introducción al Desarrollo de Aplicaciones Empresariales 34

Page 35: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Servicios Web (y 2)

• APIs para integración de aplicaciones heterogéneas Principalmente APIs para Servicios Web

• Tecnologías basadas en XML para la integración de aplicaciones heterogéneas • Un servicio Web ofrece un conjunto de operaciones que pueden ser invocadas por clientes remotos, independientemente de la tecnología en la que estén implementados el servidor y el cliente • Protocolo de comunicación: SOAP

– Estandarizado por W3C (http://www.w3c.org ) – Utiliza XML para el intercambio de información – Conceptualmente permite enviar peticiones/respuestas en XML (normalmente sobre HTTP)

• Definición de la interfaz del servicio: WSDL

• Existen APIs para los lenguajes más usuales

– Disponible para Java EE, .NET y LAMP SOAP

Cliente

Servicio Web

– Estandarizado por W3C (http://www.w3c.org )

Servidor

Introducción al Desarrollo de Aplicaciones Empresariales 35

Page 36: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Implementaciones de Java EE (1)

• Existen un gran número de fabricantes que venden servidores de aplicaciones certificados Java EE

Lista completa en http://java.sun.com/javaee/overview/compatibility.jsp Algunos ejemplos

• BEA WebLogic Server: http://www.bea.com

• IBM WebSphere ApplicationServer: http://www.ibm.com

• Sun Java System Application Server: http://www.sun.com

• Oracle Application Server: http://www.oracle.com

Introducción al Desarrollo de Aplicaciones Empresariales 36

Page 37: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Implementaciones de Java EE (y 2)

• Implementaciones OpenSource Tomcat (proyecto de Apache): http://tomcat.apache.org

• Contenedor de aplicaciones web

JBoss: http://www.jboss.com

• Contenedor Java EE

GlassFish: https://glassfish.dev.java.net

• Contenedor Java EE

OpenEJB: http://openejb.codehaus.org

• Contenedor de EJB

Geronimo: http://geronimo.apache.org

• Contenedor Java EE

• Portabilidad Si una aplicación sólo usa las APIs estándares => es posible instalarla sobre cualquier servidor de aplicaciones conforme a Java EE ¡ No se depende de un fabricante !

Introducción al Desarrollo de Aplicaciones Empresariales 37

Page 38: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Alternativas a Java EE (1)

• .NET http://www.microsoft.com/net

Define un Common Language Runtime (CLR) y un IL (Intermediate Language) 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

Lenguajes

• Visual Basic .NET, Visual C++ .NET, Visual C# .NET, Visual J# .NET, etc.

Tecnologías • ADO.NET, ASP.NET, COM+: similares en concepto a JDBC, JSP y EJB (parcialmente), respectivamente • Son una mejora de sus versiones anteriores (ADO, ASP, COM, etc.) • APIs para XML y servicios Web

Implementaciones

• Principalmente la de Microsoft • También Mono (Open Source): http://www.mono-project.com

Introducción al Desarrollo de Aplicaciones Empresariales 38

Page 39: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Alternativas a Java EE (y 2)

• LAMP http://www.onlamp.com Linux + Apache + MySQL +Perl/PHP/Python Perl/PHP/Python

• • • •

Lenguajes tipo Script Acceso a base de datos Tecnologías web Soporte para XML y servicios Web

Requiere menos conocimientos técnicos que Java EE o .NET ¿ Y la calidad del software ?

Introducción al Desarrollo de Aplicaciones Empresariales 39

Page 40: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Patrones arquitectónicos MVC 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ón Posteriormente, el diseño hará uso de patrones de diseño para resolver problemas específicos

Introducción al Desarrollo de Aplicaciones Empresariales 40

Page 41: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Patrones arquitectónicos MVC y Layers (2)

• Patrón arquitectónico MVC

Separación clara entre el modelo (lógica de negocio) y la vista (interfaz gráfica), gracias a un controlador que los mantiene desacoplados Ventajas:

• 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 Layers

El software está estructurado en capas Permite 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 superiores • División clara de trabajo entre los miembros de un equipo

Dará soporte a la arquitectura MVC

• Ej.: tanto la vista como el controlador nunca conocerán las tecnologías que usa la implementación del modelo

Introducción al Desarrollo de Aplicaciones Empresariales 41

Page 42: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Capas de una Aplicación Web Java EE: MVC+Layers

Vista HTML + JSP + JSTL

Servlets Controlador

Interfaces con Casos de Uso (lógica de negocio)

Modelo Plugin: Plain | RMI | EJB | b

Interfaces para Acceso a Datos

Plugin: JDBC | XML | b

Introducción al Desarrollo de Aplicaciones Empresariales 42

Page 43: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (1)

• Libros J. Crupi, D. Alur, D. Malks, Core J2EE Patterns, 2nd edition, Prentice Hall, 2003 F. Marinescu, EJB Design Patterns, John Wiley & Sons, 2002 G. Reese, Database Programming with JDBC and Java, 2nd edition, O. Reilly, 2000 E. R. Harold, W. S. Means, XML in a Nutshell: A Desktop Quick Reference, O. Reilly , 2001 B. McLaughlin, Java and XML, 2nd edition, O. Reilly, 2001 H. Bergsten, JavaServer Pages, 3rd edition, O. Reilly, 2003

Introducción al Desarrollo de Aplicaciones Empresariales 43

Page 44: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (2)

• Libros (cont)

T. Husted, C. Dumoulin, G. Franciscus, D. Winterfeldt, Struts in Action, Manning, 2003. R Patel, G. Brose, M. Silverman, Mastering Enterprise Java Beans, 3.0, John Wiley & Sons, 2006 B. Burke, R. Monson-Haefel, Enterprise JavaBeans 3.0, 5th edition, O. Reilly, 2006 R. Andrew, D. Shafer, HTML Utopia: Designing Without Tables Using CSS, Sitepoint Pty Ltd, 2006 J. Zeldman, Designing with Web Standards, 2th edition, New Riders, 2006 J. McGovern, S. Tyagi, M. E. Stevens, S. Mathew, Java Web Services Architecture, Morgan Kaufmann, 2003

Introducción al Desarrollo de Aplicaciones Empresariales 44

Page 45: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (3)

• Sitios Web http://java.sun.com/reference/blueprints/index.html http://java.sun.com/javaee http://java.sun.com/webservices http://jakarta.apache.org http://www.w3.org/Style/CSS http://www.microsoft.com/net http://www.onlamp.com http://www.xml.org

Introducción al Desarrollo de Aplicaciones Empresariales 45

Page 46: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (y 4)

• Asignaturas en la Facultad de Informática de la UDC Integración de Sistemas

• http://www.tic.udc.es/~fbellas/teaching/is • 5º Ingeniería Informática • Se centra en el diseño e implementación de aplicaciones empresariales con Java EE y .NET. • Transparencias y código disponibles

Análisis y Diseño Orientado a Objetos

• • • •

http://www.tic.udc.es/~fbellas/teaching/adoo Optativa 2º ciclo, Ingeniería Informática Se centra en diseño e implementación con servicios Web con Java EE Transparencias y código disponibles

• Transparencias de esta charla disponibles en http://www.tic.udc.es/~mad/teaching/pfc3

Introducción al Desarrollo de Aplicaciones Empresariales 46

Page 47: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

UNIVERSIDAD DE PAMPLONA

Introducción al Desarrollo de Aplicaciones Empresariales

Esp. Alexis Olvany Torres Ch.

Page 48: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Índice

• Arquitecturas características de las aplicaciones empresariales • Tecnologías Java EE • Alternativas a Java EE • Patrones Arquitectónicos

Model-View-Controller Layers

• Referencias

Introducción al Desarrollo de Aplicaciones Empresariales 2

Page 49: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Características de las aplicaciones empresariales (1)

• Acceso a bases de datos (BD) Normalmente con BD relacionales

• Transaccionales Propiedades ACID (Atomicity-Consistency-Isolation-Durability)

• Escalables Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas)

• Disponibilidad Idealmente no deben dejar de prestar servicio

• Seguras No todos los usuarios pueden acceder a la misma funcionalidad

• Integración Es preciso integrar aplicaciones construidas con distintas tecnologías

Introducción al Desarrollo de Aplicaciones Empresariales 3

Page 50: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Características de las aplicaciones empresariales (y 2)

• Tipo de interfaz

De entorno de ventanas (clientes standalone): • Normalmente sólo tiene sentido en intranets

Web: En Internet y en intranets

• Separación clara entre la interfaz gráfica y el modelo

Modelo: encapsula la lógica de negocio El modelo debería ser reusable con distintas interfaces gráficas

cu1

Interfaz gráfica 1

Gestor de Eventos

eventos de usuario Acciones a Ejecutar

Interfaz gráfica m

casos de uso

cu2

... cun

Modelo Base de Datos

• Arquitecturas multi-capa

Introducción al Desarrollo de Aplicaciones Empresariales 4

Page 51: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en dos capas (1)

Capa 1

Int. Modelo gráfica

Capa 2

Base de datos

Intranet

Int. Modelo gráfica Int.

Modelo gráfica

Introducción al Desarrollo de Aplicaciones Empresariales 5

Page 52: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en dos capas (y 2)

• Problema Cambios 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 BD • Cambios en la lógica del modelo • Cambio de tipo de BD

• Solución Modelo en servidor intermedio

• Un cambio en la implementación del modelo sólo afecta al servidor

Clientes standalone

• Sólo disponen de la interfaz gráfica • Acceden al servidor que implementa el modelo

Introducción al Desarrollo de Aplicaciones Empresariales 6

Page 53: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación con clientes standalone

Arquitectura en tres capas

Capa 1

Int. gráfica

Capa 2

Modelo

Serv. modelo

Capa 3

Base de datos

Int. gráfica Intranet

Int. gráfica

Introducción al Desarrollo de Aplicaciones Empresariales 7

Page 54: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación web

Arquitectura en tres capas

Capa 1

Navegador

Capa 2

Int. Modelo

web

Serv. ap. web

Capa 3

Base de datos

Navegador

Internet/ Intranet

Navegador

Introducción al Desarrollo de Aplicaciones Empresariales 8

Page 55: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Una aplicación web

Arquitectura en cuatro capas

Capa 1

Navegador

Int. web

Serv. ap. web

Modelo

Serv. modelo

Base de datos

Capa 2 Capa 3 Capa 4

Navegador Internet/ Intranet

Navegador

Introducción al Desarrollo de Aplicaciones Empresariales 9

Page 56: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

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 local En la arquitectura en cuatro capas, la comunicación entre la interfaz gráfica y el modelo es remota

• ¿ Cómo conseguir escalabilidad y disponibilidad ? Replicando servidores

Introducción al Desarrollo de Aplicaciones Empresariales 10

Page 57: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

¿ Qué es Java EE ?

• Java EE 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 abstractas Existen múltiples implementaciones de distintos fabricantes, incluso algunas OpenSource Una aplicación construida con Java EE no depende de una implementación particular Sitio central: http://java.sun.com/javaee

• Es necesario distinguir entre J2ME (Java 2 Platform, Micro Edition) – renombrado a Java ME

• Conjunto de tecnologías y especificaciones destinadas a dispositivos tales como teléfonos móviles, PDA's, ...

J2SE (Java 2 Platform, Standard Edition) – renombrado a Java SE • Para aplicaciones y applets

J2EE (Java 2 Platform, Enterprise Edition) – renombrado a Java EE • Se apoya en Java SE • Con el paso del tiempo, algunas APIs de Java EE se pasaron (y quizás se sigan pasando) a Java SE

pIntroducción al Desarrollo de Aplicaciones Empresariales 11

Page 58: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

API Java SE 5

Proporciona un entorno para el desarrollo de aplicaciones Java de Desktop y applets. Contiene un compilador, herramientas, entornos de ejecución y APIs Java que permiten escribir, probar y ejecutar applets y aplicaciones.

Tiger

Introducción al Desarrollo de Aplicaciones Empresariales 12

Page 59: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

API Java EE 5

Define un estándar para el desarrollo de aplicaciones empresariales multicapa basadas en componentes. Se basa en Java SE y proporciona servicios, herramientas y APIs adicionales para soportar el desarrollo simplificado de aplicaciones empresariales.

Introducción al Desarrollo de Aplicaciones Empresariales 13

Page 60: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Cada uno de los componentes de Java EE se ejecuta en un contenedor apropiado. • Un contenedor es el entorno de ejecución para un componente, que le proporciona acceso a una serie de servicios, entre los que se encuentran:

Seguridad Gestión de transacciones Directorio de nombres JNDI Conectividad remota

• De esta forma el desarrollador de componentes se centra en la resolución de los problemas de lógica de negocio. • Para que un componente pueda ser ejecutado, debe de ser previamente deployado en el contenedor correspondiente de un servidor Java EE.

Introducción al Desarrollo de Aplicaciones Empresariales 14

Page 61: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Características de las aplicaciones Empresariales Acceso a Bases de Datos: API JDBC (Java SE) Aplicaciones Transaccionales/Escalables/Disponibles/Seguras/Multicapa (derivadas de la arquitectura Java EE):

• Componentes que se ejecutan en la máquina cliente – Aplicaciones Cliente – Applets – Browser (aplicaciones web)

• Componentes que se ejecutan en la máquina servidora – Contenedor Web: » Componentes Web: API Servlets/JSPs/JSTL – Contenedor EJB: » Componentes de lógica de negocio (modelo) Componentes EJB

Integración de Aplicaciones Heterogéneas

• API XML (Java SE) • API Servicios Web

Introducción al Desarrollo de Aplicaciones Empresariales 15

Page 62: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Principales tecnologías proporcionadas por Java EE

• Múltiples capas ...

Introducción al Desarrollo de Aplicaciones Empresariales 16

Page 63: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (1)

• JDBC (Java SE) API para acceso a bases de datos relacionales El programador puede lanzar queries (consulta, actualización, inserción y borrado), agrupar queries en transacciones, etc. Permite implementar la capa modelo

• Conceptos JDBC El programador siempre trabaja contra los paquetes java.sql y javax.sql. Para poder contectarse a la BD y lanzar queries, es preciso tener un driver adecuado a ella

• Un driver suele ser un fichero .jar que contiene una implementación de todas las interfaces de la API de JDBC • Nuestro código nunca depende del driver, dado que siempre trabaja contra los paquetes java.sql y javax.sql

Introducción al Desarrollo de Aplicaciones Empresariales 17

Page 64: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (2)

• Drivers JDBC

Aplicación Java java.sql javax.sql

API JDBC

JDBC Driver Manager API Driver JDBC

Driver JDBC-ODBC

Nativa Drivers ODBC

Driver Java

API Nativa BD

Servidor con API Genérica

Protocolo de acceso propietario a una base de datos

Driver JDBC-Net Driver Java

Implementaciones Driver JDBC

Base de Datos

Introducción al Desarrollo de Aplicaciones Empresariales 18

Page 65: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (3)

DriverM anager + m anages 0..n < < Interfac e> > Driver

< <i nstanti ate> >

< < Interfac e> > Connection

< < ins tantiate>> < < Interfac e> > S tatem ent

<<i ns tan ti ate>> << Interfac e> > ResultS et

Introducción al Desarrollo de Aplicaciones Empresariales 19

Page 66: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Acceso a Base de Datos JDBC (y 4)

Idealmente, si nuestra aplicación cambia de BD, no necesitamos cambiar el código; simplemente, necesitamos otro driver Sin embargo, desafortunadamente las BDs relacionales usan distintos dialectos de SQL (¡ a pesar de que en teoría es un estándar !)

Tipos de datos: varían mucho según la BD Generación de identificadores: secuencias, autonumerados, etc.

• Solución

Usaremos interfaces para el acceso a BD, de manera que se puedan construir adaptadores para distintas BDs, proporcionando implementaciones por defecto con SQL estándar cuando sea posible

• Otros conceptos relacionados

DriverManager vs DataSource

• JNDI (Java Naming and Directory Interface)

Pool de conexiones Transacciones

Introducción al Desarrollo de Aplicaciones Empresariales 20

Page 67: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (1)

• Aplicación web

Aplicación que corre en al menos un servidor y a la que el usuario accede desde un cliente de propósito general (ej.: navegador en un PC, teléfono WAP, etc.)

• La comunicación en la Web gira en torno al protocolo HTTP

Protocolo de nivel de aplicación Funciona sobre TCP

• Usa el puerto 80 por defecto

Modelo petición/respuesta No tiene estado Al igual que SMTP, es un protocolo ASCII, que usa MIME para transferir información no ASCII

• Acceso a la web desde dispositivos móviles WAP es una pila de protocolos que nada tiene que ver con TCP/IP WML es el lenguaje equivalente a HTML para móviles

• Es una aplicación de XML • Lógicamente, tiene menos posibilidades gráficas

Introducción al Desarrollo de Aplicaciones Empresariales 21

Page 68: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (2)

• Objetivo que se pretende Separación de roles

• Personas que realizan el aspecto gráfico => diseñadores gráficos o similares

– Conocimientos de diseño gráfico y herramientas para generación de HTML y WML

• Personas que implementan el controlador y el modelo => informáticos

– Conocimientos de diseño e implementación

Se deberían poder usar directamente las herramientas de diseño de páginas web Las actualizaciones al aspecto gráfico no deben provocar un re- arranque del servidor

Introducción al Desarrollo de Aplicaciones Empresariales 22

Page 69: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (3)

• Tecnologías web (Java EE) APIs: Servlets, páginas JSP y JSTL Permiten implementar la interfaz gráfica (vista+controlador) de una aplicación web

Contenedor de aplicaciones web

Navegador

Aplicaciones web (int. gráf. + modelo )

JDBC

BD

NOTA: Contenedor = servidor

Noviembre 2006 Introducción al Desarrollo de Aplicaciones Empresariales 23

Page 70: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Tecnologías Web (y 4)

• Un servlet es una clase Java que puede recibir peticiones (normalmente HTTP) y generar una salida (normalmente HTML, WML o XML)

Los servlets que conforman una aplicación web se ejecutan en un servidor de aplicaciones web (contenedor) Cada servlet se puede asociar a uno o más URLs Paquetes javax.servlet y javax.servlet.http

• Una página JSP (Java Server Page) es un tipo especial de servlet (javax.servlet.jsp y javax.servlet.jsp.tagext) orientado a generar el texto de la interfaz gráfica

Tiene el aspecto de una página HTML Puede incluir scriptlets (scripts) para generar HTML dinámicamente Típicamente los scriptlets se escriben en Java

• JSTL (JSP Standard Tag Library) es una librería estándar de tags que pueden utilizarse en páginas JSP.

Introducción al Desarrollo de Aplicaciones Empresariales 24

Page 71: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Capa Modelo

• Componentes EJB (Java EE) Automatizan la persistencia: API de persistencia:

• Permite mapear clases persistentes (“llamadas entidades”) a una Base de Datos relacional • Alternativa de más alto nivel que JDBC

Dan soporte a la implementación de fachadas del modelo

• Session Beans • Pueden tener interfaz local y/o remota

Enfoque declarativo

• Se declaran las clases que son persistentes • Se declaran las operaciones que son transaccionales y los aspectos de seguridad

Facilidad de desarrollo

• Al menos con EJB 3.0 ...

Introducción al Desarrollo de Aplicaciones Empresariales 25

Page 72: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (1)

• Arquitectura de una aplicación con clientes standalone

Contenedor de componentes EJB

Ap. Standalone (int. gráfica)

Componentes EJB (modelo) BD

Introducción al Desarrollo de Aplicaciones Empresariales 26

Page 73: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (2)

• Arquitectura de una aplicación web con un contenedor completo Java EE (tres capas)

Contenedor Java EE

Navegador Aplicaciones web (int. gráf.)

Componentes EJB (modelo)

BD

Introducción al Desarrollo de Aplicaciones Empresariales 27

Page 74: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Arquitectura multi-capa (y 3)

• Arquitectura de una aplicación web con un contenedor web y un contenedor de EJB (quizá de distinto fabricante)

Si los dos contenedores corren en la misma máquina física, se pude considerar como una arquitectura en tres capas. En general, es mejor la alternativa anterior

Contenedor de aplicaciones web

Navegador Aplicaciones web (int. gráf.)

Contenedor de componentes EJB

Componentes EJB (modelo) BD

Introducción al Desarrollo de Aplicaciones Empresariales 28

Page 75: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (1)

• APIs para XML XML - eXtensible Markup Language (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" <forecast type="foggy" </city> <city name="LUG"> <forecast type="rainy" <forecast type="rainy" </city> ... </forecasts>

day="1” month=“10” year=“2001"/> day="2” month=“10” year=“2001"/>

day="1” month=“10” year=“2001"/> day="2” month=“10” year=“2001"/>

Introducción al Desarrollo de Aplicaciones Empresariales 29

Page 76: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (2)

• APIs para XML (cont) Campos de aplicación (... entre muchos otros ...)

• • • •

Intercambio de datos entre aplicaciones heterogéneas Configuración de aplicaciones Generación de aspecto visual (ej.: HTML, PDF) a partir de los datos Bases de datos

Parsers XML (XML

• SAX

objetos + [validación estructura])

– Simple API for XML – Es un pequeño framework basado en eventos – El programador proporciona uno o varios objetos callback a los que el parser llamará cada vez que ocurra un evento de interés (apertura de un tag, cierre de un tag, un error, etc.)

• DOM

– Document Object Model – Construye una representación (un árbol) en memoria del documento – El programador puede acceder a los datos del documento recorriendo el árbol

Introducción al Desarrollo de Aplicaciones Empresariales 30

Page 77: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (3)

SAX

DOM

Introducción al Desarrollo de Aplicaciones Empresariales 31

Page 78: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (4)

• APIs para XML (cont) Las APIs de SAX y DOM están estandarizadas y existen un gran número de implementaciones para distintos lenguajes

• Ej.: Apache Software Foundation proporciona Crimson (SAX y DOM sólo para Java), Xerces (SAX y DOM) y Xalan (XSL) • En el caso de Java, familia de paquete org.xml.sax y org.w3c.dom (básicamente contienen interfaces y clases abstractas)

Lo que no está estandarizado es cómo crear instancias de los parsers JAXP - Java API for XML Processing (Java SE)

• API Java para procesamiento de documentos XML • Incluido en Java SE 1.4 • Familia de paquetes java.xml.{parsers, transform}

Introducción al Desarrollo de Aplicaciones Empresariales 32

Page 79: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

XML (y 5)

• APIs para XML (cont) JAXP

• Define una API para trabajar con parsers SAX, DOM y transformaciones XSL • Proporciona factorías para crear instancias de parsers y transformadores XSL de manera portable • Existen un gran número de implementaciones que proporcionan adaptadores para JAXP

– Ej.: Crimson, Xerces y Xalan

• Sun proporciona una implementación de JAXP por defecto: Crimson y Xalan. • Es posible utilizar otras implementaciones vía configuración

Introducción al Desarrollo de Aplicaciones Empresariales 33

Page 80: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Servicios Web (1)

• •

Enfoque REST: peticiones directas HTTP, respuestas XML Se han estandarizado una serie de protocolos basados en XML que permiten el intercambio de información en un entorno distribuido

Cuentan con el respaldo de todos los fabricantes de tecnología (Sun, Oracle, IBM, Microsoft, etc.) También existen APIs para los lenguajes de programación más usuales, que facilitan el envío y recepción de mensajes En general, las APIs no son estándares, sin embargo ello no afecta a la interoperabilidad (porque los protocolos están estandarizados) En Java, las APIs se estandarizan

• Un Servicio Web es un servicio ofrecido a través de la web, que usa los anteriores protocolos y APIs para recibir peticiones y enviar las correspondientes respuestas

Introducción al Desarrollo de Aplicaciones Empresariales 34

Page 81: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Servicios Web (y 2)

• APIs para integración de aplicaciones heterogéneas Principalmente APIs para Servicios Web

• Tecnologías basadas en XML para la integración de aplicaciones heterogéneas • Un servicio Web ofrece un conjunto de operaciones que pueden ser invocadas por clientes remotos, independientemente de la tecnología en la que estén implementados el servidor y el cliente • Protocolo de comunicación: SOAP

– Estandarizado por W3C (http://www.w3c.org ) – Utiliza XML para el intercambio de información – Conceptualmente permite enviar peticiones/respuestas en XML (normalmente sobre HTTP)

• Definición de la interfaz del servicio: WSDL

• Existen APIs para los lenguajes más usuales

– Disponible para Java EE, .NET y LAMP SOAP

Cliente

Servicio Web

– Estandarizado por W3C (http://www.w3c.org )

Servidor

Introducción al Desarrollo de Aplicaciones Empresariales 35

Page 82: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Implementaciones de Java EE (1)

• Existen un gran número de fabricantes que venden servidores de aplicaciones certificados Java EE

Lista completa en http://java.sun.com/javaee/overview/compatibility.jsp Algunos ejemplos

• BEA WebLogic Server: http://www.bea.com

• IBM WebSphere ApplicationServer: http://www.ibm.com

• Sun Java System Application Server: http://www.sun.com

• Oracle Application Server: http://www.oracle.com

Introducción al Desarrollo de Aplicaciones Empresariales 36

Page 83: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Implementaciones de Java EE (y 2)

• Implementaciones OpenSource Tomcat (proyecto de Apache): http://tomcat.apache.org

• Contenedor de aplicaciones web

JBoss: http://www.jboss.com

• Contenedor Java EE

GlassFish: https://glassfish.dev.java.net

• Contenedor Java EE

OpenEJB: http://openejb.codehaus.org

• Contenedor de EJB

Geronimo: http://geronimo.apache.org

• Contenedor Java EE

• Portabilidad Si una aplicación sólo usa las APIs estándares => es posible instalarla sobre cualquier servidor de aplicaciones conforme a Java EE ¡ No se depende de un fabricante !

Introducción al Desarrollo de Aplicaciones Empresariales 37

Page 84: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Alternativas a Java EE (1)

• .NET http://www.microsoft.com/net

Define un Common Language Runtime (CLR) y un IL (Intermediate Language) 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

Lenguajes

• Visual Basic .NET, Visual C++ .NET, Visual C# .NET, Visual J# .NET, etc.

Tecnologías • ADO.NET, ASP.NET, COM+: similares en concepto a JDBC, JSP y EJB (parcialmente), respectivamente • Son una mejora de sus versiones anteriores (ADO, ASP, COM, etc.) • APIs para XML y servicios Web

Implementaciones

• Principalmente la de Microsoft • También Mono (Open Source): http://www.mono-project.com

Introducción al Desarrollo de Aplicaciones Empresariales 38

Page 85: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Alternativas a Java EE (y 2)

• LAMP http://www.onlamp.com Linux + Apache + MySQL +Perl/PHP/Python Perl/PHP/Python

• • • •

Lenguajes tipo Script Acceso a base de datos Tecnologías web Soporte para XML y servicios Web

Requiere menos conocimientos técnicos que Java EE o .NET ¿ Y la calidad del software ?

Introducción al Desarrollo de Aplicaciones Empresariales 39

Page 86: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Patrones arquitectónicos MVC 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ón Posteriormente, el diseño hará uso de patrones de diseño para resolver problemas específicos

Introducción al Desarrollo de Aplicaciones Empresariales 40

Page 87: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Patrones arquitectónicos MVC y Layers (2)

• Patrón arquitectónico MVC

Separación clara entre el modelo (lógica de negocio) y la vista (interfaz gráfica), gracias a un controlador que los mantiene desacoplados Ventajas:

• 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 Layers

El software está estructurado en capas Permite 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 superiores • División clara de trabajo entre los miembros de un equipo

Dará soporte a la arquitectura MVC

• Ej.: tanto la vista como el controlador nunca conocerán las tecnologías que usa la implementación del modelo

Introducción al Desarrollo de Aplicaciones Empresariales 41

Page 88: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Capas de una Aplicación Web Java EE: MVC+Layers

Vista HTML + JSP + JSTL

Servlets Controlador

Interfaces con Casos de Uso (lógica de negocio)

Modelo Plugin: Plain | RMI | EJB | b

Interfaces para Acceso a Datos

Plugin: JDBC | XML | b

Introducción al Desarrollo de Aplicaciones Empresariales 42

Page 89: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (1)

• Libros J. Crupi, D. Alur, D. Malks, Core J2EE Patterns, 2nd edition, Prentice Hall, 2003 F. Marinescu, EJB Design Patterns, John Wiley & Sons, 2002 G. Reese, Database Programming with JDBC and Java, 2nd edition, O. Reilly, 2000 E. R. Harold, W. S. Means, XML in a Nutshell: A Desktop Quick Reference, O. Reilly , 2001 B. McLaughlin, Java and XML, 2nd edition, O. Reilly, 2001 H. Bergsten, JavaServer Pages, 3rd edition, O. Reilly, 2003

Introducción al Desarrollo de Aplicaciones Empresariales 43

Page 90: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (2)

• Libros (cont)

T. Husted, C. Dumoulin, G. Franciscus, D. Winterfeldt, Struts in Action, Manning, 2003. R Patel, G. Brose, M. Silverman, Mastering Enterprise Java Beans, 3.0, John Wiley & Sons, 2006 B. Burke, R. Monson-Haefel, Enterprise JavaBeans 3.0, 5th edition, O. Reilly, 2006 R. Andrew, D. Shafer, HTML Utopia: Designing Without Tables Using CSS, Sitepoint Pty Ltd, 2006 J. Zeldman, Designing with Web Standards, 2th edition, New Riders, 2006 J. McGovern, S. Tyagi, M. E. Stevens, S. Mathew, Java Web Services Architecture, Morgan Kaufmann, 2003

Introducción al Desarrollo de Aplicaciones Empresariales 44

Page 91: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (3)

• Sitios Web http://java.sun.com/reference/blueprints/index.html http://java.sun.com/javaee http://java.sun.com/webservices http://jakarta.apache.org http://www.w3.org/Style/CSS http://www.microsoft.com/net http://www.onlamp.com http://www.xml.org

Introducción al Desarrollo de Aplicaciones Empresariales 45

Page 92: Introducción al Desarrollo de Aplicaciones Empresariales · PDF fileModelo: encapsula la lógica de negocio ... Introducción al Desarrollo de Aplicaciones Empresariales 4. Una aplicación

Referencias (y 4)

• Asignaturas en la Facultad de Informática de la UDC Integración de Sistemas

• http://www.tic.udc.es/~fbellas/teaching/is • 5º Ingeniería Informática • Se centra en el diseño e implementación de aplicaciones empresariales con Java EE y .NET. • Transparencias y código disponibles

Análisis y Diseño Orientado a Objetos

• • • •

http://www.tic.udc.es/~fbellas/teaching/adoo Optativa 2º ciclo, Ingeniería Informática Se centra en diseño e implementación con servicios Web con Java EE Transparencias y código disponibles

• Transparencias de esta charla disponibles en http://www.tic.udc.es/~mad/teaching/pfc3

Introducción al Desarrollo de Aplicaciones Empresariales 46