00:00
好,那下边的话呢,我们来看一下这个叫扩展类加载器啊扩展类加载器呢,它主要就涉及到我们用Java语言来实现了,对吧,那首先的话呢,扩展类加载器,那我们刚才也看到它是不是需要加载这个类对吧?那我们在90多行这块看到的。嗯,在这儿呢,对吧,那么你这个类的加载器在哪呢?诶是在我们这个launcher这个结构当中的一个内部类,叫做EST呢class load,那就是主要是用它来实现的,那我们创建一个扩展类加载器,那其实就相当于是new了一个,哎,它这个类的一个对象啊,这要注意它呢是继承于class load的,那继承于class order,或者准确的来讲呢,这个e class呢,它是,呃,先继承于我们说叫。哎,这个URL class是吧,那URL classo又继承于叫secure classo,再继承于class,那属于间接的继承于classo的,OK,它的负类加载器呢,是我们说的启动类加载器。来侵略加载器,那这个扩展类加载器,它主要加载的路径呢,就涉及到了我们这个路径,那以及呢,说JDK的一个安装目录里边的jre lib下的ET这个子目录下的这样的一些API是吧,这样的一些这个点class对应的那些类或者是接口等等,是由我们这个诶扩展类加载器来进行加载的,那下面也提到说用户呢,如果创建的这个炸包呢,也放到这个目录下呢,那也会有我们这个扩展类加载器呢,来进行一个加载。
01:22
啊,就是他是吧,那从这个代码层面呢,咱们稍微的也看一眼啊,那我们这里边儿呢,调出来这个叫launcher。那它是吧,这个注意是我们这个散点mi类里边的啊,点开好,点开之后的话呢,啊,这个目前呢,我们看到的就是这个e class so,那就它这呢,你看是我们的一个内静态的内部类,它呢继承于叫UR,那在这呢,我们看一下整个这个继承的一个结构图,它继承于它那ul的ul继成security security的classo,然后又继承于这个classo,对吧,间接的继承于class,行,那我们要是创建一个它的对象,那你就用它对应的这个。
02:03
哎,构造期就完了是吧,哎,就我们可以调他这个这个方法。啊,调调的方法。我看看啊。嗯,这个是我们的一个静态方法啊,对,就返回了它这样一个实例是吧,那就可以了啊,其实具体的话呢,我们要是创建它的话呢,咱们倒不用说直接的去调这个方法了,那我们在这个launcher的这个构造器当中,看我这样一下啊。诶就就看这个就行,在这个launcher,你看这是它的一个构造器,对吧,这个构造器里边呢,大家会看到,你看这儿有一个关于我们扩展类加热器的一个声明,你看在这里边他不就直接呢进行了一个创建吗。是这意思吧,那这里边调的时候呢,是不是就调到我们刚才看到这个方法,就是不用我们直接来调,就是当我们去new一个这个later的时候呢,它自动就帮我们创建好了。哎,就是这样一个场景,好,这个呢是咱们说的这叫呃扩展类加期,然后在这呢,我也写了一个代码,这个代码呢,其实是在我们这个上篇的时候呢讲过,所以这呢我就不亲自的再去写了,咱们再熟悉一下就行啊,那首先呢,我们来看一下关于这个叫引导类加载器。
03:10
啊,就是上面这个啊引道的加载器,它呢,这个主要加载这个路径,那我们通过这个方法呢,就给大家获取到了啊把这个比如我们也先,但是呢,关一下啊跑一下这个程序。哎,就出来了,那相应的我们这个引导类些器呢,能够加载的一些炸包呢,那这里边就都呈现出来了啊,这儿呢,主要涉及到就是我们核心的这个API啊,比如说大家你打开我们这个。这个1.8是吧,然后下面的这块呢,哎,这就呈现出来,在这个GRE里边。呃,我们相应的这个JDK的。哎,这个点点在这是吧。好在这打开之后呢,我们这GRE这个Li里边相关的这样的一些炸包啊炸包你比如说我们提到这个RT点是吧,这就我们说这个核心的这个API,那还有其他的这个resource resources点这那就在这儿,那还有其他的这些啊,就对应的这些包呢,都是用我们说呃阴道类加载器来进行加载的,那这里边呢,你可以随意的,比如我们选择其中的一个啊,像这里边选的是。
04:14
呃,Java点儿。啊叫这个security,它是吧,下的这个叫provider,那就对应的是这个,当然这里边你随便选啊。Provider,那相当于这是一个类,那这个类的话呢,我们看一下它是用谁来加载的,把它一打开啊,我们做一个执行。好,此时的话呢,我们看到这个结果呢,是个no,那凡是这个我们获取类的加载器是no的,并不是说这个类本身呢,加载不需要类的加载器,那只能说呢,我们用的是引导类加载器啊,因为引导类加压器我们是获取不到的,对吧?那这个大家注意一下啊,它属于咱们GM的一个内部的一个部分,不是Java层面的代码,所以呢,这块获取到的是个no啊,然后再下边呢,就要扩展了载器,那咱们说加载这个路径里边,哎,包含了就咱们说的这个哎,java.es.ds是吧,这个路径,那这个路径里边我们一执行啊,其中呢,有两个。
05:10
两个啊,一个呢,就是我们JDK安装目录下的这样一个路径,哎,这个路径的话呢,咱们把它打开啊,比如说这块。哎,就进来了是吧,这个呢,就在咱们这个JDK这个版本的GRE lib ext啊这样的一个路径下。大致就过来了,那过来之后呢,像这些炸包里边呢,我们说存放的也都是相关的一些点卡损件,对吧,那举个例子,你比如说把它呢,我们进行一个解压。那解压之后呢,你打开啊,比如这个sun security啊,Ec啊等等,但这个对应的这个自解码文件,那我们这些自解码文件所对应的这些结构的一个加载,那我们说呢,使用的就是叫什么呀,扩展类加载器对吧?那比如这块呢,我们就选择其中的一个啊,你就从像刚才一样啊,从这里边去找一个就行,然后看一下它的这个类的加载器。
06:02
哎,这个呢,我们就发现啊,它对应的这个class呢,就属于叫e class。啊,相当于呢,叫做扩展类加载器,好这个呢,就咱们提到这个扩展类加载器的这样的一个情况啊,这样给大家介绍一下。
我来说两句