Google's Agent Development Kit for Java reached 1.0, introducing integrations with new external tools, a new app and plugin architecture, advanced context engineering, human-in-the-loop workflows, and more.

Newly supported tools include GoogleMapsTool, which provides access to Google Maps data; UrlContextTool, which can fetch and summarize web content directly; ContainerCodeExecutor and VertexAICodeExecutor, enabling robust code execution locally using Docker containers or in the Cloud with Vertex AI; and ComputerUseTool, which can drive a web browser or a computer, although this requires a Playwright integration.

To make interactions with agent tools more powerful, the ADK for Java 1.0 introduces two new APIs: the App class, a top-level container for agentic applications that hosts the root agent, holds global configurations, and handles plugin integration; and Plugins, a base class for defining new extensions. Some plugins are available out of the box, including LoggingPlugin for structured logging of agent executions and tool calls, ContextFilterPlugin for managing the context window by filtering out older conversation turns, and GlobalInstructionPlugin for dynamically applying a consistent set of instructions to all agents.

Another useful feature in the new release is support for event compaction, which helps manage an agent's context size by "keeping only a sliding window of the last events and/or summarizing older events". This is a fundamental context engineering practice aimed at preventing context windows from growing beyond token limits while also reducing latency and costs in long-running sessions.

The event compaction API allows developers to control the compaction interval, token threshold, overlap size, event retention limits, and the summarizer to use.

Equally important is the framework's built-in support for human-in-the-loop workflows. In fact, with the new ADK, agents can pause before taking critical actions, request approval, and then resume execution.

A registered tool can access its ToolContext and call requestConfirmation(). This automatically intercepts the run, pausing the LLM flow until input is received. [...] ADK automatically cleans up intermediate events and explicitly injects the confirmed function call into the subsequent LLM request context. This ensures the model understands the action was approved without looping.

The ADK for Java also natively supports the Agent2Agent (A2A) protocol, enabling different agents to communicate and collaborate, even across different languages or frameworks. To this end, the ADK integrates the official A2A Java SDK Client.

To expose your own ADK agents via the A2A Protocol, you create an A2A AgentExecutor. It wraps your ADK agents and exposes them via a JSON-RPC REST endpoint, instantly making your ADK creations accessible to the wider A2A ecosystem.

Google provides the Agent Development Kit both for Java and Python. When the ADK for Java was announced a few months ago, its main contributor Guillaume Laforge clarified on Reddit that "new features, new experiments usually start in Python, and are progressively ported to Java". More recently, redditor Qubit99 discouraged developers from using the Java ADK over the Pyhon version, citing concerns about Google's track record in maintaining their Java libraries. On the other hand José Carlos Sancho noted on X.com that Java's type safety is a significant advantage for catching orchestration bugs early, potentially making Java agents more stable at scale than their Python counterparts.

The ADK for Java can be downloaded from GitHub.