类加载器
类加载器可以分为三种:
引导类加载器(根加载器 Bootstrap ClassLoader):
负责加载jre/rt.jar核心类库
它本身不是java代码实现的,也不是ClassLoader的子类,获取该对象往往返回null
拓展类加载器(Extension ClassLoader JDK9之前)
它负责加载jre/lib/ext拓展库
它是根加载器的子类
Java 9 引入了模块系统,并且略微更改了上述的类加载器。扩展类加载器被改名为「平台类加载器(platform class loader)」。
Java SE 中除了少数几个关键模块,比如说 java.base 是由启动类加载器加载之外,其他的模块均由平台类加载器所加载。
应用程序类加载器(Application ClassLoader)
负责加载项目Classpath路径下的类
它是拓展类加载器的子类
自定义类接载器
需要用到自定义加载器的地方:
1. 需要加载特定目录下的类
2. 程序的字节码文件需要加密,往往需要提供一个自定义类加载器进行解码
tomcat中便使用到了自定义类加载器
双亲委派机制:
不是继承关系,是组合的方式实现的。