Embabel Overview and Architecture

Embabel Overview and Architecture

Embabel: an agent framework for the JVM A working reference: philosophy, architecture, a worked example, and REST invocation. Updated for Embabel 1.0 (GA, July 20, 2026). 1. Philosophy Embabel is built by no other than Rod Johnson. Every Java (should) know who he is. He is the creator of the Spring Framework, the most used Java framework for more that two decades. It is build on the premise that neither raw LLM calls nor MCP tool access are enough to build reliable business applications. MCP is an important step forward and Embabel embraces it, but a higher-level orchestration layer is still needed — especially for explainability (why were choices made) and discoverability, which MCP doesn’t address on its own. ...

September 23, 2026 · 12 min
Pattern Matching for primitives

Java 27: What Actually Made the Cut

Nine JEPs. Nine separate articles. Somewhere around March I sat down to write a quick overview post for Java 27, and here we are in the middle of September still talking about it. Java 27 is officially released. So let’s zoom out. If you’ve been following along JEP by JEP, some of this will be a refresher. If you haven’t, and you just want to know what’s actually changing when you type java -version from now on, this is the post for you. ...

September 15, 2026 · 15 min
Strict Field Initialization in the JVM (Preview)

JEP 539: Strict Field Initialization in the JVM (Preview)

Every Java field you’ve ever declared has a secret. Before your constructor or static initializer ever touches it, the JVM has already written something to it, a 0, a false, a null. You never see it happen, but it happens, and it’s the source of a whole category of bugs that are miserable to track down. JEP 539 gives the JVM a way to close that gap. It’s a preview feature targeted for JDK 28, and it’s worth getting comfortable with even before you can use it directly, because a few other Java features are quietly built on top of it. ...

September 13, 2026 · 6 min
Spring AI Series: Chat Memory and Conversation State

Spring AI Series: 8-Chat Memory and Conversation State

Everything BrightCart has built so far has a peculiar kind of amnesia. Each request lands, gets handled, and vanishes from the system’s mind completely. The summarizer, the classifier, the enrichment service. Every single call starts from a blank slate, as if the previous one never happened. For one-shot ticket processing, that’s fine. But watch what happens the moment a support agent tries to actually work a ticket through the assistant: ...

September 7, 2026 · 17 min
Value Classes in Java

Value Classes are coming to Java

I once spent a good twenty minutes debugging a failing test before realizing the bug was d1 == d3 instead of d1.equals(d3). Both were LocalDate.of(1996, 1, 23). Both represented the exact same date. And Java looked me dead in the eye and said “false.” That’s not a bug in LocalDate. That’s just what happens when every object in Java carries an identity, whether it needs one or not. JEP 401 is the JEP that finally lets you opt out. ...

August 22, 2026 · 8 min
JEP 537 - Vector API, Twelfth Incubator

Java 27 - JEP 537 - Vector API, Twelfth Incubator

I checked in on the Vector API the way you check in on a home renovation that’s been “almost done” for years. You poke your head in, nothing’s changed, and someone tells you it’s waiting on one more delivery. Except this delivery has been “arriving soon” since 2014. That’s JEP 537. Twelfth incubation round. Let’s talk about what it actually does, and why it’s still sitting in the waiting room. ...

July 28, 2026 · 5 min
JEP 538 - PEM Encodings of Cryptographic Objects (Third Preview)

Java 27 - JEP 538 - PEM Encodings of Cryptographic Objects (Third Preview)

Somewhere in one of my customers repo there’s a private method that parses -----BEGIN PRIVATE KEY----- blocks by hand: strip the header, strip the footer, Base64-decode what’s left, hand the bytes to a KeyFactory, hope you picked the right algorithm. I wrote something almost exactly like it years ago. It wasn’t hard. It was just the kind of tedious that makes you wonder why the JDK never gave you this for free. ...

July 20, 2026 · 5 min
Spring AI Series: Advisors, Spring AI's Middleware Layer

Spring AI Series: 7-Advisors

At the end of article 6, something slightly magical happened and I asked you to just accept it. The model requested a tool call, and Spring AI executed the method and fed the result back — looping until the model was satisfied — without us writing a single line of orchestration. I called it “Spring’s tool-calling machinery” and moved on. Time to name that machinery. It was an advisor. Specifically a built-in one called ToolCallAdvisor, sitting quietly in the request pipeline, running the whole tool loop on our behalf. ...

July 18, 2026 · 16 min
Spring AI Series: Tool Calling in Spring AI

Spring AI Series: 6-Tool Calling

At the end of the last article, BrightCart’s classifier did something impressive and something useless, at the same time. Impressive: it read a chaotic customer rant and pulled out orderNumber: "BC-48291" as a clean, typed field. Useless: it had absolutely no idea whether order BC-48291 exists, what’s in it, or where it is. It extracted that order number the same way it would extract BC-99999 or BC-BANANA — by pattern-matching text. The model was working entirely from the customer’s words, and customers, as we’ve established, are not a reliable source of truth. ...

July 10, 2026 · 15 min
JEP 536 - JFR In-Process Data Redaction

JEP 536 - JFR In-Process Data Redaction

A few years back, someone on my team attached a .jfr file to a vendor support ticket. Nothing unusual — Flight Recorder is the go-to tool when you need to show “here’s what the JVM was actually doing.” Except that recording also happily included the database password we’d passed in as a -D system property on startup. Nobody noticed until the ticket had already left the building. That’s the problem JEP 536 fixes. It’s not glamorous. It won’t make a conference keynote slide. But if you’ve ever shipped a JFR recording to a vendor, uploaded one to a shared bucket, or attached one to a bug report, you’ve probably leaked something you didn’t mean to. ...

July 6, 2026 · 6 min