# Kafka Java programming

*Build Kafka applications with your preferred programming language*

After learning the CLI, it's time to build real applications. This section covers how to write Kafka producers and consumers programmatically, with a focus on Java (the official SDK).

**What you'll learn:**
- How to choose a Kafka client library for your language
- How to set up a Java project with Kafka dependencies
- How to write producers with keys, callbacks, and batching
- How to write consumers with consumer groups and graceful shutdown

## Available tutorials

| Topic | Description |
|-------|-------------|
| [SDK list](https://www.conduktor.io/kafka/kafka-sdk-list) | Recommended client libraries by language |
| [Java programming](https://www.conduktor.io/kafka/java-kafka-programming) | Complete Java producer and consumer tutorials |
| [Advanced consumers](https://www.conduktor.io/kafka/advanced-kafka-consumer-with-java) | Rebalance listeners, seek/assign, threading |
| [Kafka Streams](https://www.conduktor.io/kafka-streams) | Stateful stream processing: joins, aggregations, windowing, and production operations |

> **See it in practice with Conduktor**
> [Conduktor Console](https://docs.conduktor.io/guide/manage-kafka) helps you test your applications by producing and consuming messages, monitoring consumer groups, and inspecting message content during development.

## Next steps

- [Choose a client library](https://www.conduktor.io/kafka/kafka-sdk-list) for your programming language
- [Get the Java overview](https://www.conduktor.io/kafka/java-kafka-programming) to start the official SDK path
- [Build a complete producer](https://www.conduktor.io/kafka/complete-kafka-producer-with-java) with keys, callbacks, and batching
