Jazz Platform è basato su una architettura client-server. Il server Jazz, di solito in esecuzione su una macchina di classe server sicura, ospita una serie di servizi e dati nel proprio repository. I client remoti comunicano con il server Jazz sulla rete mediante HTTP. I client remoti possono avere diverse forme; la più importante è l'IDE con il supporto Jazz Platform integrato, gestito da un utente impegnato nello sviluppo di software di collaborazione. Altri client remoti, come ad esempio gli strumenti della riga comandi specifici di Jazz o gli script Ant, funzionano in modalità non grafica. Altri accedono al server direttamente utilizzando un browser Web, senza dover installare software specifico di Jazz sulla macchina.

Questa figura illustra l'architettura client-server di Jazz Platform

Client-server

Jazz Platform è costituito da due parti principali: il servizio e la libreria client. Il servizio si trova sul lato server. L'implementazione del servizio è scritta in Java. Esso è contattato mediante l'interfaccia di servizi. Tale interfaccia è utilizzata come definizione di 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 utilizza un'interfaccia client. La libreria client effettua chiamate alla corrispondente interfaccia di servizio, chiamate che sono inviate sulla rete al servizio corrispondente sul server per l'elaborazione. La libreria client fornisce funzioni quali la memorizzazione nella cache, la notifica eventi e altre funzioni che rendono più conveniente l'utilizzo dell'API rispetto all'utilizzo dell'interfaccia di servizio semplice.

I client Jazz basati su Java, come ad esempio Eclipse IDE e Ant, utilizzano metodi nell'interfaccia client. È possibile scrivere librerie client analoghe che possano essere utilizzate da client non basati su Java.

I client del browser Web sono gestiti in maniera analoga utilizzando un'interfaccia di servizio correlata più adatta per l'accesso da JavaScript (descritta successivamente nella sezione relativa alle interfacce utente Web).

Componenti

Jazz Platform ha un'architettura modulare ed estensibile. Un modulo tipico, detto componente Jazz, fornisce funzionalità che facilitano alcune parti del ciclo di sviluppo software, come ad esempio la traccia di difetti o le build automatizzate. Un componente tipico fornisce uno o più servizi e le corrispondenti librerie client, insieme alle parti dell'interfaccia utente basate sul dominio basate su tali livelli inferiori. L'installazione di un componente su un server Jazz rende i servizi del componente generalmente disponibili, mentre l'installazione del componente su un client Jazz consente a un utente di accedere al nuovo servizio. Un componente Jazz può esistere da solo (e si baserà solo sulle funzioni integrate) oppure può sfruttare le funzionalità fornite da altri componenti installati.

Mentre la nozione di componente risulta utile per spiegare il modo in cui è possibile estendere Jazz Platform, Jazz non fornisce un nuovo meccanismo di componenti a scopo generale. Jazz Platform sfrutta invece i meccanismi di estendibilità di Eclipse Platform sia sul server che sui client basati su Java. Il lettore non esperto delle nozioni di Eclipse Platform relative a plug-in e punti di estensione dovrebbero leggere la sezione Platform Runtime and Plug-in Architecture del manuale Eclipse Platform Technical Overview per ottenere ulteriori informazioni. I componenti sono assemblati insieme come parti di plug-in di Eclipse e contribuiscono alle estensioni di altri componenti utilizzando i punti di estensione di Eclipse. Un singolo componente è costituito da una serie di plug-in, alcuni dei quali sono installati sul server mentre altri sul client.

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

I plug-in di servizio, comune e di IU Web sono installati sul server.

I plug-in utilizzano i punti di estensione per registrarsi con Jazz. Il plug-in comune del componente, installato sia sul client che sul server, registra l'interfaccia di servizio del componente mediante un punto di estensione. Il plug-in di servizio registra la corrispondente implementazione del servizio mediante un punto di estensione solo sul server. Il plug-in della libreria client registra l'interfaccia del client mediante un punto di estensione solo sul client. Questi contributi definiscono la stringa dell'ID del componente. I contributi sono utilizzati per collegare i componenti in fase di runtime.

I plug-in lato client per l'IU del client e la libreria del client del componente sono installato nell'IDE Eclipse. I plug-in dell'ID client contribuiscono le loro viste, gli editor ecc. ecc. mediante i punti di estensione di Eclipse Platform, mentre i plug-in della libreria client registrano le proprie interfacce client mediante un punto di estensione specifico di Jazz.

Le librerie client sono progettate per funzionare sui client, come Ant, che non hanno un runtime OSGi. Tali librerie possono dipendere solo da librerie client di altri componenti, ma non dai servizi o dalle IU.

I componenti devono dichiarare le dipendenze da altri componenti. Il grafico delle dipendenze non deve contenere cicli. Un componente può dichiarare anche i propri punti di estensione, consentendo l'estensione a sua volta da altri componenti.

Server

Il server Jazz è un'applicazione Web basata su Java che viene eseguita su un qualsiasi server delle applicazioni compatibile con Java EE 1.4. I server delle applicazioni correntemente supportati sono Apache Tomcat e IBM WebSphere Application Server. Apache Tomcat è un contenitore servlet open source che può essere installato su macchine di classe desktop. IBM WebSphere Application Server è un prodotto disponibile in commercio che offre soluzioni di diverso tipo. La semantica dei servizi e delle API Jazz lato server è indipendente dalla scelta del server delle applicazioni, consentendo quindi il supporto di altri server in release future.

Per i lettori che sono esperti di Eclipse, l'applicazione Web Jazz è strutturata internamente attorno a un runtime OSGi. L'applicazione Web Jazz gestisce i servizi di tutti i componenti Jazz installati sul server. L'installazione di un nuovo componente su un server Jazz implica la diffusione dei plug-in 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, mentre il file manifest di estensione separato contiene tutti i contributi ai diversi punti di estensione. Il runtime OSGi elabora i file manifest del bundle all'avvio, garantendo in questo modo che le dipendenze tra componenti siano soddisfatte per tutti i componenti installati. L'applicazione Web Jazz gestisce il registro di estensione che comprende i contributi di tutti i componenti installati e indirizza ogni richiesta in arrivo su un'interfaccia di servizio del componente al servizio corrispondente per l'elaborazione.