
airhacks.fm podcast with adam bien· Folge 401
From WebSphere to Quarkus: The Evolution of Java Classloading
Sonntag, 14. Juni 2026 · 1 h 01
Kapitelklicken springt direkt hin
Shownotes
An airhacks.fm conversation with Holly Cummins (@holly_cummins (twitter.com/holly_cummins)) about:
contrasting classic application server classloading with quarkus.io classloading,
classloader hierarchy from Bootstrap (getbootstrap.com) and system classloaders to ear,
war,
and EJB-jar classloaders in WebSphere (ibm.com/products/websphere-application-server),
Open Liberty (openliberty.io),
and GlassFish (glassfish.org),
classloader isolation for multitenancy,
internal class bleed-through with SLF4J (slf4j.org) and ANTLR (antlr.org),
OSGi (osgi.org) class exposure model and explicit package visibility,
impl and API package naming,
docs.oracle.com/javase/8/docs/api/java/lang/Cl… from the same type loaded by two classloaders,
distinguishing docs.oracle.com/javase/8/docs/api/java/lang/No…,
docs.oracle.com/javase/8/docs/api/java/lang/Cl…,
and ClassCastException,
parent-first vs parent-last delegation,
configurable delegation in GlassFish,
repackaging libraries in application servers to avoid conflicts,
viral propagation of parent-first loading,
Quarkus flat classloader and tree shaking (en.wikipedia.org/wiki/Tree_shaking) in production,
removing multitenancy to remove complexity,
runner classloader and pre-indexed classes,
fast-jar vs legacy jar formats,
project leyden (mail.openjdk.java.net/pipermail/discuss/2020-A…) AOT (en.wikipedia.org/wiki/Ahead-of-time_compilation) and a new AOT jar format,
Java 26 AOT startup below 100 milliseconds,
requesting JVM hooks for Leyden and fast-jar combination,
classloader proliferation and rationalization,
Conway's law (martinfowler.com/bliki/ConwaysLaw.html) applied to classloaders,
a en.wikipedia.org/wiki/Base64 classloader experiment,
a network classloader with persistent cache predating Java Web Start,
Quarkus dev mode with five or six classloaders,
separating compile-time deployment classes from runtime classes,
base and overlay classloaders for hot reload,
multitenancy in time instead of space,
bytecode manipulation breaking test classloading,
JUnit (junit.org/junit5) hooks for class swapping,
Java 17 locking down cross-classloader cloning,
runtime-dev module for DevUI,
three tiers of dev mode reload,
config parsing optimization reading right to left,
String.intern (docs.oracle.com/javase/8/docs/api/java/lang/St…) for fast equality,
Dev Services starting containers automatically from extension dependencies,
Postgres (coreos.com/blog/introducing-operators.html) extension contributing a dev service,
compose support for dev services,
WebAssembly-based dev services with SQLite (sqlite.org/wasm/doc/trunk/index.md),
dev services as a way to start another Quarkus microservice for System Tests (en.wikipedia.org/wiki/System_testing)
Holly Cummins on twitter: @holly_cummins (twitter.com/holly_cummins)