O Jazz Platform é baseado em uma arquitetura de cliente/servidor. O servidor Jazz, geralmente em execução em uma máquina de classe de servidor protegida, recebe um conjunto de serviços e hospeda dados em seu repositório. Os clientes remotos se comunicam com o servidor Jazz na rede utilizando HTTP. Os clientes remotos vêm em vários formatos, com o principal deles sendo um IDE com suporte integrado do Jazz Platform, acionado por um usuário envolvido no desenvolvimento de software colaborativo. Outros clientes remotos, como ferramentas de linha de comandos específicas do Jazz ou scripts Ant, operam em modo usual. Outros acessam o servidor diretamente utilizando um navegador da Web, sem precisar instalar o software específico do Jazz em sua máquina.

Este diagrama ilustra a arquitetura de cliente/servidor do Jazz Platform

Cliente/Servidor

O Jazz Platform tem partes correspondentes: o serviço e a biblioteca de cliente. O serviço fica no lado do servidor. A implementação do serviço é gravada em Java. O serviço é contactado por meio de sua interface de serviço. A interface de serviço é utilizada como a definição de serviço Java de uma interface de serviço da Web, que é utilizada para comunicação síncrona, estilo RPC, do cliente para o servidor.

A parte correspondente do lado do cliente é uma biblioteca de cliente baseada em Java que expõe uma interface do cliente. A biblioteca de cliente faz chamadas para a interface de serviço correspondente, que são enviadas pela rede ao serviço correspondente no servidor para processamento. A biblioteca de cliente fornece armazenamento em cache, notificação de eventos e outros recursos que tornam a API mais conveniente para uso do que a interface de serviço original.

Os clientes Jazz baseados em Java, como o Eclipse IDE e Ant, utilizam métodos na interface de cliente. (Bibliotecas de clientes análogas poderão ser gravadas para serem utilizadas por clientes que não sejam baseados em Java.)

Os clientes do navegador da Web são tratados de modo análogo, utilizando uma interface de serviço mais adequada para acesso do JavaScript (descrito na seção posterior em UIs da Web).

Componentes

O Jazz Platform tem uma arquitetura modular e extensível. Um módulo típico, chamado de componente Jazz, fornece um recurso que ajuda com alguma faceta do ciclo de vida de desenvolvimento do software, como um rastreamento ou construções automatizadas com defeito. Um componente típico fornece um ou mais serviços e bibliotecas de cliente correspondentes, juntamente com as partes da UI específicas do domínio construídas nestas camadas mais inferiores. A instalação de um componente em um servidor Jazz geralmente disponibiliza os serviços do componente, enquanto a instalação do componente em um cliente Jazz permite um acesso de usuário ao novo serviço. Um componente do Jazz pode ser baseado nele mesmo (contando apenas com a funcionalidade essencial incorporada) ou pode utilizar a funcionalidade fornecida por outros componentes instalados.

Embora a noção de componente seja conveniente para explicar como o Jazz Platform é estendido, o Jazz não oferece um novo mecanismo de componente de uso geral. Em vez disso, o Jazz Platform otimiza os mecanismos de extensibilidade do Eclipse Platform no servidor e nos clientes baseados em Java. (O leitor que não está familiarizado com as noções de plug-ins e pontos de extensão do Eclipse Platform deve ler a seção Platform Runtime and Plug-in Architecture da Eclipse Platform Technical Overview para obter informações básicas.) Os componentes são compactados como noção de plug-ins do Eclipse contribuem com extensão para outros componentes que utilizam a noção de pontos de extensão do Eclipse. Um componente único é composto de um conjunto de plug-ins, alguns dos quais são instalados no servidor e alguns no cliente.

O componente Jazz fototípico consiste em cinco plug-ins:

Os plug-ins de serviço, comuns e de UI da Web são instalados no servidor.

Os plug-ins utilizam pontos de extensão para se registrarem no Jazz. O plug-in comum do componente, que é instalado no cliente e no servidor, registra a interface de serviço do componente via um ponto de extensão. O plug-in de serviço registra a implementação de serviço correspondente via um ponto de extensão somente no lado do servidor. O plug-in de biblioteca de cliente registra a interface de cliente via um ponto de extensão somente no lado do cliente. Essas contribuições utilizam a cadeia de ID do componente. As contribuições são utilizadas para unir os componentes em tempo de execução.

Os plug-ins no lado do cliente para a UI do cliente e a biblioteca de cliente do componente são instalados no Eclipse IDE. Os plug-ins de UI do cliente contribuem para as visualizações, os editores, etc. por meio dos pontos de extensão do Eclipse Platform; e os plug-ins de biblioteca do cliente registram suas interfaces de cliente por meio de um ponto de extensão específico do Jazz.

As bibliotecas de cliente foram projetadas para funcionar em clientes, como Ant, que não têm um tempo de execução OSGi. As bibliotecas de cliente podem somente depender das bibliotecas de cliente de outros componentes, e não em seus serviços ou UIs.

Os componentes devem declarar todas as dependências em outros componentes. O gráfico de dependência não deve conter ciclos. Um componente pode também declarar seu próprio ponto de extensão, permitindo que ele seja sucessivamente estendido por outros componentes.

Servidor

O servidor Jazz é um aplicativo da Web baseado em Java que é executado em qualquer servidor de aplicativos compatível com Java EE 1.4. Os servidores de aplicativos atualmente suportados são o Apache Tomcat e o IBM WebSphere Application Server. O Apache Tomcat é um contêiner de servlet de software livre que pode ser instalado em máquinas de classe de desktop. O IBM WebSphere Application Server é um produto disponível comercialmente que oferece soluções em várias escalas. A semântica de serviços e APIs do Jazz do lado do servidor é independente da opção de servidor de aplicativos, permitindo que servidores de aplicativos adicionais sejam suportados em releases futuros.

Para leitores familiarizados com o Eclipse, o aplicativo da Web Jazz é estruturado internamente em torno de um tempo de execução de OSGi. O aplicativo da Web Jazz trata os serviços de todos os componentes do Jazz instalados no servidor. A instalação de um novo componente em um servidor Jazz inclui tornar os plug-ins do lado do servidor do componente (pacotes configuráveis do OSGi) conhecidos para o tempo de execução do OSGi do aplicativo da Web primário. O manifesto do pacote configurável declara quaisquer dependências de outros componentes instalados; o manifesto de extensão separado contém todas as contribuições para vários pontos de extensão. O tempo de execução do OSGi processa manifestos do pacote configurável na inicialização, garantindo que as dependências entre componentes sejam satisfeitas para todos os componentes instalados. O aplicativo da Web Jazz gerencia o registro de extensão que reúne as contribuições de todos os componentes instalados e roteia cada pedido que chega em uma interface de serviço do componente ao serviço correspondente para processamento.