Jfokus 2026

Ove Lindström · February 8, 2026

In the early morning light, on the second day of February, the Guardians of the Stages and the Squires of the Registration gathered at the building known as Waterfront to aid the invited Norns of the order of Urd, Verdandi, and Skuld to, for the 20th time, tell the stories of the past, the present and the future.

They had obediently answered the call of the “gods”, Mattias, Helena, Jeanne and me, to once again make sure that Jfokus runs smoothly.

This is the story of the 20th Jfokus, as told by the bards.

Monday (University Day)

It started with a smaller gathering of those who really wanted to deep-dive into the well of knowledge. Monday presents workshops and deep dives, and after I had made sure that all the Guardians of the Stages, also known as Stage Hosts, knew what needed to be done, I could join many of the sessions.

Brian Vermeer

Prompt Injection — Brian Vermeer

First out was Brian Vermeer who, for an hour and a half, showed us how to use different kinds of Prompt Injections to fool AIs. It builds a lot on the work of Johann Rehberger’s talk at Black Hat 2024 and NetworkChuck with Jason Haddix. Scary stuff delivered in a very entertaining way.

Eric Deandrea Oleg Šelajev

Did you really get better?

Eric Deandrea, Oleg Šelajev

The next session I got to see was with Eric and Oleg. They are both high-energy talkers and speed demo‑coders. My key takeaways from this talk are to focus on how we measure improvement (productivity vs. quality vs. DX) and that “stupidity will always find a way”.

After a really nice fish for lunch, the sessions continued in the afternoon. I popped in and out of several sessions, did some of the workshop tasks, and then went to see the last session in C1.

James Ward Josh Long

Building AI agents — James Ward, Josh Long

The two masters of live coding. You don’t even need to be into coding; you can just sit and enjoy the show. In 90 minutes, J&J built a working AI agent using Spring AI.

Tuesday (Main conference)

As has been my task over the last years, I am managing the A4 overflow room for the start of the main conference. I really would have liked to see this live, with an awesome fire show to kick everything off. You could almost feel the heat in the live stream, so it must have been even better live in A1.

Daniel Terhorst-North

Keynote: The Best Simple System for Now — Daniel Terhorst‑North

I have had the pleasure to know Dan for many years now, and I think he is the source of most of the smart things I say. This year, I got two good things that I will use really soon.

VESPA

  • Visualize
  • Eliminate
  • Simplify
  • Practice
  • Automate

CUPID

  • Composable
  • Unix philosophy
  • Predictable
  • Idiomatic
  • Domain-based
Sharat Chander

Java to infinity and beyond — Sharat Chander

Not a technical talk at all. Mostly about the community process and what you can do.

Lutske De Leeuw

Tame your Llama, run AI in Java — Lutske De Leeuw

A new speaker for me who delivered a very good talk on how to run your models locally. We had several discussions during the Speakers Conference afterwards.

Jennifer Reif

Agents, Tools, and MCP — Jennifer Reif

Another speaker I had not seen live, but on recordings and in podcasts. If you don’t know about the components that build up the AI world, this is a really good talk to start with.

We then had a 15‑minute quickie.

Andrea Berglund

Help! I’m an Architect for an Open‑Source Project — Andrea Berglund

I have really looked forward to Andrea talking. Key takeaways on governance, stakeholder alignment, and sustainable architecture. Watch the talk and comment when you find what patch was made in production during the talk. ;)

Balkrishna Rawool

Virtual Threads, Structured Concurrency — Balkrishna Rawool

Virtual threads are sort of new in Java. If you are new to them, watch this talk.

Do’s:

  • Use virtual threads for I/O-bound workloads (network calls, database queries)
  • Leverage structured concurrency for better error handling and cancellation
  • Create many virtual threads without fear of resource exhaustion
  • Migrate traditional thread-pool code to virtual threads

Don’ts:

  • Don’t use virtual threads for CPU-bound tasks (they won’t help)
  • Avoid pinning virtual threads to carrier threads with heavy synchronization
  • Don’t mix legacy blocking code with structured concurrency carelessly

Where it shines:

  • High-concurrency server applications (handling thousands of connections)
  • Microservices with numerous downstream calls
  • Classic blocking I/O workloads that previously required reactive programming
Lize Raes Ana Maria Mihalceanu

Writing GPU‑ready AI — Lize Raes, Ana Maria Mihalceanu

This was the opposite of Sharat’s talk. This was TECHNICAL. I was amazed at how Lize and Ana could explain really hard technical details about how the GPU works and how Project Babylon will enable the JVM to talk directly to the GPU.

And then it was time for the Jfokus party. Good food, nice drinks, and excellent talks a bit too late in the evening.

Dylan Beattie is not only a rock star talker; he really knows how to play the guitar and sing songs about software development.

Wednesday

The second conference day kicked off with

Marcus Hellberg

Full‑stack web apps, 100% Java — Marcus Hellberg

A bit of commercial information from our friends from Finland, Vaadin. I really like the way they make it possible to do nice UIs in pure Java and the way it makes difficult things, like authorization and authentication, easier. If I have a say when building the administrative parts of a system, I tend to use Vaadin.

Hinse ter Schuur

Level up your Java Streams — Hinse ter Schuur

After making UI, it was time for streams. Hinse ter Schuur took us on a tour of how Stream Gatherers work. Take a look at https://www.youtube.com/watch?v=VbB3ZbtqMeY if you want a pedagogical overview on how Gatherers work in Java.

Best practices and readability tips for working with Java Streams:

  • Use meaningful variable names in lambda expressions
  • Avoid overly complex chains; break them into steps when readability suffers
  • Prefer method references over lambdas when available
  • Consider intermediate collection for debugging complex pipelines
  • Use peek() sparingly for debugging, remove in production
Daniel Raniz Raneland

Strangling the dragon — Daniel Raniz

Is Yggdrasil not an ash but in fact a Strangling Fig tree? I don’t know. Raniz showed us how to use this pattern to move from a legacy system to something new.

Victor Rentea

The psychology of code — Victor Rentea

This talk is hard to summarize. Just watch it. Victor ran on the stage for 50 minutes, delivering one smart thing after another, with sound effects.

Ryan Healey

What’s your favourite number of threads — Ryan Healey

A Quickie on how to think around threads. Spoiler: the answer is zero. :D

And by that, the 20th edition was almost over. Just the final words from Mattias and Jeanne, with all speakers, stage hosts and volunteers on stage, throwing out a lot of beanies and doing the Menti‑voting.

The closing keynote was delivered by Stephen and Cassandra Chin. There were some nice things that could be picked up from this talk.

Stephen Chin Cassandra Chin

AI‑First learning — Stephen and Cassandra Chin

Speakers Conference

On Thursday morning, we took about 30 of the speakers to Djurönäset for the Speakers Conference/Unconference. It is held in an Open Space fashion, but there is this agreement that what is being talked about at these gatherings stays in the group. I got highly energized by this and got to meet one of my long‑time idols, Cay Horstmann. His books Core Java, volumes 1 and 2, are still on my bookshelf and I use them from time to time.

Jfokus 2027

Next year, week 6 will be starting on February 8th, so that is when we kick off the 21st edition. Whether I will attend, speak or be in the program committee next year, or be replaced by an AI, who knows.

  • All recordings and slides: https://www.jfokus.se/schedule.html

The hero images are from the Jfokus site.

, BlueSky, ,