How Spring Deprecates Without Breaking You

▶ Watch (01:14)

REST template shipped in Spring 3, served its purpose for years, and is now deprecated in Spring 7. The replacement is REST client, a fluent API that covers the same ground with a cleaner interface. Arjen Poutsma described the pattern bluntly: Spring makes the new thing better, then forces the migration. Backward compatibility is real, but it has a shelf life.

This is how Spring has always moved. XML configuration gave way to annotations. Annotations gave way to functional style. Each step happened when the new approach was clearly better, not before.

Reactive’s Shrinking Role in a Virtual Thread World

▶ Watch (06:02)

Reactive solved a real problem before virtual threads existed. Scatter-gather patterns and connection-heavy workloads were genuinely hard without it. But Poutsma was direct: as structured concurrency APIs land in Java, another use case for reactive disappears. Spring never bet everything on reactive. It ran servlet and reactive in parallel, which is why the framework is still standing when the conversation has shifted.

The expectation from both panelists is that reactive will eventually move out of Spring core, possibly into a separate jar. The programming model is complicated, and virtual threads cover the mainstream use cases.

Oracle Started Listening to Framework Teams

▶ Watch (10:51)

In the mid-2000s, Spring was already enormously popular and Oracle’s Sun JVM team had zero interest in talking to the Spring team. That changed. Johnson said Oracle now actively seeks feedback from major framework authors, because most Java gets consumed through frameworks. The Oracle team ran the Spring PetClinic sample through Project Lightening, which aims to bring Java startup times to native-code levels by caching class data, then showed the Spring team the results before even making contact.

Project Lightening is being built in close cooperation with Spring precisely because Spring’s scale makes it the right test bed.

The Microservices Overcorrection and What Comes After

▶ Watch (23:28)

Spring Boot reduced the cost of creating a service to near zero, and teams took that as permission to multiply services without limit. One company the panelists heard about had an average of 10 services per developer. Johnson called it directly:

“Tweet based programming is not a good [thing].” — Arjen Poutsma

Spring Modulith exists partly as an answer to that overcorrection. Johnson pushed back on the name, noting that Modulith is more prescriptive than anything else in the Spring family, but agreed that reluctant modularization, splitting only when a clear need exists, is the right instinct.

The AI Knowledge Gap Java Developers Need to Close

▶ Watch (32:30)

Java developers know less about generative AI than Python developers on average, and Johnson said plainly that is a problem. The gap is not about building models. It is about knowing when RAG beats fine-tuning, how reliable vector search is, and what makes a prompt fail. He drew the SQL analogy: twenty years ago every Java developer should have known SQL. Many didn’t. The consequences were predictable.

“Java developer really should know SQL” — Rod Johnson

AI fundamentals are in the same position now.

Q&A

If Embabel gets an LLM response that doesn’t match the expected return type, what happens? Embabel retries automatically with a configurable retry policy; persistent failures indicate either a weak model or a prompt that needs improving, since Spring AI passes a JSON schema to the model to guide the response shape. ▶ 3:16

What skills do developers need going forward in the AI world? Johnson said Java developers need AI fundamentals, specifically RAG tradeoffs, fine-tuning decisions, and vector search reliability, framing it as exactly the same need SQL literacy was 20 years ago. ▶ 32:18

We can’t feed company data to external models due to privacy laws. Does that block enterprise AI? Johnson said local models are now capable enough for most steps in a multi-step agent flow, pointing to Qwen models handling tool calling with as few as 600 million parameters, and suggested routing only sensitive steps to local infrastructure or anonymizing data per step. ▶ 36:36

Notable Quotes

Tweet based programming is not a good Arjen Poutsma · ▶ 23:53

Reluctant modularization. Rod Johnson · ▶ 24:22

Java developer really should know SQL Rod Johnson · ▶ 34:10

Key Takeaways

  • REST template is deprecated in Spring 7; migrate to REST client for a cleaner fluent API.
  • Reactive will likely move out of Spring core as virtual threads cover most of its original use cases.
  • Java developers need GenAI fundamentals, RAG tradeoffs, and fine-tuning concepts, not just Copilot skills.