类加载机制是Java平台的一个重要创新,它的出现带来了Java平台的很多新特性。
类加载器最根本的作用只有一个,即从包含字节代码的字节流中定义出虚拟机中的Class类的对象。
加载流程:
1.寻找jre目录,寻找jvm.dll,初始化JVM
2.产生一个Bootstrap Loader(启动类加载器)
3.Bootstrap Loader自动加载Extended Loader (标准扩展类加载器)
4.Bootstrap Loader自动加载AppClass Loader(系统类加载器)
5.最后由AppClass Loader加载具体实现类
加载方式:
1.命令行启动应用时由JVM初始化加载
2.通过Class.forName()方法动态加载
3.通过ClassLoader.loadClass()方法动态加载
OSGi中的类加载原理,这个常识总结一下。
OSGi中最基本的组成部分是模块(bundle)。每个模块作为一个独立的组件,完成特定的功能,并对外提供服务。每个模块由Java类和所需的资源文件组成,以jar包的形式呈现。每个模块既可以是服务的提供者,又可以是服务的消费着。从服务提供者的角度来说,一个模块中的Java类可以被其他模块使用;从服务消费者来说,一个模块为了完成其功能,可以需要使用其他模块提供的Java类。
每个模块的Java类相当于存在一个受管理的隔离空间中,对这个隔离空间的管理由OSGi实现中的类加载器来完成。