Introducción al Desarrollo de Aplicaciones Empresariales Fernando Bellas Permuy Departamento de Tecnologías de la Información y las Comunicaciones (TIC) Universidad de A Coruña http://www.tic.udc.es/~fbellas fbellas@udc.es Índice Arquitecturas características de las aplicaciones empresariales Tecnologías J2EE Alternativas a J2EE Referencias Características de las aplicaciones empresariales (1) Acceso a bases de datos (BD) Transaccionales Idealmente no deben dejar de prestar servicio Seguras Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas) Disponibilidad Propiedades ACID (Atomicity-Consistency-Isolation-Durability) Escalables Normalmente con BD relacionales No todos los usuarios pueden acceder a la misma funcionalidad Integración Es preciso integrar aplicaciones construidas con distintas tecnologías 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 Arquitecturas multi-capa Una aplicación con clientes standalone Arquitectura en dos capas (1) Capa 1 Capa 2 Base de datos Int. Modelo gráfica Intranet Int. Modelo gráfica Int. Modelo gráfica 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 Una aplicación con clientes standalone Arquitectura en tres capas Capa 1 Int. gráfica Capa 2 Modelo Serv. modelo Int. gráfica Intranet Int. gráfica Capa 3 Base de datos Una aplicación web Arquitectura en tres capas Capa 1 Navegador Capa 2 Int. Modelo web Serv. ap. web Navegador Navegador Internet/ Intranet Capa 3 Base de datos Una aplicación web Arquitectura en cuatro capas Capa 1 Capa 2 Capa 3 Capa 4 Navegador Int. web Serv. ap. web Navegador Navegador Internet/ Intranet Modelo Serv. modelo Base de datos 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 escalabiliad y disponibilidad ? Replicando servidores ¿ Qué es J2EE ? J2EE es un conjunto de especificaciones de APIs Java para la construcción de aplicaciones empresariales La mayor parte de las abstracciones de las APIs corresponden a interfaces y clases abstractas Existen múltiples implementaciones de distintos fabricantes, incluso algunas OpenSource Una aplicación construida con J2EE no depende de una implementación particular Sitio central: http://java.sun.com/j2ee Es necesario distinguir entre J2ME (Java 2 Platform, Micro Edition) J2SE (Java 2 Platform, Standard Edition) Para dispositivos (ej.: PDAs) Para aplicaciones y applets J2EE (Java 2 Platform, Enterprise Edition) Se apoya en J2SE Con el paso del tiempo, algunas APIs de J2EE se pasaron (y quizás se sigan pasando) a J2SE Principales tecnologías proporcionadas por J2EE (1) JDBC (J2SE) API para acceso a bases de datos relacionales El programador puede lanzar queries (consulta, actualización, inserción y borrado), agrupar queries en transacciones, etc. Permite implementar la capa modelo Principales tecnologías proporcionadas por J2EE (2) Tecnologías web (J2EE) APIs: Servlets, páginas JSP y 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 ) NOTA: Contenedor = servidor JDBC BD Principales tecnologías proporcionadas por J2EE (3) Componentes EJB (J2EE) Automatizan la persistencia De manera independiente del repositorio de datos (BD relacional, BD orientada a objetos, etc.) Alternativa de más alto nivel a JDBC Dan soporte para la implementación de fachadas Pueden ser locales o remotas Enfoque declarativo En el caso de una BD relacional, la implementación de EJB utiliza JDBC Se declaran las clases que son persistentes Se declaran las operaciones que son transaccionales y los aspectos de seguridad La implementación de EJB automatiza los anteriores aspectos Facilidad de desarrollo Al menos con el futuro EJB 3.0 ... Principales tecnologías proporcionadas por J2EE (4) Arquitectura de una aplicación con clientes standalone Contenedor de componentes EJB Ap. Standalone (int. gráfica) Componentes EJB (modelo) BD Principales tecnologías proporcionadas por J2EE (5) Arquitectura de una aplicación web con un contenedor completo J2EE (tres capas) Contenedor J2EE Navegador Aplicaciones web (int. gráf.) Componentes EJB (modelo) BD Principales tecnologías proporcionadas por J2EE (6) Arquitectura de una aplicación web con un contenedor web y un contenedor de EJB En general, es mejor la anterior alternativa Contenedor de aplicaciones web Navegador Aplicaciones web (int. gráf.) Contenedor de componentes EJB Componentes EJB (modelo) BD Principales tecnologías proporcionadas por J2EE (7) APIs para XML XML (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"/> Principales tecnologías proporcionadas por J2EE (8) APIs para XML (cont) Campos de aplicación Intercambio de datos entre aplicaciones heterogéneas Configuración de aplicaciones Generación de aspecto visual (ej.: HTML) a partir de los datos Bases de datos ... y muchos otros ... JAXP (J2SE) API Java para procesamiento de documentos XML Principales tecnologías proporcionadas por J2EE (y 9) Servicios Web 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 Definición de la interfaz del servicio: WSDL Estandarizado por W3C (http://www.w3c.org) Existen APIs para los lenguajes más usuales 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) Disponible para J2EE, .NET y LAMP Buena solución para integración de aplicaciones heterogéneas SOAP Cliente Servicio Web Servidor Implementaciones de J2EE (1) Existen un gran número de fabricantes que venden servidores de aplicaciones certificados J2EE Lista completa en http://java.sun.com/j2ee/compatibility.html 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 Sun Java 2 SDK Enterprise Edition: http://java.sun.com/j2ee/download.html ¡ Es la implementación de referencia y no es eficiente ! Es especialmente útil para los fabricantes de servidores J2EE Implementaciones de J2EE (y 2) Implementaciones OpenSource Tomcat (subproyecto de Jakarta): http://jakarta.apache.org/tomcat JBoss: http://www.jboss.com Contenedor de EJB Geronimo: http://geronimo.apache.org Contenedor J2EE OpenEJB: http://openejb.codehaus.org Contenedor de aplicaciones web Contenedor J2EE Portabilidad Si una aplicación sólo usa las APIs estándares => es posible instalarla sobre cualquier servidor de aplicaciones conforme a J2EE ¡ No se depende de un fabricante ! Alternativas a J2EE (1) .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 Lenguajes 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 Visual Basic .NET, Visual C++ .NET, Visual C# .NET, Visual J# .NET, etc. Tecnologías Idea similar a la máquina virtual de Java y a los bytecodes generados por el compilador de Java, respectivamente Principalmente la de Microsoft Mono (Open Source, Linux y otros sistemas operativos): http://www.mono-project.com Menos maduro que J2EE Alternativas a J2EE (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 J2EE o .NET ¿ Y la calidad del software ? 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 T. Husted, C. Dumoulin, G. Franciscus, D. Winterfeldt, Struts in Action, Manning, 2003. E. Roman, S. W. Ambler, T. Jewell, Mastering Enterprise Java Beans, 2nd Edition, John Wiley & Sons, 2002 R. Monson-Haefel, Enterprise JavaBeans, 4th edition, O. Reilly, 2004 D. Shafer, HTML Utopia: Designing Without Tables Using CSS, Sitepoint Pty Ltd, 2003 Referencias (2) Libros (cont) J. Zeldman, Designing with Web Standards, New Riders, 2003 J. McGovern, S. Tyagi, M. E. Stevens, S. Mathew, Java Web Services Architecture, Morgan Kaufmann, 2003 Sitios Web http://java.sun.com/reference/blueprints/index.html http://java.sun.com/j2ee 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 Referencias (y 3) Asignaturas en la Facultad de Informática de la UDC Integración de Sistemas Análisis y Diseño Orientado a Objetos 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 J2EE Transparencias y código disponibles 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 J2EE Transparencias y código disponibles Transparencias de esta charla disponibles en http://www.tic.udc.es/~fbellas/teaching/pfc3