1 
将源码打包成jar包，jar内都是class文件，由类加载器加载jar到JVM中，供系统使用 。
 

2
在代码中需要使用类的时候，JVM会去加载这个类(前提是这个类未被加载过)，一个类从加载到使用完毕会经历一下过程：
加载-验证-准备-解析-初始化-使用-卸载
一般在new 一个对象的时候会触发初始化一个类(反射生成呢？手动调用类加载器呢？),加载一个类的时候，需要先判断其父类是否加载过

准备阶段：
验证：主要是验证字节码 class文件是否符合规范，
准备：这里主要是做一些初始化的准备动作，为类分配一些内存空间，给静态成员初始化默认值。
注意 这里的初始化只是初始化java默认值，比如 private static int aa= 88;准备这个阶段是给aa赋值0，而不是88。88是后面初始化阶段做的事。
解析：这里是把符号引用转化为直接引用(这个过程涉及复杂的底层)，知道这个事就可以了

核心阶段：初始化
这里就是执行上面的把88赋值给a的过程，另外类的静态代码块也是这个阶段执行

3 
启动类加载器：这是加载 java下的lib类中的核心类库
扩展类加载器：这是加载 java下的类的中的lib/exe类库
应用类加载器：这个就是加载我们写的代码的加载器

双亲委派机制：
就是从上面往下优先加载，如果自己加载不了，就交给下级去加载。
使用双亲委派机制的目的就是放在类被重复加载