introdesarrolloaplempresariales

55
UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións (TIC) Introducción al Desarrollo de Aplicaciones Empresariales Alberto Pan Bermúdez [email protected] Diciembre 2008 [Basado en la charla de Juan Raposo Santiago, curso 2007/08 (http://www.tic.udc.es/~jrs)]

Upload: gerardo-pingo

Post on 10-Oct-2014

242 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IntroDesarrolloAplEmpresariales

UNIVERSIDADE DA CORUÑA

Departamento de Tecnoloxías da Información e as Comunicacións (TIC)

Introducción al Desarrollo de Aplicaciones Empresariales

Alberto Pan Bermú[email protected]

Diciembre 2008

[Basado en la charla de Juan Raposo Santiago, curso 2007/08 (http://www.tic.udc.es/~jrs)]

Page 2: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 2

Índice

• Arquitecturas características de las aplicaciones empresariales.

• Tecnologías Java EE.

• Alternativas a Java EE.

• Patrones Arquitectónicos.Model-View-Controller.Layers.

• Referencias.

Page 3: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 3

Características de las aplicaciones empresariales (1)

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

• Transaccionales.Propiedades ACID: Atomicity (atomicidad), Consistency(coherencia), Isolation (aislamiento), Durability (permanencia).

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

Page 4: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 4

Características de las aplicaciones empresariales (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.

• Arquitecturas multi-capa.

Modelo

cu1

cu2

cun

...

Interfaz gráfica 1

Interfaz gráfica m

casos de uso

eventos de usuarioGestor de Eventos

Acciones a EjecutarBase de

Datos

Page 5: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 5

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: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 6

Una aplicación con clientes standaloneArquitectura en dos capas (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 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.

Page 7: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 7

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: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 8

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: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 9

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: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 10

Una aplicación webArquitectura en tres o cuatro capas

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

Page 11: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 11

¿ 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 entreJ2ME (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.

Page 12: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 12

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

MustangDiciembre 2006

Page 13: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 13

Java EE: Aplicaciones multicapa basadas en componentes (1)• La plataforma Java EE define un estándar para el desarrollo de

aplicaciones empresariales multicapa basadas en componentes.La lógica de la aplicación se divide en componentes de acuerdo a su función, y cada componente puede ser instalado en una máquina diferente dependiendo de la capa a la que pertenezca.

• Capas y componentes:Los componentes de la capa cliente se ejecutan en la máquina cliente.Los componentes de la capa Web se ejecutan dentro del servidor Java EE.Los componentes de la capa modelo se ejecutan dentro del servidor Java EE.El software de la capa EIS (Enterprise information system) se ejecuta en el servidor EIS.

• Una aplicación Java EE suele estar compuesta por tres o cuatro capas. Cuando la capa Web y la capa modelo se ejecutan en el mismo Servidor Java EE se considera que está compuesta por tres capas porque están distribuidas en tres máquinas: cliente, servidor Java EE y BD.

Page 14: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 14

Java EE: Aplicaciones multicapa basadas en componentes (2)

Page 15: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 15

Contenedores Java EE (1)

• 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 desplegado (deploy) en el contenedor correspondiente de un servidor Java EE.

Page 16: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 16

Contenedores Java EE (2)

Page 17: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 17

API Java EE 5Se basa en Java SE y proporciona servicios, herramientas y APIsadicionales para soportar el desarrollo simplificado de aplicaciones empresariales.

Mayo 2006

Page 18: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 18

Componentes/Tecnologías Java EE (1)

• Un componente es una unidad de software “autosuficiente” y funcional que se ensambla dentro de una aplicación Java EE y se comunica con otros componentes.

• La especificación Java EE define los siguientes componentes:Parte cliente:

• Componentes que se ejecutan en la máquina cliente: Aplicaciones Cliente / Applets.

• Cliente Web: Páginas Web + Navegador.Parte servidora:

• Componentes Web basados en tecnologías Java Servlet, JavaServer Faces, y JavaServer Pages (JSP) que se ejecutan dentro de un contenedor Web.

• Componentes EJB (de lógica de negocio) que se ejecutan dentro contenedor EJB.

• Los componentes Java EE se despliegan en un servidor Java EE que es el encargado de ejecutarlos y gestionarlos.

Page 19: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 19

Componentes/Tecnologías Java EE (2)

• Acceso a Bases de Datos: API JDBC (Java SE).

• Integración de Aplicaciones Heterogéneas.API XML (Java SE).Servicios Web (Java EE).

Page 20: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 20

Componentes Java EE (1)

• Capa cliente.

Page 21: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 21

Componentes Java EE (2)

• Capa Web.

Page 22: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 22

Componentes Java EE (3)

• Capa modelo o de negocio.

Page 23: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 23

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 conectarse 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ónde todas las interfaces de la API de JDBC.

• Nuestro código nunca depende del driver, dado que siempre trabajacontra los paquetes java.sql y javax.sql.

Page 24: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 24

Acceso a Base de Datos JDBC (2)

Driver JDBC

java.sql javax.sql

Aplicación

<<use>> <<use>>

BD<<access>>

Page 25: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 25

Acceso a Base de Datos JDBC (3)

Driver Tipo 1(ej.: bridgeJDBC-ODBC)

API nativaestándar

(ej.: ODBC)

Driver Tipo 2(ej: Oracle OCI)

API nativa BD(normalmente en

C/C++)

<<use>>

BD

<<access>>

<<access>><<use>>

Driver Tipo 4(ej: Oracle thin) <<access>>

Driver Tipo 3 Servidor con API genérica

<<access>>

<<use>>

Page 26: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 26

Acceso a Base de Datos JDBC (4)

DriverManager Driver<<Interface>>0..n0..n

Connection<<Interface>>

Statement<<Interface>><<instantiate>>

ResultSet<<Interface>><<instan tiate>>

<<instantiate>>

+m anages

Page 27: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 27

Acceso a Base de Datos JDBC (5)

• 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 (patrones):Usaremos interfaces para el acceso a BD, de manera que se puedanconstruir 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.

Page 28: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 28

Tecnologías Web (1)

• Aplicación web:Aplicación que corre en al menos un servidor web 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.

Navegador Servidor aplicaciones web

HTML

HTTP

TCP/IP

Page 29: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 29

Tecnologías Web (2)

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

GatewayMóvil Servidor aplicaciones web

WMLHTTPTCP/IP

WML

WAP

Page 30: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 30

Tecnologías Web (3)

• Objetivo que se pretendeSeparació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.

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

Page 31: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 31

Tecnologías Web (4)

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

BDAplicaciones

web (int. gráf. + modelo )

Contenedor deaplicaciones web

NavegadorJDBC

NOTA: Contenedor = servidor

Page 32: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 32

Tecnologías Web (5)

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

Page 33: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 33

Capa Modelo

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

• Permite almacenar clases persistentes (“llamadas entidades”) en 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 y atributos que son persistentes.• Se declaran las operaciones que son transaccionales y los aspectos de

seguridad.Facilidad de desarrollo.

• Al menos con EJB 3.0 ...

Page 34: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 34

Arquitectura multi-capa (1)

• Arquitectura de una aplicación con clientes standalone.

BDComponentes EJB (modelo)

Contenedor decomponentes EJB

Ap. Standalone(int. gráfica)

Page 35: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 35

Arquitectura multi-capa (2)

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

BDNavegador

Componentes EJB (modelo)

Aplicaciones web (int. gráf.)

Contenedor Java EE

Page 36: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 36

Arquitectura multi-capa (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 puede considerar como una arquitectura en tres capas.En general, es mejor la alternativa anterior.

BDNavegador Componentes

EJB (modelo)

Contenedor decomponentes EJB

Aplicaciones web (int. gráf.)

Contenedor deaplicaciones web

Page 37: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 37

Arquitectura multi-capa (4)

• Arquitectura de una aplicación web con un contenedor web (3 capas).

Acceso a BD a través de API JDBC.

BDNavegador

Contenedor deaplicaciones web

Aplicaciones web (int. gráf.) + Modelo (JDBC)

Page 38: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 38

XML (1)

• XML - eXtensible Markup Language (http://www.w3c.org).Lenguaje de etiquetas (similar en sintaxis a HTML).Es extensible (no dispone de etiquetas predefinidas).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 39: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 39

XML (2)

• 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 objetos + [validación estructura]).SAX.

• 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 una etiqueta, cierre de una etiqueta, 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.

Page 40: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 40

XML (3)

SAXDOM

Page 41: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 41

XML (4)

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

• En el caso de Java, familia de paquete org.xml.sax y org.w3c.dom(básicamente contienen interfaces y clases abstractas).

• Ej.: Apache Software Foundation proporciona Crimson (SAX y DOM sólo para Java), Xerces (SAX y DOM) y Xalan (XSL).

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

Page 42: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 42

XML (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+Xalan, Xerces.

Page 43: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 43

Servicios Web (1)

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

• Enfoque REST: peticiones directas HTTP, respuestas XML.

Page 44: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 44

Servicios Web (2)

• APIs para Servicios Web: Integración de aplicaciones heterogéneas.

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.

• Estandarizado por W3C (http://www.w3c.org)Existen APIs para los lenguajes más usuales.

• Disponible para Java EE, .NET y LAMP.SOAP

Cliente Servidor

Serv

icio

Web

Page 45: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 45

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

Page 46: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 46

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 !

Page 47: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 47

Alternativas a Java EE (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.

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

Page 48: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 48

Alternativas a Java EE (2)

• LAMPhttp://www.onlamp.comLinux + 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 ?

Page 49: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 49

Patrones arquitectónicos MVC y Layers (1)

• ¿Cómo se debe diseñar una aplicación empresarial para que sea mantenible y contenga partes reutilizables?

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.

Page 50: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 50

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

Page 51: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 51

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

Interfaces para Acceso a Datos

Plugin: Plain | RMI | EJB | …

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

Modelo

Vista

Controlador

Plugin: JDBC | XML | EJB | …

HTML + JSP + JSTL

Servlets

Page 52: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 52

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.

Page 53: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 53

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 UsingCSS, 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 ServicesArchitecture, Morgan Kaufmann, 2003.

Page 54: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 54

Referencias (3)

• Sitios Webhttp://java.sun.com/reference/blueprints/index.htmlhttp://java.sun.com/javaeehttp://java.sun.com/webserviceshttp://jakarta.apache.orghttp://www.w3.org/Style/CSShttp://www.microsoft.com/nethttp://www.onlamp.comhttp://www.xml.org

Page 55: IntroDesarrolloAplEmpresariales

Diciembre 2008 Introducción al Desarrollo de Aplicaciones Empresariales 55

Referencias (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 el diseño e implementación con servicios Web con Java

EE.• Transparencias y código disponibles.

• Transparencias de esta charla disponibles en la página de la asignatura PFC