虚拟机类加载机制

一、概述

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步.

虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型, 这就是虚拟机的类加载机制.

与那些在编译时需要进行连接工作的语言不同, 在java语言里面,类型的加载,连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销, 但是会为java应用程序提供高度的灵活性, java里天生可以动态扩展的语言特性就是依赖运行时期动态加载和动态连接这个特点实现的.例如, 如果编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类; 用户可以通过java预定义的和自定义类加载器, 让一个本地的应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分,这种组装应用程序的方式目前已广泛应用于java程序之中. 从最基础的Applet,JSP到相对复杂的OSGI技术,都使用了java语言运行期类加载的特性.