java-ai-agents

Companion code for the ankurm.com posts on agents on the JVM. Every number and transcript quoted in a post comes from a file in a module's output/ folder, and the tests that write those files also assert the same facts, so the build fails when a claim stops being true.

Module Post What it shows
embabel Embabel: Goal-Oriented AI Agents on the JVM actions, goals, conditions and cost-based planning with GOAP, compared with plain Spring AI
a2a A2A Protocol in Java: Agents That Talk to Each Other agent card, tasks, streaming, input-required and agent-to-agent calls with the A2A Java SDK

Versions (verified on Maven Central, 2026-10-11)

Component Version Note
Embabel embabel-agent-api 1.5.3 brings Spring AI 2.0.1 and Spring Boot 4.1.1 transitively
A2A Java SDK io.github.a2asdk 1.0.0.Alpha3 alpha; targets A2A protocol 1.0. The newest stable release, 0.3.3.Final, targets the 0.3 protocol and its API differs
JDK 25 LTS
JUnit 6.1.3

Run

export JAVA_HOME=/path/to/jdk-25
mvn test                      # everything
mvn test -pl a2a -am          # one module

No API key is needed. The A2A agents contain no model call, because the protocol is the subject. The Embabel tests use ScriptedLlmOperations, the scripted stand-in shipped inside embabel-agent-api, and the Spring AI comparison uses a small scripted ChatModel. Each module writes its transcripts to <module>/output/ when you run the tests.

S
Description
Companion code for ankurm.com Java AI posts
Readme
94 KiB
Languages
Java 100%