A2A Java SDK 1.0.0.Beta1 Released
We are pleased to announce the release of A2A Java SDK 1.0.0.Beta1, our first release fully aligned with the final A2A Specification 1.0.0. The A2A Protocol has reached stability as an open standard, and this release marks the Java SDK tracking that maturity: protocol conformance is the central focus, and the SDK coordinates now reflect the project’s identity under the A2A Project organization.
As a sign of this maturity, two structural breaking changes accompany this release:
-
Java packages have been renamed from
io.a2a.toorg.a2aproject.sdk. -
The Maven
groupIdhas changed fromio.github.a2asdktoorg.a2aproject.sdk(first introduced in 1.0.0.Alpha4)
A2A とは?
Agent2Agent (A2A) プロトコルは、基盤となるフレームワーク、言語、ベンダーに関係なく、AI エージェント同士が通信し、連携できるようにするためのオープンスタンダードです。A2A Java SDK を使用すると、Quarkus ベースのリファレンス実装を使用して、A2A 準拠のエージェントを Java で簡単に構築できます。
破壊的変更
New Maven Coordinates
|
The Maven |
The root artifact coordinates were renamed to reflect the project’s new home under the A2A Project organization and its availability on Maven Central.
Update your pom.xml dependencies accordingly:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-bom</artifactId>
<version>1.0.0.Beta1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Client -->
<dependency>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-client</artifactId>
</dependency>
<!-- For JSON-RPC transport -->
<dependency>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-jsonrpc</artifactId>
</dependency>
<!-- For gRPC transport -->
<dependency>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-grpc</artifactId>
</dependency>
<!-- For HTTP+JSON/REST transport -->
<dependency>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-rest</artifactId>
</dependency>
New Java Package Names
|
All Java packages have been renamed from |
例えば、以下のようになります:
// Before
import io.a2a.client.A2AClient;
import io.a2a.model.Task;
// After
import org.a2aproject.sdk.client.A2AClient;
import org.a2aproject.sdk.model.Task;
Most IDEs can automate this migration via a project-wide find-and-replace of io.a2a → org.a2aproject.sdk in import statements, or by using the "Optimize Imports" / "Migrate" refactoring tools.
Key Highlights in 1.0.0.Beta1
Equal Transport Support
All three transports — JSON-RPC, gRPC, and HTTP+JSON/REST — are now fully supported and considered equal. Simply add the dependency for the transport you need (a2a-java-sdk-reference-jsonrpc, a2a-java-sdk-reference-grpc, or a2a-java-sdk-reference-rest) and the SDK will work seamlessly regardless of your choice.
Structured Error Codes and Details
A2A error types now carry structured error codes and details, making error handling more precise and easier to integrate with observability tooling. Error responses also now use the correct data field name (previously details) in JSON/HTTP responses, in alignment with the specification.
HTTP Caching Headers for Agent Card
The Agent Card endpoint now returns proper HTTP caching headers, allowing clients and proxies to cache agent metadata efficiently and reduce unnecessary round trips.
DataPart.fromJson() Factory Method
A new DataPart.fromJson() factory method makes it straightforward to construct a DataPart from a raw JSON string, without requiring prior deserialization.
Flexible HTTP Client Support
The SDK defaults to a JdkA2AHttpClient backed by the standard JDK HttpClient, suitable for any Java environment. The HttpClient builder also supports constructing a JdkA2AHttpClient from a prebuilt HttpClient instance, enabling advanced configuration scenarios such as custom SSL contexts or connection pool tuning.
When running on Quarkus, you can instead use the VertxA2AHttpClient, which is backed by the Vert.x HTTP client for better integration with Quarkus’s reactive engine, connection management, and observability features.
Bug Fixes and Stability
-
Terminal-state tasks now correctly reject further operations with
UnsupportedOperationError -
Race conditions in
EventConsumerand the SSE transport have been resolved -
PushNotificationNotSupportedErrornow returns HTTP 501 as required by the specification -
POST requests without a
Content-Typeheader are now accepted when the body is empty -
Tenant and
protocolVersionare now correctly preserved in theClientBuilder
What’s Next: Road to 1.0.0.GA
Before the 1.0.0.GA release, we plan to introduce the following:
-
Cross-version protocol support: the SDK will be able to handle both version 1.0.0 and 0.3.0 of the A2A Protocol simultaneously, making it easier to interoperate with agents built against earlier versions of the specification.
-
Specification micro-update tracking: as the A2A Specification evolves with patch-level updates, the SDK will follow those changes promptly to remain fully conformant.