# Java is Coming for Python’s Lunch - The Rise of JVM AI Agents The text and code of a slide deck. The presentation itself is at /26-j-fall/ and needs JavaScript; the pages below are its static handout, and `llms-full.txt` holds everything in one Markdown file. ## Sections - [Java is Coming for Python’s Lunch - The Rise of JVM AI Agents](/26-j-fall/handout/slides.html): Java is Coming for Python’s Lunch - The Rise of JVM AI Agents, Q&A - [Agents in production need what Java has delivered for decades](/26-j-fall/handout/01-introduction.html): Agents in production need what Java has delivered for decades, Java has kept the enterprise running for 30 years, What we'll cover - [Why Python was first](/26-j-fall/handout/02-java-will-last.html): Why Python was first, AI started in the lab, and the lab spoke Python, Researchers joined companies and brought Python with them, Python was the glue, the heavy lifting always ran in C and C++, LLMs moved the heavy lifting into the datacenter, What travels over the wire is JSON and JSON Schema, An agent is mostly concurrent network IO, and the JVM is built for it, Jackson turns a record into the schema and the answer back into a record, … - [The demo](/26-j-fall/handout/03-demo.html): The demo, A trip is a plain JPA aggregate with its bookings, The rules are sentences written for people, not for code, Every agent reads the same facts through one read-only service, Three agents, one contract, Choosing the framework is one request parameter, Every reviewer drafts, a judge audits, a rejection goes back - [Spring AI](/26-j-fall/handout/04-spring-ai.html): Spring AI, One builder call configures the reviewer once, A tool is a Spring bean method with a description, The request reads like the question and returns a Kotlin type, Every call passes through a chain of advisors before it reaches the model, An advisor wraps every call like a servlet filter, Every review shows up as a trace without extra code, Chat memory is one more advisor, the history lives in a table, … - [Embabel](/26-j-fall/handout/05-embabel.html): Embabel, Embabel plans like a game AI: actions, conditions, goals, A* walks the cheapest chain of actions to the goal and replans when the world changes, The caller names an input and a goal type, never the steps, An `@Action` can be plain code that never calls a model, A model-backed action asks for an object, not a string, Tools are granted per model call, not per agent, A domain object can bring its own tools, … - [Koog](/26-j-fall/handout/06-koog.html): Koog, The same review becomes a graph of nodes and edges, Tools live in a `ToolRegistry` the agent is built with, Every node is a typed value declared up front, Four edges are the whole tool loop, Koog ships the whole tool loop as one `subgraphWithTask`, The judge is a `subgraphWithVerification` that never sees the reviewer's chat, The revision loop stays a plain node and two edges, … ## Optional - [Full text](/26-j-fall/llms-full.txt): every slide as Markdown, with complete code snippets