动态扩展java程序
1) java.lang.Class的forName方法
可以在装载的时候初始化,适合许需要装载的时候就初始化的类型
2) 用户自定义装载器 java.lang.ClassLoader的子类的loadClass方法
适合在安全上包含一种定制方式把类型装载到保护域。虚拟机使用装载引用类型的同一个类装载器装载所需的类型
虚拟机确认引用是否被装载到当前的命名空间,如没还未,则将类型的全限定名传递到当前的类装载器。确认父类是否被装载(递归),委派双亲类转载器装载类型(递归),被委派的类装载器调用loadClass方法,再调用defineClass或findSystemClass方法,方法会使得虚拟机试图解析二进制数据,变为方法区中的内部结构数据。最后返回需要装载的类型的Class实例,最后检查访问权限。