JavaEE – Java Enterprise Edition www.javasoft.com ¿Por qué Java en el servidor? Ventajas Independencia de la plataforma – portabilidad Gran conjunto de APIs Reusabilidad y modularidad Seguro en la ejecución de código móvil Gratis 2008-2009 DASDI 2 ¿Por qué Java en el servidor? Inconvenientes 2008-2009 Curva de aprendizaje pronunciada En el caso de sistemas Web, inadecuado para proyectos pequeños que puedan construirse con una solución simple y rápida. DASDI 3 ¿Qué es JEE? 2008-2009 Internet y WWW representan el fundamento sobre los cuales se esta construyendo la economía de la información. La meta de JEE es definir un estándar que ayude a suplir los retos tecnológicos en esta nueva era. JEE soporta aplicaciones distribuidas que toma ventajas de las tecnologías existentes y en desarrollo simplificando el proceso a través de un modelo de aplicaciones basados en componentes. JEE soporta aplicaciones desde las C/S corporativas hasta e-commerce con Web en Internet. Define estándares que son implementados por distintos proveedores y fabricantes, no fuerza a emplear ningún producto específico. Máxima interoperabilidad (Web services, IIOP, RMI, etc.). DASDI 4 Plataforma JEE 2008-2009 “Conjunto de especificaciones y prácticas coordinadas que juntas permiten soluciones para el desarrollo, despliegue y gestión de aplicaciones multicapa centradas en servidor”. Provee soporte tanto para el lado del servidor como para el lado del cliente para aplicaciones corporativas multi-nivel (multi-tier) Client-tier: interface de usuario Middle-tier (1 o más): servicios al cliente y la lógica del negocio para la aplicación. Backend-tier: gestión de datos DASDI 5 Entorno JEE 2008-2009 DASDI 6 Entorno JEE: escenarios (1) 2008-2009 DASDI 7 Entorno JEE: escenarios (y 2) 2008-2009 DASDI 8 Arquitectura JEE y APIs 2008-2009 DASDI 9 APIs detalle ¿Para qué sirve cada una? 2008-2009 DASDI 10 APIs y Especificaciones JavaEE 5 Web Services Technologies Implementing Enterprise Web Services (JSR 109) Java API for XML-Based Web Services (JAX-WS) 2.0 (JSR 224) Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101) Java Architecture for XML Binding (JAXB) 2.0 (JSR 222) SOAP with Attachments API for Java (SAAJ) (JSR 67) Streaming API for XML (JSR 173) Web Service Metadata for the Java Platform (JSR 181) Web Application Technologies Java Servlet 2.5 (JSR 154) JavaServer Faces 1.2 (JSR 252) JavaServer Pages 2.1 (JSR 245) JavaServer Pages Standard Tag Library (JSR 52) 2008-2009 DASDI Enterprise Application Technologies Enterprise JavaBeans 3.0 (JSR 220) JEE Connector Architecture 1.5 (JSR 112) Common Annotations for the Java Platform (JSR 250) Java Message Service API (JSR 914) Java Persistence API (JSR 220) Java Transaction API (JTA) (JSR 907) JavaBeans Activation Framework (JAF) 1.1 (JSR 925) JavaMail (JSR 919) Management and Security Technologies JEE Application Deployment (JSR 88) JEE Management (JSR 77) Java Authorization Contract for Containers (JSR 115) En continua revisión y expansión 11 Tecnologías de la plataforma JEE. Clasificación Tres categorías: Componentes 2008-2009 componentes servicios comunicaciones Utilizados por desarrolladores para crear partes esenciales de una aplicación empresarial Utilizados en la interfaz de usuario y lógica del negocio DASDI 12 Gestión de componentes basado en contenedores De la mano de un modelo basado en componentes esta la noción de contenedor. Un contenedor provee un ambiente estandarizado de ejecución que provee servicios específicos a componentes. Por ejemplo todos los contenedores Web proveen soporte para requerimientos de clientes, realizar un procesamiento y retornar los resultados. 2008-2009 Ej.: Todos los contenedores EJB proveen soporte para gestión de transacciones, ciclo de vida, localización y otros servicios. Los contenedores también poseen acceso a sistemas de información empresarial (RDBMS, JDBC, etc.) DASDI 13 Tecnologías de componentes Componente: unidad de software de nivel aplicación 2008-2009 Ej: Javabeans, applets, componentes web, etc. Los componentes JEE se ejecutan dentro de su correspondiente contenedor. El contenedor proporciona los servicios necesarios a los componentes en tiempo de ejecución Permite declarar en lugar de programar determinados aspectos de comportamiento de los componentes DASDI 14 Contenedores JEE Cuatro aspectos: Contrato de componentes API de servicio del contenedor Servicios Declarativos Otros servicios de contenedores 2008-2009 DASDI 15 Contrato de componentes Los componentes son gestionados por el contenedor. 2008-2009 Deben cumplir el contrato del contenedor Contrato: Conjunto de métodos a implementar por el componente y que permiten al contenedor interactuar con él. Los contratos son interfaces java. java DASDI 16 API del servicio del contenedor El contenedor aporta una implementación para las APIs de extensión de java. Ejemplo: Servicio de mensajería JMS (JSR 914) Driver que cumple la especificación 2008-2009 Implementación de los interfaces JSR 914 Gestor de mensajes y colas DASDI 17 Servicios Declarativos Algunos de los servicios ofrecidos por el contenedor a los componentes se declaran en lugar de programarse. La declaración se realiza mediante descriptores de despliegue. 2008-2009 Por ejemplo, especificar que un método tiene que estar inmerso en una transacción. Descriptor de despliegue: Contrato entre el contenedor y el componente. DASDI 18 Otros Servicios Gestión del ciclo de vida del componente Reserva de recursos Publicación de componentes y otros recursos en espacio JNDI Clustering. Etc… 2008-2009 DASDI 19 Componentes Web Entidades que sirven respuestas a peticiones HTTP Normalmente generan interfaces de usuario basadas en Web Dos tecnologías: 2008-2009 Servlets JSP (Java Server Pages) DASDI 20 Componentes Web: Servlets 2008-2009 Extienden la funcionalidad de un servidor Web Portables Se ejecutan en un contenedor de servlets. DASDI 21 Componentes Web: JSP Respuesta de Sun a las ASP de Microsoft Cuando se compilan, generan un servlet. Son páginas html con código java incrustado. 2008-2009 DASDI 22 Componentes Web Se ejecutan en un contenedor Web Contenedor web = contenedor JSPs + contenedor servlets 2008-2009 Proporciona los servicios necesarios para la ejecución de servlets y jsps, y controla su ciclo de vida. Escucha, decodifica y responde peticiones HTTP/HTTPS. DASDI 23 Servicios de un contenedor Web Seguridad Concurrencia Ciclo de vida Procesamiento de transacciones Despliege No estándar pero frecuentes: 2008-2009 Pool de conexiones Administración remota DASDI 24 Componentes Enterprise JavaBeans EJB: Tecnología de servidor para el desarrollo y despliegue de componentes que contienen la lógica de negocio de una aplicación empresarial Lo EJBs son escalables, transaccionales y seguros en utilización multiusuario. 2008-2009 DASDI 25 Componentes Enterprise JavaBeans Tres tipos: 2008-2009 De sesión, con estado y sin estado De entidad. Dirigidos por mensajes. Contenedores EJB: Proporcionan los servicios de transacciones y persistencia y accede a las APIS de servicios y comunicaciones de JEE. DASDI 26 Arquitectura JEE 2008-2009 DASDI 27 Construcción de aplicaciones: Roles 2008-2009 DASDI 28 Servicios plataforma JEE Simplifican el desarrollo de aplicaciones poniendo recursos a su disposición Servicios de nombrado: Proporcionan a las aplicaciones cliente, EJBs y componentes WEB el acceso al entorno de nombrado JNDI. Permite personalizar un componente sin necesidad de acceder o cambiar su código. Servicios de despliegue: Permiten personalizar los componentes y aplicaciones en el momento del empaquetamiento de despliegue. 2008-2009 Aplicación JEE = conjunto de unidades o módulos. Módulo = uno o más componentes JEE para el mismo tipo de contenedor En cada módulo, un descriptor de despliegue. DASDI 29 Despliege: Módulos JEE Empaquetan componentes o aplicaciones JEE. Tres tipos: 2008-2009 Archivos JAR (Java ARchive) Archivos WAR (Web Application ARchive) Archivos EAR (Enterprise Application ARchive) DASDI 30 Archivos JAR (Java Archive) Permite agrupar distintos archivos java en uno solo. Sigue el formato ZIP Incorporado en la versión 1.1 del JDK Contienen: 2008-2009 Clases java Recursos que emplean las clases META-INF\MANIFEST.MF Manifest-Version: 1.2 Main-Class: DiveLog Created-By: 1.4 (Sun Microsystems Inc.) Specification-Title: "Java Utility Classes" Specification-Version: "1.2" Implementation-Title: "java.util" DASDI 31 Implementation-Version: "build57“ Archivos WAR (Web Application ARchive) Permiten empaquetar en una sola unidad aplicaciones web java completas. Servlets y JSPs Contenido estático Html, Librerias usadas por la aplicación Otros 2008-2009 imágenes, etc. jars. Otros recursos web DASDI 32 Archivos EAR (Enterprise Application ARchive) Archivos desplegables en servidores de aplicaciones JEE Contienen Archivos WAR EJBs Empaquetados 2008-2009 DASDI en ficheros JAR 33 Servicios plataforma JEE Servicio de transacciones Operaciones atómicas Un sistema transaccional garantiza que cada unidad o transacción se termina completamente sin interferencia de otros procesos. Commit Rollbak 2008-2009 DASDI 34 Servicios plataforma JEE Servicio de seguridad Garantiza que los recursos son accedidos por los usuarios autorizados. Distinguimos: Autentificación Autorización Técnicas Declarativa Programática 2008-2009 DASDI 35 Tecnologías de servicios API JDBC JAXP 2008-2009 Proporciona conectividad independiente de la base de datos entre la plataforma JEE y un amplio rango de orígenes de datos Soporta el procesamiento de documentos XML mediante DOM y SAX, y transformaciones XSLT. DASDI 36 Tecnologías de servicios JNDI JCA 2008-2009 Proporciona acceso a servicio de nombrado y directorio Independiente de implementaciones específicas (LDAP, NIS, etc.). API estándar para la conexión de la plataforma JEE a otros sistemas de información, ej: SAP. DASDI 37 Tecnologías de servicios JTA (Java Transaction API) JTS (Java Transaction Service). 2008-2009 API estándar para el acceso a los monitores transaccionales con independencia de implementaciones específicas. Especificación para la implementación de un gestor de transacciones que soporte JCA. Impone como debe comunicarse un monitor transaccional con sus clientes. DASDI 38 Tecnologías de comunicaciones Mecanismos de comunicación, implementaciones de protocolos. Protocolos de Internet TCP/IP, HTTP, HTTPS (http + ssl) Protocolos de invocación remota Protocolos OMG Java IDL RMI-IIOP 2008-2009 DASDI 39 Tecnologías de comunicaciones Tecnologías de mensajería. JMS JavaMail. Conjunto de clases e interfaces para el acceso a servidores de email. Ej, POP3, SMTP, IMAP4. 2008-2009 DASDI 40 Servicios WEB “Son aplicaciones modulares autodescriptivas que se pueden publicar, ubicar e invocar desde cualquier punto de la Web o desde el interior de una red local basada en estándares abiertos de Internet” 2008-2009 Multiplataforma multilenguaje, tanto para el proveedor del servicio como para el usuario del mismo El acceso a servicios web se realiza a través de protocolos de Internet como HTTP o SMTP basados en XML DASDI 41 Servicios WEB 2008-2009 DASDI 42 Servicios Web 2008-2009 DASDI 43 Arquitectura Servicios WEB Localización 2008-2009 UDDI (Universal Description Discovery and integration): Medio para la publicación de servicios web en los registros de servicios web. Las empresas publican en los registros los servicios que ofrecen y la información técnica para acceder a ellos. XML, HTTP, DNS, SOAP. DASDI 44 Arquitectura Servicios WEB Descripción Invocación 2008-2009 WSDL (Web Services Definition Language) Define y describe los servicios web SOAP, XML. SOAP (Simple Object Access Protocol) XML Formatos de mensajes para encapsula invocaciones a objetos en XML Puede emplear distintos protocolos de Internet para el transporte (SMTP, http, etc. DASDI 45