#402 From WebSphere to Quarkus: The Evolution of Java Classloading
contrasting classic application server classloading with quarkus classloading, classloader hierarchy from Bootstrap and system classloaders to ear, war, and EJB-jar classloaders in WebSphere, Open Liberty, and GlassFish, classloader isolation for multitenancy, internal class bleed-through with SLF4J and ANTLR, OSGi class exposure model and explicit package visibility, impl and API package naming, ClassCastException from the same type loaded by two classloaders, distinguishing NoClassDefFoundError, ClassNotFoundException, 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 in production, removing multitenancy to remove complexity, runner classloader and pre-indexed classes, fast-jar vs legacy jar formats, project leyden AOT 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 applied to classloaders, a 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 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 for fast equality, Dev Services starting containers automatically from extension dependencies, Postgres extension contributing a dev service, compose support for dev services, WebAssembly-based dev services with SQLite, dev services as a way to start another Quarkus microservice for System Tests
Holly Cummins on twitter: @holly_cummins