## Notes - Its a part of the JRE - It loads Java classes into the JVM - Is lazy-loading; does not load all classes at once; only when needed. ## Bootstrap ClassLoader - Responsible for initiating JVM operations - Up to [[Java 8]], it loads core Java files from `rt.jar` - Starting from [[Java 9]], loads core Java files from the Java Runtime Image (JRT) ## Platform ClassLoader - Called `Platform ClassLoader` starting from Java 9 - Used to be called `Extension ClassLoader` until Java 8 - Loads platform-specific extensions from JDK's module system - Platform ClassLoader loads files from JRT or from any other module specified by `java.platform` or `--module-path` ## System ClassLoader - Also known as the Application ClassLoader - Loads classes from the application's classpath - It is a child of the [[#Platform ClassLoader]] - Classes are loaded from directories specified by the environment variable `CLASSPATH`, `-classpath` or `-cp` command line option ## References - [ClassLoader in Java - Geeks for Geeks](https://www.geeksforgeeks.org/java/classloader-in-java/) - [[(java) What are ClassLoaders]] - [[(java) Bootstrap ClassLoader]] - [[(java) Platform ClassLoader]] - [[(java) System ClassLoader]]