ClassLoader tải file .class vào memory lúc runtime.
3 loại built-in (theo hierarchy):
1. Bootstrap ClassLoader — JVM built-in (C++), tải core class trong java.lang, java.util (rt.jar / Java 9+ module).
2. Platform ClassLoader (Java 9+, trước là Extension) — tải các module platform không thuộc core như java.sql, java.xml, java.logging.
3. Application ClassLoader — tải class từ classpath ứng dụng.
Parent-delegation model: khi nạp class, con hỏi cha trước → đảm bảo core class không bị override (vd java.lang.String luôn từ Bootstrap).
Application ClassLoader
↓ delegate trước khi tự load
Platform ClassLoader
↓
Bootstrap ClassLoaderCustom ClassLoader cho phép:
- Dynamic loading (plugin, OSGi).
- Hot-reloading (Spring DevTools).
- Isolation (mỗi web app trong Tomcat có ClassLoader riêng).
Khi cần hiểu sâu: debug ClassNotFoundException vs NoClassDefFoundError, JAR conflict (cùng class ở 2 JAR), classloader leak trong app server.