类加载是工作和面试过程中常涉及的问题,类加载器顾名思义是用来加载类的一种工具。除了常见的诸如“双亲委派原则”问题,还有其他热部署,字节码增强等高级特性也与类加载器有关。本文从JDK和JVM两个层面来梳理一下Java中的类加载器及其实现。
在Java中的类加载器一文中介绍过Java中的类加载器以及它们的创建和初始化过程,它们本身之间并没有很强的关系,而且应用类加载器和扩展类加载器是由Java代码实现在JDK中的,而启动类加载器则是通过C++代码实现在Hotspot VM源码中的。而类加载过程则会串联起来这几个类加载器,而这正是本文要分析的内容。
作为Java开发者,一般都是直接使用java命令来运行Java代码,但一直没有想过java命令的背后做了哪些工作。其实从java命令到Java中的主方法之间还做了很多其他重要操作,比如创建和初始化JVM。本文就来大体分析一下这个过程是怎样的。