| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <!--#include virtual="../../includes/_header.htm" --> | |
| <!--#include virtual="../../includes/_top.htm" --> | |
| <div class="content"> | |
| <div class="p-compatibility"> | |
| <h1>Compatibility</h1> | |
| 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. | |
| <h2 class="anchor-heading">JDK Compatibility Across Kafka Versions</h2> | |
| <table> | |
| <tr> | |
| <th>Module</th> | |
| <th>Kafka Version</th> | |
| <th>Java 11</th> | |
| <th>Java 17</th> | |
| <th>Java 24</th> | |
| </tr> | |
| <tr> | |
| <td>Clients</td> | |
| <td>4.0.0</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>Streams</td> | |
| <td>4.0.0</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>Connect</td> | |
| <td>4.0.0</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>Server</td> | |
| <td>4.0.0</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| </table> | |
| <p><strong>Note: Java 8 is removed in Kafka 4.0 and is no longer supported.</strong></p> | |
| <h2 class="anchor-heading">Server Compatibility</h2> | |
| <table> | |
| <tr> | |
| <th>KRaft Cluster Version</th> | |
| <th>Compatibility 4.0 Server (dynamic voter)</th> | |
| <th>Compatibility 4.0 Server (static voter)</th> | |
| </tr> | |
| <tr> | |
| <td>before 3.2.x</td> | |
| <td>❌</td> | |
| <td>❌</td> | |
| </tr> | |
| <tr> | |
| <td>3.3.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.4.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.5.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.6.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.7.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.8.x</td> | |
| <td>❌</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>3.9.x</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| <tr> | |
| <td>4.0.x</td> | |
| <td>✅</td> | |
| <td>✅</td> | |
| </tr> | |
| </table> | |
| <p><strong>Note: Can’t upgrade server from static voter to dynamic | |
| voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</strong></p> | |
| <h4>Client/Broker Forward Compatibility</h4> | |
| <table> | |
| <tr> | |
| <th>Kafka Version</th> | |
| <th>Module</th> | |
| <th>Compatibility with Kafka 4.0</th> | |
| <th>Key Differences/Limitations</th> | |
| </tr> | |
| <tr> | |
| <td rowspan="3">0.x, 1.x, 2.0</td> | |
| <td>Client</td> | |
| <td>❌ Not Compatible</td> | |
| <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a | |
| href="https://cwiki.apache.org/confluence/x/K5sODg">KIP-896</a>). | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>Streams</td> | |
| <td>❌ Not Compatible</td> | |
| <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a | |
| href="https://cwiki.apache.org/confluence/x/K5sODg">KIP-896</a>). | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>Connect</td> | |
| <td>❌ Not Compatible</td> | |
| <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a | |
| href="https://cwiki.apache.org/confluence/x/K5sODg">KIP-896</a>). | |
| </td> | |
| </tr> | |
| <tr> | |
| <td rowspan="3">2.1 ~ 2.8</td> | |
| <td>Client</td> | |
| <td>⚠️ Partially Compatible</td> | |
| <td> | |
| More details in the <a href="/40/documentation.html#upgrade_400_notable_consumer">Consumer</a>, | |
| <a href="/40/documentation.html#upgrade_400_notable_producer">Producer</a>, and | |
| <a href="/40/documentation.html#upgrade_400_notable_admin_client">Admin Client</a> section. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>Streams</td> | |
| <td>⚠️ Limited Compatibility</td> | |
| <td> | |
| More details in the <a href="/40/documentation.html#upgrade_400_notable_kafka_streams">Kafka Streams</a> section. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>Connect</td> | |
| <td>⚠️ Limited Compatibility</td> | |
| <td> | |
| More details in the <a href="/40/documentation.html#upgrade_400_notable_connect">Connect</a> section. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td rowspan="3">3.x</td> | |
| <td>Client</td> | |
| <td>✅ Fully Compatible</td> | |
| <td></td> | |
| </tr> | |
| <tr> | |
| <td>Streams</td> | |
| <td>✅ Fully Compatible</td> | |
| <td></td> | |
| </tr> | |
| <tr> | |
| <td>Connect</td> | |
| <td>✅ Fully Compatible</td> | |
| <td></td> | |
| </tr> | |
| </table> | |
| <p> | |
| Note: Starting with Kafka 4.0, the <code>--zookeeper</code> option in AdminClient commands has been removed. Users must | |
| use the <code>--bootstrap-server</code> option to interact with the Kafka cluster. This change aligns with the transition | |
| to KRaft mode. | |
| </p> | |
| </div> | |
| <!--#include virtual="../../includes/_footer.htm" --> | |
| </div> |