在 java类库中提供了java.lang.classLoader 来作为类加载器的基类。
java虚拟机和程序都是调用classloader的loadclass方法来加载类。
但是classLoader是一个抽象类。真正的加载器必须是classLoader的子类。
类加载器本身也是一个java类,他也需要被加载。
java虚拟机中内嵌了一个bootstrap的类加载器,他属于java虚拟机的内核。
bootstrap不需要类加载器加载。
bootstrap负责java核心包里面类的加载。(rt.jar)
extclassloader 和 appclassloader都是在rt.jar里面。extclassloader由bootstrap加载。
但是appclassloader是由extclassloader加载的。
这些类的getclassloader方法返回值为null。说明就是用的bootstrap加载的。
extclassloader负责加载ext包下的类
一般自己编写的普通的java类所使用的类加载器使用的是appclassloader。
类装载器的委托模式。
在实例化任何一个类加载器的时候都要为他制定一个父亲级别的加载器。