JAVA虚拟机简介

    1. 一套规范:Java虚拟机规范。定义概念上Java虚拟机的行为表现
    2. 一种实现:例如HotSpot,J9,JRockit。需要实现JVM规范,但具体实现方式不需要与“概念中”的JVM一样。
    3. 一个运行中的实例,某个JVM实现的某次运行的实例.

    JRE:Java Runtime Environment,包含JVM和类库。

    JDK:Java Development Kit,包含JRE和一些开发工具,如javac。

    JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述:
    PNG

    1. Extension ClassLoader负责加载java平台中扩展功能的一些jar包,主要是由 sun.misc.Launcher$ExtClassLoader实现的,是一个java类,继承自URLClassLoader超类。它将负责%JRE_HOME/lib/ext目录下的jar和class加载到内存,开发者可以直接使用该加载器。

    2. App ClassLoader负责加载环境变量classpath中指定的jar包及目录中class到内存中,开发者也可以直接使用系统类加载器。