Java装载器也是Java的四大核心技术之一。这篇文章中,北京北大青鸟学校学术部老师要为各位讲解一下装载器的体系结构。
北京北大青鸟学校技术专家介绍:一个Java应用程序可以使用两种类装载器:“启动(bootstrap)"类装载器”和“用户定义的类装载器”。启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。启动类装载器通常使用某种默认方式从本地磁盘中装载类,包括Java API类(启动类装载器也被称为原始类装载器、系统类装载器或者默认类装载器)。
Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类。例如,从网络下载class文件。尽管启动类装载器是虚拟机实现的本质部分,而用户定义的类装载器不是,但用户定义的类装载器能够用Java来编写,能够被编译成class文件,能够被虚拟机装载,还能够像其它对象一样实例化。
由于有用户定义类装载器,所以不必再编译的时候就知道运行中的Java应用程序中最终会加入的所有的类。用户定义的类装载器使得在运行扩展Java应用程序成为可能。当它运行时,应用程序能够解决它需要哪些额外的类,能够决定是使用一个或是更多的用户定义的类装载器来装载。由于类装载器是用Java编写的,所以用任何在Java代码中可以表述的风格来进行类装载。这些类可以通过网络下载,可以从某些数据库中获取,甚至可以动态生成。
每一个类被装载的时候,Java虚拟机都监视这个类,看到它到底是被启动类装载器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,虚拟机就会使用装载第一个类的类装载器装载引用的类。例如,如果虚拟机使用一个特定的类装载器装载Volcano这个类,它就会使用这个类装载器装载Volcano类使用的所有类。(北京北大青鸟学校学术部提供,未完待续)