# Compatibility

With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility matrix has been prepared.

## JDK Compatibility Across Kafka Versions

Module | Kafka Version | Java 11 | Java 17 | Java 23
--- | --- | --- | --- | ---
Clients | 4.0.0 | ✅ | ✅ | ✅
Streams | 4.0.0 | ✅ | ✅ | ✅
Connect | 4.0.0 | ❌ | ✅ | ✅
Server | 4.0.0 | ❌ | ✅ | ✅

Note: Java 8 is removed in Kafka 4.0 and is no longer supported.

## Server Compatibility

KRaft Cluster Version | Compatibility 4.0 Server (dynamic voter) | Compatibility 4.0 Server (static voter)
--- | --- | ---
before 3.2.x | ❌ | ❌
3.3.x | ❌ | ✅
3.4.x | ❌ | ✅
3.5.x | ❌ | ✅
3.6.x | ❌ | ✅
3.7.x | ❌ | ✅
3.8.x | ❌ | ✅
3.9.x | ✅ | ✅
4.0.x | ✅ | ✅

Note: Can’t upgrade server from static voter to dynamic voter, see KAFKA-16538.

#### Client/Broker Forward Compatibility

Kafka Version | Module | Compatibility with Kafka 4.0 | Key Differences/Limitations
--- | --- | --- | ---
0.x, 1.x, 2.0 | Client | ❌ Not Compatible | Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
Streams | ❌ Not Compatible | Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
Connect | ❌ Not Compatible | Pre-0.10.x protocols are fully removed in Kafka 4.0 (KIP-896).
2.1 ~ 2.8 | Client | ⚠️ Partially Compatible | More details in the Consumer, Producer, and Admin Client section.
Streams | ⚠️ Limited Compatibility | More details in the Kafka Streams section.
Connect | ⚠️ Limited Compatibility | More details in the Connect section.
3.x | Client | ✅ Fully Compatible |
Streams | ✅ Fully Compatible |
Connect | ✅ Fully Compatible |

Note: Starting with Kafka 4.0, the `--zookeeper` option in AdminClient commands has been removed. Users must use the `--bootstrap-server` option to interact with the Kafka cluster. This change aligns with the transition to KRaft mode.