# Java Kafka programming

*Build Kafka producers and consumers with Java*

Java is the official language for Kafka development, providing the most complete and up-to-date client library. This section walks through creating a project and building your first producer and consumer.

**What you'll learn:**
- How to set up a Java project with Kafka dependencies
- How to create producers with callbacks and keys
- How to create consumers with consumer groups
- How to handle graceful shutdown

## Learning path

| Step | Tutorial | Description |
|------|----------|-------------|
| 1 | Project setup | Choose [Maven](https://www.conduktor.io/kafka/creating-a-kafka-java-project-using-maven-pom-xml) or [Gradle](https://www.conduktor.io/kafka/creating-a-kafka-java-project-using-gradle-build-gradle) |
| 2 | [Producer](https://www.conduktor.io/kafka/complete-kafka-producer-with-java) | Create producers with callbacks, keys, and batching |
| 3 | [Consumer](https://www.conduktor.io/kafka/complete-kafka-consumer-with-java) | Create consumers with groups and graceful shutdown |
| 4 | [Advanced](https://www.conduktor.io/kafka/advanced-kafka-consumer-with-java) | Rebalance listeners, seek/assign, threading |

> **See it in practice with Conduktor**
> [Conduktor Console](https://docs.conduktor.io/guide/manage-kafka) helps you develop and debug Java applications by providing visual access to topics, consumer groups, and messages. Test your producer output and monitor consumer progress in real-time.

## Next steps

- [Set up your project with Maven](https://www.conduktor.io/kafka/creating-a-kafka-java-project-using-maven-pom-xml) to add the Kafka client dependencies
- [Set up with Gradle](https://www.conduktor.io/kafka/creating-a-kafka-java-project-using-gradle-build-gradle) if you prefer that build tool
- [Build your first producer](https://www.conduktor.io/kafka/complete-kafka-producer-with-java) with callbacks and keys
