Платформа Jazz основана на архитектуре клиент-сервер. Сервер Jazz, который обычно устанавливается в безопасной системе класса сервера, предоставляет набор служб и предоставляет хранилище для данных. Удаленные клиенты взаимодействуют с сервером Jazz по сети с помощью протокола HTTP. Удаленные клиенты могут быть весьма разнообразными. Наиболее типичным примером является среда IDE с встроенной поддержкой платформы Jazz, которая используется пользователем, участвующем в коллективной разработке программного обеспечения. Некоторые удаленные клиенты, в том числе командные инструменты Jazz и сценарии Ant, работают в автономном режиме. Другие клиенты подключаются к серверу напрямую через веб-браузер, не устанавливая специальное программное обеспечение для поддержки Jazz на своих компьютерах.
Платформа Jazz состоит из парных элементов: службы и библиотеки клиента. Служба находится на сервере. Реализация службы написана на языке Java. Служба взаимодействует со своим интерфейсом. Интерфейс службы применяется как определение интерфейса веб-службы на языке Java для обеспечения синхронного взаимодействия между клиентом и сервером по типу RPC.
Расположенный на клиенте парный элемент - это библиотека клиента Java, предоставляющая интерфейс клиента. Библиотека клиента направляет вызовы интерфейсу службы, которые передаются по сети соответствующей службе сервера для обработки. Библиотека клиента обеспечивает кэширование, уведомление о событиях и прочие функции, которые повышают удобство API по сравнению с простым интерфейсом службы.
Написанные на Java клиенты Jazz, в том числе Eclipse IDE и Ant, используют методы в интерфейсе клиента. (Аналогичные библиотеки клиента можно написать и для клиентов на других языках.)
Работа с клиентами, подключающимися через веб-браузер, выполняется аналогичным образом с помощью интерфейса службы, адаптированного для доступа через JavaScript (он описан в разделе с информацией о веб-интерфейсах).
Платформа Jazz имеет модульную, расширяемую архитектуру. Стандартный модуль, который называется компонентом Jazz, предоставляет функции на определенном этапе жизненного цикла разработки программного обеспечения, например отслеживание дефектов или автоматическую компоновку. Как правило, компонент предоставляет одну или несколько служб и соответствующие библиотеки клиента, а также особые фрагменты пользовательского интерфейса, созданные поверх более низких уровней. Установив компонент на сервере Jazz, можно сделать доступными его службы на глобальном уровне. Установив компонент на клиенте Jazz, можно предоставить пользователю доступ к новой службе. Компонент Jazz может быть самодостаточным (если он использует только базовые встроенные функции) или зависеть от функций, предоставляемых другими установленными компонентами.
Хотя понятие компонента удобно для описания расширения платформы Jazz, в Jazz не предусмотрен новый механизм создания компонентов общего назначения. На сервере и клиентах Java платформы Jazz используются механизмы расширения платформы Eclipse. (Тем читателям, которые не знакомы с понятиями модуля и точки расширения платформы Eclipse, рекомендуется ознакомиться с разделом Архитектура модулей и среда выполнения платформы книги Платформа Eclipse: Технический обзор). Компоненты формируются в виде модулей Eclipse и предоставляют расширения другим компонентам через точки расширения Eclipse. Компонент состоит из группы модулей, часть из которых устанавливается на сервере, а часть - на клиенте.
Прототип компонента Jazz состоит из пяти модулей:
Модуль службы, общий модуль и модуль веб-интерфейса устанавливаются на сервере.
Модули регистрируются в Jazz через точки расширения. Общий модуль компонента, который устанавливается на клиенте и на сервере, регистрирует интерфейс службы компонента через точку расширения. Модуль службы регистрирует соответствующую реализацию службы через точку расширения сервера. Модуль библиотеки клиента регистрирует интерфейс клиента через точку расширения клиента. Эти дополнения содержат строку ИД компонента. Дополнения позволяют связать компоненты в единое целое во время выполнения.
Модули клиента, содержащие пользовательский интерфейс и библиотеку клиента, устанавливаются в Eclipse IDE. Модули пользовательского интерфейса клиента предоставляют свои панели, редакторы и другие элементы через точки расширения платформы Eclipse, а модули библиотеки клиента регистрируют свои интерфейсы клиента через специальную точку расширения Jazz.
Библиотеки клиентов предназначены для применения в клиентах, не имеющих среды выполнения OSGi, таких как Ant. Библиотеки клиентов могут зависеть только от библиотек клиентов других компонентов, но не от служб и пользовательского интерфейса.
В компонентах должны быть объявлены зависимости от других компонентов. В графе зависимостей не должно быть циклов. Кроме того, в компоненте могут быть объявлены точки расширения, с помощью которых он может быть расширен другими компонентами.
Сервер Jazz - это веб-приложение на Java, которое выполняется на сервере приложений, совместимом с Java EE 1.4. В настоящее время поддерживаются серверы приложений Apache Tomcat и IBM WebSphere Application Server. Apache Tomcat - это контейнер сервлета с открытым исходным кодом, которые можно устанавливать в рабочих системах. IBM WebSphere Application Server - это коммерческое программное обеспечение, поставляемое в нескольких вариантах разного масштаба. Семантика служб и API Jazz для сервера не зависит от типа сервера приложений, что позволяет добавить поддержку других серверов в будущих выпусках.
Для читателей, знакомых с Eclipse, будет полезно узнать, что внутренняя структура веб-приложения Jazz строится вокруг среды выполнения OSGi. Веб-приложение Jazz обрабатывает службы всех компонентов Jazz, установленных на сервере. Для установки нового компонента на сервере Jazz необходимо создать модули компонента для сервера (комплекты OSGi), зарегистрированные в основной среде выполнения OSGi приложения. В манифесте комплекта должны быть объявлены все зависимости от других установленных компонентов. В отдельном манифесте расширения определены дополнения к различным точкам расширения. Среда выполнения OSGi обрабатывает манифесты комплекта при запуске, проверяя зависимости между установленными компонентами. Веб-приложение Jazz управляет реестром расширений, в котором собраны дополнения всех установленных компонентов, и направляет входящие запросы к интерфейсу службы компонента в соответствующую службу для обработки.