La plataforma Jazz está basada en una arquitectura servidor-cliente. El servidor Jazz, que normalmente se ejecuta en una máquina protegida tipo servidor, ofrece un conjunto de servicios y almacena datos en su repositorio. Los clientes remotos se comunican con el servidor Jazz en la red utilizando HTTP. Los clientes remotos vienen en muchas formas, por excelencia uno es un IDE con soporte integrado en Jazz Platform, impulsado por un usuario dedicado al desarrollo de colaboración de software. Otros clientes remotos, como las herramientas de línea de comando específicas de Jazz o script Ant, operan en modalidad autónoma. Otros acceden al servidor directamente utilizando un navegador Web, sin la necesidad de instalar un software específico de Jazz en sus máquinas.

Este diagrama ilustra la arquitectura cliente/servidor de la plataforma Jazz

Cliente/Servidor

La plataforma Jazz tiene partes coincidentes: el servicio y la biblioteca de cliente. El servicio está en el lado del servidor. La implementación del servicio está escrita en Java. El servicio se pone en contacto por medio de su interfaz de servicio. La interfaz de servicio se utiliza como definición de servicio de Java de una interfaz de servicio Web, que se utiliza para una comunicación síncroma de estilo RPC de cliente a servidor.

La parte correspondiente del lado del cliente es una biblioteca de cliente basada en Java que expone una interfaz de cliente. La biblioteca de cliente hace llamadas a la interfaz de servicio correspondiente, que se envían por la red al servicio correspondiente en el servidor para su proceso. La biblioteca de cliente proporciona caché, notificación de eventos, y otras funciones que hacen que API sea más adecuado para ser utilizado que la interfaz de servicio raw.

Clientes Jazz basados en Java, como Eclipse IDE y Ant, utilizan métodos en la interfaz del cliente. (Se pueden escribir bibliotecas de cliente análogas para su uso por parte de los clientes no basados en Java.)

Los clientes de un navegador Web se manejan en modo analógico utilizando una interfaz de servicio relacionada más adecuada para el acceso desde JavaScript (descrita en una sección más adelantes en las UI Web).

Componentes

La plataforma Jazz tiene una arquitectura modular y extensible. Un módulo típico, al que se hace referencia como componente Jazz, proporciona una prestación que ayuda con algunas de las facetas del ciclo de vida de desarrollo del software, como búsqueda de errores o construcciones automatizadas. Generalmente, cada uno de ellos proporciona uno o más servicios y bibliotecas de clientes correspondientes, junto con las piezas UI específicas de un dominio construidas en estas capas inferiores. Instalar un componente sobre un servidor Jazz pone generalmente a disposición los servicios del componente, mientras que instalar el componente en un cliente Jazz ofrece acceso al usuario a un nuevo servicio. Un componente Jazz puede mantenerse por sí mismo (confiando solamente en una funcionalidad incorporadaesencial), o puede hacer uso de la funcionalidad proporcionada por otros componentes instalados.

Aunque el término general de componente es adecuado para explicar cómo se extiende la plataforma Jazz, Jazz no ofrece un nuevo mecanismo de componentes de propósito general. En lugar de eso, la plataforma Jazz influye en los mecanismos de extensibilidad de la plataforma Eclipse tanto en el servidor como en los clientes basados en Java. (El lector no familiarizado con los términos generales de la plataforma Elipse de plug-ins y puntos de ampliación debería leer la sección Tiempo de ejecución de la plataforma y la arquitectura de plug-in de Visión general técnica de la plataforma Eclipse para formación.) Los componentes están empaquetados como términos generales de plug-ins de Eclipse, y extensiones contribuidas para otros componentes utilizando el término general de puntos de extensión de Eclipse. Un componente sencillo está compuesto por un conjunto de plug-ins, algunos de los cuales están instalados en el servidor y algunos en el cliente.

El componente prototipo de Jazz se compone de cinco plug-ins:

Ek servicio, común, y los plug-in UI de Web están instalados en el servidor.

Los plug-ins utilizan puntos de excepción para registrarse con Jazz. El plug-in común del componente, que está instalado tanto en el cliente como en el servidor, registra la interfaz de servicio del componente por medio de un punto de extensión. El plug-in de servicio registra la implementación de servicio correspondiente por medio del punto de extensión sólo del lado del servidor. El plug-in de biblioteca de cliente registra la interfaz de cliente por medio del punto de extensión sólo del lado del servidor. Estas contribuciones llevan la serie id del componente. Las contribuciones se utilizan para unir los componentes en tiempo de ejecución.

Los plug-ins del lado del cliente para la interfaz de usuario del cliente y la biblioteca del cliente están instaladas en el IDE de Eclipse. Los plug-ins UI del cliente contruibuyen a sus vistas, editores, etc. por medio de los puntos de extensión de la plataforma Eclipse; y los plug-ins de la biblioteca del cliente registran sus interfaces de cliente por medio de un punto de extensión específico de Jazz.

Las bibliotecas de cliente están diseñadas para trabajar en clientes, como Ant, que no tienen un tiempo de ejecuciónthat do not have an OSGi. Las bibliotecas de cliente sólo pueden depender de las bibliotecas de cliente de otros componentes, y no de sus servicios o UIs.

Los componentes deben cualquier dependencia de otros componentes. El gráfico de dependencia no debe contener ciclos. Un componente también puede declarar sus propios puntos de extensión, permitiendo ampliarse a su vez por otros componentes.

Servidor

El servidor Jazz es una aplicación Web basada en Java que se ejecuta dentro de cualquier servidor de aplicación conforme a Java EE 1.4. Los servidores de aplicación admitidos actualmente son Apache Tomcat y el servidor de aplicación WebSphere de IBM. Apache Tomcat es un contenedor servlet de etiquetas abierto que se puede instalar en máquinas de mesa. El servidor de aplicación WebSphere de IBM es un producto comercialmente disponible que ofrece soluciones a varias escalas. La semántica de servicios y de APIs de Jazz del lado del servidor son independientes de la elección del servidor de aplicación, lo que permite que los servidores de aplicación adicionales sean soportados en futuros releases.

Para lectores familiarizados con Eclipse, la aplicación Web Jazz está estructurada internamente alrededor de un tiempo de ejecución OSGi. La aplicación Web Jazz se encarga de los servicios de todos los componentes Jazz instalados en el servidor. Instalar un nuevo componente en un servidor Jass implica la creación deplug-ins del lado del servidor del componente (paquetes compuestos OSGi) que forman parte del tiempo de ejecución OSGi de la aplicación Web principal. El manifiesto del paquete compuesto declara cualquier dependencia en otros componentes instalados; el manifiesto de extensión aparte contiene contribuciones a varios puntos de extensión. El tiempo de ejecución OSGi procesa manifiestos de paquetes compuestos en el inicio, asegurando que las dependencias entre componentes son sat isfactorias para todos los componentes instalados. La aplicación Web Jazz gestiona el registro de extensiones que se extraen de las contribuciones de todos los componentes instalados, y direcciona cada una de las solicitudes entrantes en la interfaz de servicio del componente a su servicio correspondiente para procesarlo.