La piattaforma Jazz si basa su un'architettura client-server. Il server Jazz, generalmente in esecuzione in una macchina di classe server protetta, comprende un insieme di servizi e dati nel proprio repository. I client remoti comunicano con il server Jazz tramite la rete utilizzando il protocollo HTTP. I client remoti possono avere diverse forme, la principale delle quali consiste in un IDE con supporto integrato per la piattaforma Jazz, gestito da un utente impegnato nello sviluppo di software collaborativo. Altri client remoti, come gli strumenti specifici di Jazz da riga di comando o gli script Ant, funzionano in modalità headless. Altri ancora accedono direttamente al server utilizzando un browser Web senza necessità di installare software specifico di Jazz nella propria macchina.

Questo diagramma illustra l'architettura client-server della piattaforma Jazz

Client-server

La piattaforma Jazz dispone di parti corrispondenti: il servizio e la libreria client. Il servizio si trova sul lato server. L'implementazione del servizio è scritta in Java. Il servizio viene contattato tramite l'interfaccia di servizio. Questa interfaccia viene utilizzata come definizione del servizio Java di un'interfaccia di servizio Web, utilizzata per la comunicazione sincrona, in stile RPC dal client al server.

La corrispondente parte lato client è una libreria client basata su Java che espone un'interfaccia client. La libreria client effettua chiamate all'interfaccia di servizio corrispondente, inviate tramite rete al servizio corrispondente sul server per l'elaborazione. La libreria client fornisce memorizzazione nella cache, notifica di eventi e altre funzioni che rendono l'API particolarmente conveniente da utilizzare rispetto all'interfaccia di servizio non elaborata.

I client Jazz basati su Java, ad esempio l'IDE Eclipse e Ant, utilizzano i metodi nell'interfaccia client. (Librerie client analoghe possono essere scritte per l'utilizzo con client non basati su Java).

I client di browser Web vengono gestiti in modo analogo utilizzando un'interfaccia di servizio correlata più adatta all'accesso da JavaScript (descritta in una sezione successiva delle UI Web).

Componenti

La piattaforma Jazz dispone di un'architettura modulare ed estendibile. Un modulo tipico, chiamato componente Jazz, fornisce una funzione che supporta alcuni componenti del ciclo di vita dello sviluppo del software, ad esempio la traccia dei difetti o l'automazione delle build. Un componente tipico fornisce uno o più servizi e le corrispondenti librerie client, nonché elementi UI specifici del dominio creati in questi livelli più bassi. Generalmente, l'installazione di un componente in un server Jazz rende disponibili i servizi collegati al componente, mentre l'installazione del componente in un client Jazz consente all'utente di accedere a un nuovo servizio. Un componente Jazz può essere autonomo (basato cioè su funzionalità integrate essenziali) oppure può avvalersi di funzionalità fornite da altri componenti installati.

Sebbene la nozione di componente risulti comoda per spiegare in che modo viene estesa la piattaforma Jazz, Jazz non fornisce un nuovo meccanismo di componenti per scopi generali. La piattaforma Jazz utilizza invece i meccanismi di estendibilità della piattaforma Eclipse sia sui client server che sui client basati su Java. (Al lettore poco esperto di nozioni relative alla piattaforma Eclipse di plug-in e punti di estensione si consiglia di leggere la sezione Platform Runtime and Plug-in Architecture di Eclipse Platform Technical Overview per informazioni generali). I componenti sono forniti come nozione di plug-in di Eclipse e contribuiscono con estensioni per gli altri componenti che utilizzano la nozione di punti di estensione di Eclipse. Un unico componente è composto da un insieme di plug-in , alcuni dei quali vengono installati sul server, altri sul client.

Il prototipo di componente Jazz è composto da cinque plug-in:

I plug-in di servizio, comune e della UI Web vengono installati sul server.

I plug-in utilizzano punti di estensione per eseguire la registrazione in Jazz. Il plug-in comune del componente, installato su client e server, registra l'interfaccia di servizio del componente tramite un punto di estensione. Il plug-in di servizio registra l'implementazione di servizio corrispondente tramite un punto di estensione sul solo lato server. Il plug-in della libreria client registra l'interfaccia client tramite un punto di estensione sul solo lato client. Questi contributi contengono la stringa ID del componente. I contributi vengono utilizzati per unire i componenti durante il runtime.

I plug-in del lato client per la UI e la libreria client del componente vengono installati nell'IDE di Eclipse. I plug-in della UI client contribuiscono con proprie viste, editor, ecc. tramite i punti di estensione della piattaforma Eclipse. I plug-in della libreria client, invece, registrano le proprie interfacce client tramite un punto di estensione specifico di Jazz.

Le librerie client sono progettate per l'utilizzo in client, come Ant, che non dispongono di runtime OSGi. Le librerie client possono dipendere solo dalle librerie client di altri componenti e non dai propri servizi o UI.

I componenti devono dichiarare qualsiasi dipendenza da altri componenti. Il grafico delle dipendenze non deve contenere cicli. Un componente può anche dichiarare i propri punti di estensione, consentendone eventualmente l'estensione da parte di altri componenti.

Server

Il server Jazz è un'applicazione Web basata su Java che può essere eseguita in qualsiasi server di applicazioni conforme a Java EE 1.4. I server di applicazioni attualmente supportati sono Apache Tomcat e IBM WebSphere Application Server. Apache Tomcat è un contenitore servlet open source che può essere installato in macchine di classe desktop. IBM WebSphere Application Server è un prodotto disponibile sul mercato che offre soluzioni su diverse scale. La semantica dei servizi e gli API Jazz su lato server sono indipendenti dalla scelta del server di applicazioni e consentono il supporto di server di applicazioni aggiuntivi in future release.

Per i lettori che hanno familiarità con Eclipse, l'applicazione Web Jazz è strutturata internamente intorno a un runtime OSGi. L'applicazione Web Jazz gestisce i servizi di tutti i componenti Jazz installati sul server. Per l'installazione di un nuovo componente su un server Jazz, è necessario rendere noti i plug-in sul lato server del componente (bundle OSGi) al runtime OSGi dell'applicazione Web primaria. Il file manifest del bundle dichiara qualsiasi dipendenza da altri componenti installati. Il file manifest dell'estensione separata contiene tutti i contributi ai diversi punti di estensione. Il runtime OSGi elabora i file manifest del bundle all'avvio e assicura che le dipendenze tra componenti siano rispettate per tutti i componenti installati. L'applicazione Web Jazz gestisce il registro delle estensioni che unisce i contributi di tutti i componenti installati e instrada ciascuna richiesta in entrata dell'interfaccia di servizio di un componente verso il servizio corrispondente per l'elaborazione.