Jazz 플랫폼은 클라이언트-서버 아키텍처를 기반으로 합니다. 일반적으로 보안된 서버급 시스템에서 실행되는 Jazz 서버는 서비스 세트를 호스트하고 저장소에 데이터를 보관합니다. 원격 클라이언트는 HTTP를 사용하여 네트워크에서 Jazz 서버와 통신합니다. 원격 클라이언트는 협업 소프트웨어 개발에 참여하는 사용자가 구동하며, 통합 Jazz 플랫폼 지원이 있는 IDE의 순수 클라이언트를 포함한 여러 형태입니다. Jazz 특정 명령행 도구나 Ant 스크립트와 같은 기타 원격 클라이언트는 헤드리스 모드로 작동합니다. 다른 클라이언트는 Jazz 특정 소프트웨어를 시스템에 설치할 필요없이 웹 브라우저를 사용하여 직접 서버에 액세스합니다.
Jazz 플랫폼에는 일치하는 파트 즉, 서비스 및 클라이언트 라이브러리가 있습니다. 서비스는 서버측에 있습니다. 서비스 구현은 Java로 작성됩니다. 서비스 인터페이스를 통해 서비스에 접속합니다. 서비스 인터페이스는 클라이언트에서 서버로의 동기식 RPC 스타일 통신에 사용되는 웹 서비스 인터페이스의 Java 서비스 정의로 사용됩니다.
이에 해당하는 클라이언트측 부분은 클라이언트 인터페이스를 표시하는 Java 기반 클라이언트 라이브러리입니다. 클라이언트 라이브러리는 해당 서비스 인터페이스에 대한 호출을 작성하며 이는 네트워크에서 처리할 서버의 해당 서비스로 송신됩니다. 클라이언트 라이브러리는 캐싱, 이벤트 알림 및 원시 서비스 인터페이스보다 API를 보다 편리하게 사용할 수 있도록 하는 다른 기능을 제공합니다.
Java 기반 Jazz 클라이언트(예: Eclipse IDE 및 Ant)는 클라이언트 인터페이스의 메소드를 사용합니다. (비Java 기반 클라이언트에 사용할 유사한 클라이언트 라이브러리를 쓸 수 있습니다.)
웹 브라우저 클라이언트는 Javascript로부터의 액세스에 보다 적합한 관련 서비스 인터페이스를 사용하여 유사한 양식으로 핸들링됩니다.
Jazz 플랫폼에는 모듈식 및 확장 가능한 아키텍처가 있습니다. Jazz 컴포넌트로 참조되는 일반 모듈은 결함 추적 또는 자동화된 빌드와 같이 소프트웨어 개발 라이프사이클의 일부 패싯을 도와주는 기능을 제공합니다. 일반 컴포넌트는 하나 이상의 서비스 및 해당 클라이언트 라이브러리를 더 낮은 계층에 빌드된 도메인 특정 UI 조각과 함께 제공합니다. Jazz 서버에 컴포넌트를 설치하면 컴포넌트의 서비스가 일반적으로 사용 가능하게 되는 반면 Jazz 클라이언트에 컴포넌트를 설치하면 사용자가 새 서비스에 액세스할 수 있습니다. Jazz 컴포넌트는 자체적으로 사용되거나(기본 내장 기능에만 의존함) 설치된 다른 컴포넌트가 제공하는 기능을 이용할 수 있습니다.
컴포넌트의 개념이 Jazz 플랫폼의 확장 방식을 설명하는 데 편리하지만 Jazz는 새 일반 용도 컴포넌트 메커니즘을 제공하지 않습니다. 대신에 Jazz 플랫폼은 Eclipse 플랫폼의 확장성 메커니즘을 서버와 Java 기반 클라이언트에서 모두 이용합니다. (플러그인 및 확장점에 대한 Eclipse 플랫폼 개념에 익숙하지 않은 독자는 Eclipse Platform Technical Overview의 플랫폼 런타임 및 플러그인 아키텍처 섹션에서 배경 정보를 읽어야 합니다.) 컴포넌트는 Eclipse의 플러그인 개념으로 패키지화되고 Eclipse의 확장점 개념을 사용하여 다른 컴포넌트에 확장을 컨트리뷰션합니다. 단일 컴포넌트는 플러그인 세트(일부는 서버에, 일부는 클라이언트에 설치됨)로 이루어집니다.
원형적 Jazz 컴포넌트는 5가지 플러그인으로 이루어져 있습니다.
서비스, 공통 및 웹 UI 플러그인은 서버에 설치됩니다.
플러그인은 확장점을 사용하여 Jazz에 등록합니다. 클라이언트와 서버 모두에 설치되는 컴포넌트의 공통 플러그인은 확장점을 통해 컴포넌트의 서비스 인터페이스를 등록합니다. 서비스 플러그인은 서버측 전용 확장점을 통해 해당 서비스 구현을 등록합니다. 클라이언트 라이브러리 플러그인은 클라이언트측 전용 확장점을 통해 클라이언트 인터페이스를 등록합니다. 이 컨트리뷰션은 컴포넌트의 ID 문자열을 제공합니다. 컨트리뷰션은 런타임에 컴포넌트를 서로 연결하는 데 사용됩니다.
컴포넌트의 클라이언트 UI 및 클라이언트 라이브러리에 대한 클라이언트측 플러그인은 Eclipse IDE로 설치됩니다. 클라이언트 UI 플러그인은 Eclipse 플랫폼 확장점을 통해 보기, 편집기 등을 컨트리뷰션하고 클라이언트 라이브러리 플러그인은 Jazz 특정 확장점을 통해 클라이언트 인터페이스를 등록합니다.
클라이언트 라이브러리는 OSGi 런타임이 없는 Ant와 같은 클라이언트에서 작동하도록 디자인되었습니다. 클라이언트 라이브러리는 서비스나 UI가 아닌 기타 컴포넌트의 클라이언트 라이브러리에만 종속될 수 있습니다.
컴포넌트는 다른 컴포넌트에 대한 종속성을 선언해야 합니다. 종속성 그래프에 원이 있으면 안됩니다. 컴포넌트는 자체 확장점을 선언해서 다른 컴포넌트가 차례로 자신을 확장하도록 할 수도 있습니다.
Jazz 서버는 Java EE 1.4 호환 애플리케이션 서버 내에서 실행하는 Java 기반 웹 애플리케이션입니다. 현재 지원되는 애플리케이션 서버는 Apache Tomcat 및 IBM WebSphere Application Server입니다. Apache Tomcat은 데스크탑 클래스 시스템에 설치할 수 있는 개방 소스 서블릿 컨테이너입니다. IBM WebSphere Application Server는 다양한 규모의 상업적으로 사용 가능한 제품 오퍼링 솔루션입니다. 이후 릴리스에서 추가 애플리케이션 서버가 지원되도록 서비스 및 서버측 Jazz API의 시맨틱은 애플리케이션 서버의 선택사항과 무관합니다.
Eclipse에 익숙한 경우 Jazz 웹 애플리케이션은 OSGi 런타임 주위에서 내부적으로 구조화됩니다. Jazz 웹 애플리케이션은 서버에 설치된 모든 Jazz 컴포넌트의 서비스를 핸들링합니다. Jazz 서버에 새 컴포넌트를 설치하는 것은 기본 웹 애플리케이션의 OSGi 런타임에 알려진 컴포넌트의 서버측 플러그인(OSGi 번들) 작성을 포함합니다. 번들의 Manifest는 설치된 다른 컴포넌트에 대한 종속성을 선언합니다. 개별 확장 Manifest는 다양한 확장점에 대한 컨트리뷰션을 포함합니다. OSGi 런타임은 시작 시 번들 Manifest를 처리해서 설치된 모든 컴포넌트에 대한 컴포넌트간 종속이 충족되도록 합니다. Jazz 웹 애플리케이션이 설치된 모든 컴포넌트의 컨트리뷰션을 통합하고 컴포넌트 서비스 인터페이스의 각 수신 요청을 처리하도록 해당 서비스로 라우트 지정하는 확장 레지스트리를 관리합니다.