Cloud Native, Data & InfrastructureCloud Native, Data & Infrastructure
Conference50min
INTERMEDIATE

Java on Kubernetes Without Container Images: The WebAssembly Way

The talk shows how KWasm-style runtime delegation can let Java apps run on Kubernetes without container images. It explains containerd internals, custom shims, node provisioners, and CRDs, then demonstrates Brewlet.sh, a new open-source project that deploys a Spring Boot JAR directly as an OCI artifact.

talk.summaryAiDisclaimer

Bruno Borges
Bruno BorgesGitHub

talkDetail.whenAndWhere

Thursday, October 8, 09:30-10:20
TBA 3
talks.roomOccupancytalks.noOccupancyInfo
talks.description
Every time you ship a Java service to Kubernetes, you ship a base image, a bundled JDK, and an OS layer. None of which you wrote besides your application code and the selection of dependencies, but all of which you must monitor and regularly patch. The real artifact you care about, your application JAR and its dependencies, are buried inside 250 MB of packaging you never wanted to own. WebAssembly already solved this. With KWasm, the Wasm runtime lives on the node, the developer ships only a .wasm module as an OCI artifact, and a RuntimeClass tells Kubernetes to execute it. There is no Dockerfile, no container image involved at all.

Most Kubernetes users know that "runtimeClassName: kata" or "runtimeClassName: wasm" routes a pod to a different executor. Few know how this works with the containerd Runtime v2 TTRPC protocol, OCI bundle assembly, overlay filesystems, and runc delegation that make all this possible.

In this talk we walk through how the KWasm analogy actually maps cleanly to Java, and what custom containerd shims, node provisioners, and CRDs can actually do: allow you to build your own Kubernetes-based platform (and quite easily with agentic AI). We will explore a new open source project called Brewlet.sh with live coding: its CLI brewlet push target/app.jar, the Kubernetes deployment approach kubectl apply, and see in practice how a Spring Boot service runs on Kubernetes without a single container image in sight.
kubernetes
springboot
containerd
webassembly
talks.speakers
Bruno Borges

Bruno Borges

GitHub

Canada

Bruno Borges is a Principal Product Manager at GitHub with over 30 years of experience in Software Engineering, Product Management, Developer Relations, and Cloud & AI developer experience. Currently, he leads developer relations and product management programs for AI and GitHub Copilot at Microsoft, driving initiatives like the GitHub Copilot SDK for Java, and AI-assisted modernization workflows for enterprise developers. Bruno also continues to shape Microsoft's Java strategy, having led the public announcement of the Microsoft Build of OpenJDK and new tools like Azure Command Launcher for Java. Prior to his current focus on AI, he spent years building Microsoft Azure into a top destination for Java workloads, and before that served nearly six years at Oracle influencing developer relations strategy. A recognized Java Champion and top Java influencer, Bruno is a frequent conference speaker and open-source contributor with projects like Java Evolved, JairoSVG, JLib Inspector, ghx, and more. Visit github.com/brunoborges