Cloud Native Diary #15
LLM-powered applications with Java and Spring AI. Updates from GOTO Copenhagen, KCD Denmark, and YOW! Australia.
In Cloud Native Diary, I periodically share my journey working with application development, platform engineering, and cloud native technologies.
In this issue, I'll share some updates about Java and AI, and news from GOTO Copenhagen, KCD Denmark, and YOW! Australia. Let's get to it!
Bluesky
Bluesky has become my primary social media. I've been a user since July 2023, but it's only recently that it really took off. The Java and cloud native communities have been migrating in mass from the other place to Bluesky in the past few months, and the vibes couldn't be better! See you there?
If you're new to Bluesky, I recommend checking these Starter Packs to get you started quickly in building your network:
Java and AI
Java is a modern, powerful language. It's amazing to see how much it evolved over the past few years!
Spring AI is a framework for infusing Java applications with AI capabilities. Since my previous blog post, many great features have been delivered, getting closer and closer to the 1.0.0 release in early 2025. You can try them out in the newly released 5th milestone.
The main work that has been keeping me busy in the Spring AI project is the design and initial implementation of a Modular RAG architecture, inspired by the concept of modularity detailed in the paper Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks. I've been designing a solution for Spring AI that enables developers to seamlessly build and customize RAG systems. Some of the Modular RAG features are already available as a preview in the latest Spring AI release. You can find more information in the documentation. I'll soon start publishing a deep-dive article series on this website about Modular RAG. Stay tuned!
I worked on extending the Ollama integration to support native JSON Structured Output and to manage models directly from your Spring AI application. You can now even let Spring AI pull models for you at startup time, both from the Ollama model library and from Hugging Face.
I also worked on supporting audio modality in the OpenAI integration, leading to exciting new use cases.
One of the big features released recently is support for the Model Context Protocol (MCP), an open protocol designed by Anthropic to standardize how applications provide context to large language models. The brand new Spring AI MCP project introduces a Java SDK for the Model Context Protocol and provides full integration with Spring AI tools and function calling capabilities.
My activity contributing features, improvements, and bug fixes to Spring AI continues. I want to thank the Spring AI team for the incredible support I receive and for the insightful and stimulating conversations we have about artificial intelligence and Java.
Since the last issue of Cloud Native Diary, I have contributed several improvements to Spring AI and have more in the backlog.
- Designed and implemented initial features for Modular RAG, consolidating the indexing, pre-retrieval, retrieval, and generation modules (#1604, #1644, #1703, #1767, #1794, #1987).
- Extended the Ollama integration with support for native JSON Structured Output (#1937) and for managing models, including auto-pulling models at startup time (#1532, #1554, #1566, #1570, #1581).
- Extended the OpenAI integration with support for audio modality (#1561).
- Extended the Mistral AI integration with support for vision modality (#1930).
- Introduced null-safety for the ChatClient APIs (#1651, #1654).
- Other improvements and bug fixes (#1538, #1784, #1835, #1988).
If you're interested in building LLM-powered applications with Java and Spring AI, feel free to check out my GitHub repository. It has tons of examples showcasing the many features of Spring AI and demonstrating actual use cases such as classification, semantic search, structured data extraction, question answering with documents, and chatbots.
GOTO Copenhagen
The recording of my presentation at GOTO Copenhagen is now available on YouTube. I talked about building production-ready LLM-powered applications with Java and Spring AI, combining live coding, live inference, and live music!
KCD Denmark
On November 19-20, we held the second KCD Denmark conference and it was a blast! The recordings of all presentations are available on our YouTube channel, check them out!
I have many good memories from the event, but the best one is definitely the moment where we donated 350 000 DKK to Coding Pirates, a no-profit organization dedicated to teaching coding skills to kids and supporting girls in pursuing a career in tech.
YOW! Australia
This month, I had the incredible honor and joy of taking part in the YOW! Conference tour in Australia, going from Melbourne to Brisbane to Sydney.
In each city, I took part in a YOW! Conference and presented about building production-ready, LLM-powered applications with Java and Spring AI, including live coding, live inference, and live music! Check out the slides.
My last presentation was at the exact same time as the OpenAI breakdown after releasing the Sora video generation model. One of my demo applications was based on OpenAI. Panic? No way! Since I was using Spring AI, I could easily swap the OpenAI dependency with the Mistral AI one, and everything worked out. Abstractions are great!
I'm extremely thankful to the organizers for inviting me and for planning such a fantastic tour in eastern Australia. I had the best time meeting the local tech community and sharing a trip with amazing people: fellow speakers (you can find them on Bluesky in this starter pack), organizers, and volunteers. I had the chance to reconnect with old friends and meet many new ones. I'm not gonna lie: it's been really hard adjusting to the daily (winter) life in Denmark after spending two beautiful weeks in sunny Australia!
Cloud Native Ambassador
I'm excited to share that I've been re-accepted as a Cloud Native Ambassador!