# Agent Development Kit (ADK) for Java: features, protocols, quickstart

## TL;DR

ADK for Java is Google's Apache-2.0 Java edition of the Agent Development Kit: `LlmAgent` builders, sub-agent transfer, sequential, parallel and loop workflow agents, MCP toolsets and an experimental A2A module, with a local dev UI. It suits JVM teams building Gemini-centred agents. Several newer ADK features, such as graph workflows, are documented for other languages only.

## Key facts

| Field | Value |
| --- | --- |
| Type | Framework |
| Languages / SDKs | Java |
| License | Apache-2.0 |
| Pricing model | [Open core](https://cloud.google.com/products/gemini-enterprise-agent-platform/pricing) |
| Orchestration pattern | Handoff |
| GitHub stars | 1,741 (as of 2026-09-30) |
| GitHub forks | 429 |
| Last push | 2026-09-30 |
| Latest release | v1.10.1 |
| Repository | [google/adk-java](https://github.com/google/adk-java) |
| Website | [adk.dev](https://adk.dev/) |
| Documentation | [adk.dev](https://adk.dev/get-started/java/) |
| Last verified | 2026-09-30 |

## Key features

- `LlmAgent.builder()` defines an agent from a name, model, instruction, tools and optional sub-agents; `FunctionTool.create()` turns annotated static methods into tools. ([source](https://adk.dev/get-started/java/))
- Workflow agents `SequentialAgent`, `ParallelAgent` and `LoopAgent` in the core `agents` package. ([source](https://github.com/google/adk-java/tree/main/core/src/main/java/com/google/adk/agents))
- LLM-driven transfer of control between parent and sub-agents, implemented in the `AgentTransfer` flow. ([source](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/flows/llmflows/AgentTransfer.java))
- `AgentTool` wraps another agent so a parent can call it like a tool and keep control. ([source](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/AgentTool.java))
- `McpToolset` loads tools from MCP servers into an agent. ([source](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/mcp/McpToolset.java))
- A2A module with `RemoteA2AAgent` for calling remote agents and `A2ASendMessageExecutor` plus a Spring Boot webservice for serving ADK agents. ([source](https://github.com/google/adk-java/blob/main/a2a/README.md))
- Session services (in-memory and Vertex AI) in core, a Firestore session service in `contrib`, and model classes for Gemini, Claude and Apigee. ([source](https://github.com/google/adk-java/tree/main/core/src/main/java/com/google/adk/sessions))
- Bidirectional live streaming for voice and text agents, with a Java-specific guide. ([source](https://adk.dev/live/get-started/streaming-java/))

## Architecture and orchestration pattern

Pattern: Handoff.

ADK for Java builds agents as a tree. An `LlmAgent` holds a model, instruction and tools and can list sub-agents; during a run the model can transfer control to a sub-agent or peer (the `AgentTransfer` flow), and an agent wrapped in `AgentTool` can instead be called like a function while the parent keeps control. Deterministic composition uses workflow agents: `SequentialAgent`, `ParallelAgent` and `LoopAgent`. Agents can also be declared in YAML config classes.

A `Runner` (for example `InMemoryRunner`) executes the root agent for a session and returns an RxJava `Flowable` of events. Conversation history and state live in a `Session` managed by a session service: in-memory in core, Vertex AI backed (persisted through Google's Agent Runtime), or Firestore via `contrib`. An agent's `outputKey` writes its final answer into session state so later agents can reference it with `{key}` placeholders. A memory service provides cross-session recall.

The ADK 2.0 graph-based workflows and collaborative agent teams are documented for Python, TypeScript and Go, not Java. Release 1.10.1 added an `agentState` checkpoint on events and an opt-in resumability setting.

### Human in the loop

Human approval uses ADK's tool confirmation, which the docs mark as Experimental. The guide's Java samples cover two forms: `FunctionTool.create(instance, "reimburse", true)` pauses every call of that tool for a yes/no answer, and inside a tool `toolContext.requestConfirmation(hint, payload)` asks for a structured reply, which the tool reads back through `toolContext.toolConfirmation()` when it is called again. The caller answers with a function response carrying a `ToolConfirmation`. The guide lists `DatabaseSessionService` and `VertexAiSessionService` as unsupported for this feature, and its support badge omits Java even though Java samples are shown. `LongRunningFunctionTool` covers tools whose result arrives later. Release 1.10.1 added resumability checkpoints (`EventActions.agentState`) and an opt-in auto-resume flag.

## Protocols

| Protocol | Support | Evidence | Note |
| --- | --- | --- | --- |
| MCP | Yes (checked 2026-09-30) | [link](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/mcp/McpToolset.java) | Client: `McpToolset` in adk-java core connects an agent to MCP servers and exposes their tools; the docs' agent-as-MCP-server guide only shows Python (`to_mcp_server()`). |
| A2A | Partial (checked 2026-09-30) | [link](https://adk.dev/a2a/quickstart-exposing-java/) | Client (`RemoteA2AAgent`) and server both exist in Java, but the Java exposing and consuming quickstarts are labeled Experimental. |
| AG-UI | Unknown (checked 2026-09-30) | — | The ADK AG-UI page lists Java in its support badge, but its tutorial uses CopilotKit's ADK template, the AG-UI repository's `adk-middleware` has only Python and TypeScript packages, and adk-java contains no AG-UI code; no Java setup is documented. |

## Best for

- Java 17+ services that want Google's agent toolkit with Gemini models ([shortlist](https://multiagentguide.top/best/java-jvm.md))
- Fixed pipelines built from sequential, parallel and loop agents
- Agents that keep sessions in Vertex AI or Firestore on Google Cloud

## Not for

- Teams that need ADK 2.0 graph workflows or collaborative agent teams, which are not documented for Java
- Teams that want Google's managed Agent Runtime; its deployment guide covers Python and Go only
- Production use that cannot accept Pre-GA terms; the README marks the project as Preview

## Quickstart

```sh
<dependency>
  <groupId>com.google.adk</groupId>
  <artifactId>google-adk</artifactId>
  <version>1.10.1</version>
</dependency>
```

Install not yet verified by this site.

```java
import com.google.adk.agents.LlmAgent;
import com.google.adk.agents.SequentialAgent;
import com.google.adk.runner.InMemoryRunner;
import com.google.adk.sessions.Session;
import com.google.genai.types.Content;
import com.google.genai.types.Part;

LlmAgent drafter = LlmAgent.builder().name("drafter").model("gemini-flash-latest")
    .instruction("Draft a short release note for the user's change.").outputKey("draft").build();
LlmAgent editor = LlmAgent.builder().name("editor").model("gemini-flash-latest")
    .instruction("Shorten this note to two sentences: {draft}").build();
SequentialAgent notes = SequentialAgent.builder().name("notes").subAgents(drafter, editor).build();

InMemoryRunner runner = new InMemoryRunner(notes);
Session session = runner.sessionService().createSession(runner.appName(), "user1").blockingGet();
Content msg = Content.fromParts(Part.fromText("Added retry support to the HTTP client"));
runner.runAsync(session.userId(), session.id(), msg)
    .blockingForEach(e -> { if (e.finalResponse()) System.out.println(e.stringifyContent()); });
```

### Common pitfalls

- Needs Java 17+ and Maven 3.9+; add `google-adk-dev` as well for the dev web UI.
- The Java quickstart page still pins version 1.6.0, while the README and GitHub releases are at 1.10.1 (2026-09-18).
- Set `GOOGLE_API_KEY` (or Vertex AI project settings) in `.env` before running.
- The quickstart warns that ADK Java 0.3.0 and lower is not compatible with Gemini 3 Pro Preview function calling.
- Recent releases removed deprecated `Runner` and `LlmAgent` methods; check CHANGELOG.md when upgrading.

Official quickstart: https://adk.dev/get-started/java/

## Pros

- The README states the Java edition offers the same features and interface as the Python ADK, so concepts carry over. ([source](https://github.com/google/adk-java/blob/main/README.md))
- A2A works in both directions from Java: `RemoteA2AAgent` for calling remote agents and a webservice module for serving them. ([source](https://github.com/google/adk-java/blob/main/a2a/README.md))
- Beyond Gemini, core has Claude and Apigee model classes, and `contrib` adds LangChain4j and Spring AI integrations. ([source](https://github.com/google/adk-java/tree/main/contrib))
- Releases are frequent: v1.7.0 through v1.10.1 shipped between July and September 2026. ([source](https://github.com/google/adk-java/releases))

## Cons

- The README marks the project as Preview under Google's Pre-GA Offerings Terms, with possibly limited support, and lists agent evaluation as coming soon. ([source](https://github.com/google/adk-java/blob/main/README.md))
- ADK 2.0 graph-based workflows are documented for Python, TypeScript and Go only. ([source](https://adk.dev/graphs/))
- Collaborative agent teams with chat, task and single-turn modes are documented for Python and Go only. ([source](https://adk.dev/workflows/collaboration/))
- Deployment to Google's managed Agent Runtime is documented for Python and Go, not Java. ([source](https://adk.dev/deploy/agent-runtime/))
- The Java A2A quickstarts are labeled Experimental. ([source](https://adk.dev/a2a/quickstart-consuming-java/))

## Alternatives

- [Google ADK (Python)](https://multiagentguide.top/tools/google-adk.md)
- [Spring AI Alibaba](https://multiagentguide.top/tools/spring-ai-alibaba.md)
- [Semantic Kernel](https://multiagentguide.top/tools/semantic-kernel.md)
- [Agent Development Kit (ADK) for Go](https://multiagentguide.top/tools/google-adk-go.md)
- [AgentScope](https://multiagentguide.top/tools/agentscope.md)

## FAQ

### Does ADK for Java support MCP?

Yes, as a client: `McpToolset` loads tools from MCP servers. The guide for exposing an ADK agent as an MCP server only shows Python.

### Does ADK for Java support A2A?

Yes, in both directions through the `a2a` module (`RemoteA2AAgent` and a server executor), but the Java A2A quickstarts are labeled Experimental.

### Is ADK for Java the same as the Python ADK?

It shares the core concepts (LlmAgent, workflow agents, tools, sessions, tool confirmation), but ADK 2.0 graph workflows, collaborative agent teams and Agent Runtime deployment are documented for other languages, not Java.

### Is ADK for Java free?

The library is Apache-2.0. Google charges for its managed services, such as Agent Runtime sessions used by `VertexAiSessionService`, on the Gemini Enterprise Agent Platform pricing page.

### Which version should I use?

GitHub's latest release is v1.10.1 (2026-09-18), which the README uses; the Java quickstart page still shows 1.6.0.

## Sources

- [ADK Java GitHub repository](https://github.com/google/adk-java)
- [ADK Java README](https://github.com/google/adk-java/blob/main/README.md)
- [ADK Java LICENSE](https://github.com/google/adk-java/blob/main/LICENSE)
- [ADK Java CHANGELOG](https://github.com/google/adk-java/blob/main/CHANGELOG.md)
- [ADK Java releases](https://github.com/google/adk-java/releases)
- [Release v1.10.1 notes](https://github.com/google/adk-java/releases/tag/v1.10.1)
- [ADK Java agents package (source)](https://github.com/google/adk-java/tree/main/core/src/main/java/com/google/adk/agents)
- [AgentTransfer flow (source)](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/flows/llmflows/AgentTransfer.java)
- [AgentTool (source)](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/AgentTool.java)
- [McpToolset (source)](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/mcp/McpToolset.java)
- [ADK Java A2A module README](https://github.com/google/adk-java/blob/main/a2a/README.md)
- [ADK Java sessions package (source)](https://github.com/google/adk-java/tree/main/core/src/main/java/com/google/adk/sessions)
- [ADK Java models package (source)](https://github.com/google/adk-java/tree/main/core/src/main/java/com/google/adk/models)
- [ADK Java contrib modules](https://github.com/google/adk-java/tree/main/contrib)
- [ToolContext.requestConfirmation (source)](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/ToolContext.java)
- [FunctionTool requireConfirmation (source)](https://github.com/google/adk-java/blob/main/core/src/main/java/com/google/adk/tools/FunctionTool.java)
- [ADK docs home](https://adk.dev/)
- [Java quickstart (docs)](https://adk.dev/get-started/java/)
- [Java live streaming guide (docs)](https://adk.dev/live/get-started/streaming-java/)
- [A2A quickstart, exposing (Java)](https://adk.dev/a2a/quickstart-exposing-java/)
- [A2A quickstart, consuming (Java)](https://adk.dev/a2a/quickstart-consuming-java/)
- [Graph-based workflows (docs, language badge)](https://adk.dev/graphs/)
- [Collaborative agent teams (docs, language badge)](https://adk.dev/workflows/collaboration/)
- [Action confirmations (docs, language badge)](https://adk.dev/tools-custom/confirmation/)
- [Deploy to Agent Runtime (docs, language badge)](https://adk.dev/deploy/agent-runtime/)
- [Sessions and VertexAiSessionService (docs)](https://adk.dev/sessions/session/)
- [AG-UI integration for ADK (docs)](https://adk.dev/integrations/ag-ui/)
- [AG-UI adk-middleware (AG-UI repository)](https://github.com/ag-ui-protocol/ag-ui/tree/main/integrations/adk-middleware)
- [Gemini Enterprise Agent Platform pricing](https://cloud.google.com/products/gemini-enterprise-agent-platform/pricing)

## Unknown fields

protocols.agui: the ADK AG-UI page's badge lists Java, but no Java-specific setup was found. Searched the adk-java README and a GitHub code search for 'ag-ui' / 'agui' (only a false positive in CONTRIBUTING.md), and the AG-UI repository's integrations/adk-middleware directory, which has only python and typescript packages.

Corrections or removal requests: support@multiagentguide.top

---

Data as of 2026-09-30. Not affiliated with listed projects. HTML version: https://multiagentguide.top/tools/google-adk-java
