12、启动类加载器

12.1、启动类加载器介绍

  内建于JVM中的启动类加载器会加载java.lang.ClassLoader以及其他的java平台类,当JVM启动时,一块特殊的机器码会运行,它会加载扩展类加载器与系统类加载器,这块特殊的机器码就叫做启动类加载器(Bootstrap)。

  启动类加载器并不是java类,而其它的类加载器则都是java类。

  启动类加载器是特定于平台的机器指令,它负责开启整个加载过程。

  所有的类加载器(除了启动类加载器)都被实现为java类。不过,总归要有一个组件来加载第一个java类加载器,从而让整个加载过程能够顺利进行下去,加载第一个纯java类加载器就是启动类加载器的职责。

  启动类加载器还会负责加载供jre正常运行所需要的基本组件,这包括java.util与java.lang包中的类等等。

12.2、sun.misc.Launcher类

  系统类加载器和扩展类加载器是两个静态的内部类,定义在了Launcher类的内部。可以在“http://openjdk.java.net/”中查看Launcher类的源码。

package com.shtec.classLoader;

import sun.misc.Launcher;

public class Test09 {
    public static void main(String[] args) {
        
        //ClassLoader是由启动类加载器加载的
        System.out.println(ClassLoader.class.getClassLoader());//null
        
        //Launcher内部定义了系统和扩展类加载器,为null,说明系统和扩展类加载器是由启动类加载器加载的
        System.out.println(Launcher.class.getClassLoader());//null
    }
}
posted @ 2020-02-23 22:40  java小天地  阅读(860)  评论(0编辑  收藏  举报