Agentic AI
Embabel Hits 1.0: Java's Declarative Agent Framework Goes GA
Rod Johnson's agent framework adopts game-AI planning to let Java developers define autonomous systems through typed goals and actions rather than hand-coded LLM sequences.
InfoQ
Embabel, a framework for constructing intelligent agents on the JVM, has reached production maturity with its 1.0 release. The platform enables Java and Kotlin teams to specify agent behavior using typed domain objects—goals, actions, and their relationships—rather than manually orchestrating chains of prompts and tool invocations through hardcoded logic.
Planning Over Scripting#
The key differentiator is Embabel's use of Goal-Oriented Action Planning (GOAP), a technique borrowed from video game AI. Instead of following a predetermined script or fixed workflow graph, the framework receives a set of available actions (each with preconditions and outcomes) and searches for an action sequence that achieves the stated goal at runtime. If circumstances change—a tool fails, new data arrives—the planner reassesses and finds an alternative path without needing the developer to anticipate every branch beforehand.
Built on Spring AI#
Embabel doesn't replace Spring AI, the Spring team's LLM integration layer; it's a higher-level abstraction sitting atop it. The architectural parallel is instructive: just as Spring MVC abstracted away servlet plumbing in 2003, Embabel abstracts away the model-orchestration plumbing that Spring AI provides. A developer declares "here are my goals and actions" and lets the framework handle sequencing. Because it leverages Spring AI underneath, Embabel inherits support for major model providers—OpenAI, Anthropic, Gemini, Bedrock, Mistral, DeepSeek—and local options via Ollama, Docker, or LMStudio. Actions can target specific models, or teams can define role aliases ("strongest reasoning," "cheapest") and route steps accordingly, mixing models within a single agent.
How It Differs from Competitors#
LangGraph (and its Java port, LangGraph4j) takes a graph-centric approach: developers wire nodes and edges upfront, explicitly defining control flow. Embabel's runtime planner, by contrast, discovers action combinations the developer never explicitly connected.
Akka's Agentic Platform emphasizes infrastructure and resilience: agents run as actors with isolated state, surviving crashes and distributable across clusters. Embabel focuses on the programming model layer above that.
Koog (JetBrains) embeds agency directly into Kotlin's language features rather than a separate runtime or declarative layer.
Each represents a different philosophy about where agent structure belongs—the type system (Embabel), the runtime (Akka), or the language itself (Koog).

