## 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]]