# deepl/deepl-java architecture

> Architecture diagram of the GitHub repository deepl/deepl-java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/deepl/deepl-java
- Repository: https://github.com/deepl/deepl-java

## Overview

The DeepL Java Library is a Java client for sending text and document work to DeepL and returning typed results. Applications construct a DeepLClient, configure requests, and invoke features such as text translation, rephrasing, document translation, language and usage lookup, glossary/style-rule management, and translation-memory operations. DeepLClient owns API operations; HttpClientWrapper handles requests, retries, and external asset transfers, while Parser converts API responses into library models. The source excerpts are partial, so the feature edges reflect documented support rather than a complete inspection of each implementation.

Main entry points: [`deepl-java/src/main/java/com/deepl/api/DeepLClient.java`](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java) (DeepLClient), [`deepl-java/src/main/java/com/deepl/api/HttpClientWrapper.java`](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/HttpClientWrapper.java) (HTTP client), [`deepl-java/src/main/java/com/deepl/api/DeepLClientOptions.java`](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClientOptions.java) (Client options), [`deepl-java/src/main/java/com/deepl/api/parsing/Parser.java`](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/parsing/Parser.java) (Response parser)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client API"]
  node_client["DeepLClient<br/>[DeepLClient.java]"]
  node_clientopts["Client options"]
end

subgraph group_content["Language Features"]
  node_text["Text translation<br/>[DeepLClient.java]"]
  node_rephrase["Text rephrasing<br/>[DeepLClient.java]"]
  node_documents["Document translation<br/>[DeepLClient.java]"]
  node_languageusage["Languages and usage<br/>[DeepLClient.java]"]
end

subgraph group_resources["Resource Management"]
  node_glossaries["Glossary management<br/>[DeepLClient.java]"]
  node_stylerules["Style rules<br/>[DeepLClient.java]"]
  node_memory["Translation memories<br/>[DeepLClient.java]"]
end

subgraph group_transport["Transport and Parsing"]
  node_http["HTTP client"]
  node_parser["Response parser<br/>[Parser.java]"]
  node_contentbuilder["Request content<br/>[HttpContent.java]"]
  node_backoff["Retry backoff<br/>[BackoffTimer.java]"]
end

node_application(("Java application"))
node_deepl{{"DeepL API"}}
node_assetstore{{"External asset storage"}}

node_application -->|"constructs and calls"| node_client
node_application -->|"configures"| node_clientopts
node_client -->|"offers"| node_text
node_client -->|"offers"| node_rephrase
node_client -->|"offers"| node_documents
node_client -->|"offers"| node_languageusage
node_client -->|"offers"| node_glossaries
node_client -->|"offers"| node_stylerules
node_client -->|"offers"| node_memory
node_client -->|"sends requests"| node_http
node_client -->|"parses responses"| node_parser
node_http -->|"builds request bodies"| node_contentbuilder
node_http -->|"retries with"| node_backoff
node_http -->|"sends feature requests"| node_deepl
node_deepl -->|"returns responses"| node_http
node_http -.->|"transfers assets"| node_assetstore

click node_client "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_clientopts "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClientOptions.java"
click node_text "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_rephrase "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_documents "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_languageusage "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_glossaries "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_stylerules "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_memory "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java"
click node_http "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/HttpClientWrapper.java"
click node_parser "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/parsing/Parser.java"
click node_contentbuilder "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/http/HttpContent.java"
click node_backoff "https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/utils/BackoffTimer.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_client,node_clientopts toneBlue
class node_text,node_rephrase,node_documents,node_languageusage,node_assetstore toneAmber
class node_glossaries,node_stylerules,node_memory,node_deepl toneMint
class node_http,node_parser,node_contentbuilder,node_backoff toneRose
class node_application toneIndigo
```

## Components

### Client API

- [DeepLClient](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Client options](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClientOptions.java): `deepl-java/src/main/java/com/deepl/api/DeepLClientOptions.java`

### Language Features

- [Text translation](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Text rephrasing](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Document translation](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Languages and usage](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`

### Resource Management

- [Glossary management](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Style rules](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`
- [Translation memories](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/DeepLClient.java): `deepl-java/src/main/java/com/deepl/api/DeepLClient.java`

### Transport and Parsing

- [HTTP client](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/HttpClientWrapper.java): `deepl-java/src/main/java/com/deepl/api/HttpClientWrapper.java`
- [Response parser](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/parsing/Parser.java): `deepl-java/src/main/java/com/deepl/api/parsing/Parser.java`
- [Request content](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/http/HttpContent.java): `deepl-java/src/main/java/com/deepl/api/http/HttpContent.java`
- [Retry backoff](https://github.com/deepl/deepl-java/blob/main/deepl-java/src/main/java/com/deepl/api/utils/BackoffTimer.java): `deepl-java/src/main/java/com/deepl/api/utils/BackoffTimer.java`

### Other components

- **Java application**
- **DeepL API**
- **External asset storage**

## Connections

- Java application → DeepLClient: constructs and calls
- Java application → Client options: configures
- DeepLClient → Text translation: offers
- DeepLClient → Text rephrasing: offers
- DeepLClient → Document translation: offers
- DeepLClient → Languages and usage: offers
- DeepLClient → Glossary management: offers
- DeepLClient → Style rules: offers
- DeepLClient → Translation memories: offers
- DeepLClient → HTTP client: sends requests
- DeepLClient → Response parser: parses responses
- HTTP client → Request content: builds request bodies
- HTTP client → Retry backoff: retries with
- HTTP client → DeepL API: sends feature requests
- DeepL API → HTTP client: returns responses
- HTTP client → External asset storage: transfers assets
