La plateforme Jazz est fondée sur une architecture client-serveur. Le serveur Jazz qui s'exécute normalement sur une machine de classe serveur, abrite un ensemble de services et des données dans son référentiel. Les clients distants communiquent avec le serveur Jazz sur le réseau à l'aide de HTTP. Les clients distants se présentent sous plusieurs formes, la plus importante étant une interface IDE avec un support de plateforme Jazz intégré, piloté par un utilisateur engagé dans un développement de logiciel collaboratif. D'autres clients distants, tels que les outils de ligne de commande ou des scripts Ant, opèrent en mode sans interface graphique. D'autres accèdent au serveur directement à l'aide d'un navigateur Web, sans avoir besoin d'installer un logiciel spécifique Jazz sur leur machine.
La plateforme comprend des parties qui correspondent ; la bibliothèque de service et de client. Le service est du côté du serveur. L'implémentation de service est écrite en Java. Le service est contacté via son interface de service. L'interface de service est utilisée comme définition de service Java d'une interface de service Web qui est utilisée pour des communications synchrones RPC du client vers le serveur.
La partie client correspondante est une bibliothèque client basée sur Java qui expose une interface client. La bibliothèque client effectue des appels vers l'interface de service correspondante qui sont envoyés sur le réseau du service correspondant du serveur pour le traitement. La bibliothèque client fournit la mise en cache, la notification d'événement et d'autres fonctions qui rendent les API plus faciles à utiliser que les interfaces de service brutes.
Les clients Jazz basé sur Java, tels que Eclipse IDE et Ant, utilisent des méthodes dans l'interface client. (Les bibliothèques de client analogues sont accessibles en écriture pour être utilisées par des clients non basés sur Java.)
Les clients de navigateur Web sont gérés de manière analogue à l'aide d'une interface de service plus destinée à l'accès à partir de JavaScript (décrit dans la dernière section relative aux interfaces utilisateur Web).
Les plateformes Jazz se présentent sous la forme d'une architecture extensible et modulaire. Un module classique, considéré comme composant Jazz, fournit des fonctions mettant à votre disposition certaines facettes du cycle de vie de développement d'application, telles que le suivi ou les générations automatiques. Un composant classique fournit un ou plusieurs services et les bibliothèques client correspondantes, ainsi que des pièces d'interface utilisateur spécifiques au domaine construite sur ces couches basses. L'installation d'un composant sur un serveur Jazz rend généralement les services du composant disponibles, alors que l'installation du composant sur un client Jazz permet l'accès utilisateur au nouveau service. Un composant Jazz peut être utilisé de manière autonome (il repose uniquement sur une fonctionnalité essentielle intégrée), soit utiliser une fonctionnalité fournie par d'autres composants installés.
Alors que la notion de composant permet d'expliquer de manière commode comment la plateforme Jazz est étendue, Jazz n'offre pas de nouveau mécanisme de composant général. En revanche, la plateforme Jazz prend appui sur les mécanismes d'extensibilité sur le serveur et les clients basés sur Java. (Le lecteur qui ne serait pas familiarisé avec les notions de la plateforme Eclipse de plug-ins et de points d'extension doit se référer à la section Platform Runtime and Plug-in Architecture de Eclipse Platform Technical Overview pour plus d'informations.) Les composants sont mis en forme en faisant appel à la notion Eclipse de plug-ins et contribuent aux extensions d'autres composants à l'aide des points d'extension, autre notion Eclipse. Un composant simple est constitué d'un ensemble de plug-ins, dont certains sont installés sur le serveur et d'autres sur le client.
Le composant Jazz classique est constitué de cinq plug-ins :
Les plug-ins service, commun et Interface utilisateur Web sont installés sur le serveur.
Les plug-ins utilisent des points d'extension pour l'enregistrement avec Jazz. Le plug-in commun de composant, qui est installé à la fois sur le client et le serveur, enregistre l'interface de service de composant via un point d'extension. Le plug-in de service enregistre l'implémentation de service correspondante via un point d'extension se trouvant côté serveur uniquement. Le plug-in de bibliothèque client enregistre l'interface client via un point d'extension se trouvant côté client uniquement. Ces contributions portent l'ID de chaîne du composant. Les contributions permettent de lier entre eux les composants au moment de l'exécution.
Les plug-ins côté client pour l'interface utilisateur client du composant et la bibliothèque client sont installés dans l'interface IDE Eclipse. Les plug-ins d'interface utilisateur client apportent leurs vues, éditeurs, etc. via les points d'extension de la plateforme Eclipse ; et les plug-ins de bibliothèque client enregistrent leurs interfaces client via un point d'extension spécifique à Jazz.
Les bibliothèques client sont conçues pour être utilisées dans les clients, tels que Ant, qui ne disposent pas d'exécution OSGi. Les bibliothèques client peuvent uniquement dépendre de bibliothèques client d'autres composants et non de leurs services ou interfaces utilisateur.
Les composants doivent déclarer toute dépendance existant sur d'autres composants. Le graphique des dépendances ne contient pas de cycles. Un composant peut également déclarer ses propres points d'extension, ce qui lui permet d'être étendu à son tour à d'autres composants.
Le serveur Jazz est une application Web basée sur Java qui s'exécute au sein de tout serveur d'applications compatible avec Java EE 1.4. Les serveurs d'applications qui sont actuellement pris en charge sont Apache Tomcat et IBM WebSphere Application Server. Apache Tomcat est un conteneur de servlet de code source libre qui peut être installé sur des ordinateurs de bureau. IBM WebSphere Application Server est un ensemble de solutions d'offre de produit disponible commercialement à plusieurs niveaux. Les sémantiques des services et des API Jazz côté serveur sont indépendantes du choix du serveur d'applications, permettant la prise en charge de serveurs d'applications supplémentaires dans les éditions futures.
Pour les lecteurs familiarisés avec Eclipse, l'application Web Jazz est structurée en interne autour de l'exécution OSGi. L'application Web Jazz gère les services de tous les composants Jazz installés sur le serveur. L'installation d'un nouveau composant sur un serveur Jazz implique que les plug-ins côté serveur du composant (bundles OSGi) se fassent connaître de l'exécution OSGi de l'application Web principale. Le manifeste du bundle déclare toute dépendance sur les autres composants installés ; le manifeste de l'extension séparé contient des contributions à plusieurs points d'extension. L'exécution d'initiative OSGi traite les manifestes au démarrage, en s'assurant que les dépendances inter-composant soient satisfaites pour tous les composants installés. L'application Web Jazz gère le registre d'extension qui regroupe les contributions de tous les composants installés et achemine chaque demande entrante sur une interface de service de composant vers le service correspondant pour le traitement.