深入探讨Java类加载器 - 编程入门网
深入探讨Java类加载器时间:2011-06-12 IBM 成富类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。 它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用的开发人员不需要直接同类加 载器进行交互。Java 虚拟机默认的行为就已经足够满足大多数情况的需求了。 不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很 了解的话,就很容易花大量的时间去调试 ClassNotFoundException 和 NoClassDefFoundError 等异常。本文将详细介绍 Java 的类加载器,帮助读者 深刻理解 Java 语言中的这个重要概念。下面首先介绍一些相关的基本概念。 类加载器基本概念 顾名思义,类加载器(class loader)用来加 载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如 下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每个这样的实例用来表示一个 Java 类。通过 此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更 加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下 载的。 基本上所有的类加载器都是 java.lang.ClassLoader 类的一个实 例。下面详细介绍这个 Java 类。 java.lang.ClassLoader 类介绍 java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称, 找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类, 即 java.lang.Class 类的一个实例。除此之外,ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。 为了完成加载类的这个职责,ClassLoader 提供了一系列的方法,比较重要的方 法如 表 1 所示。关于这些方法的细节会在下面进行介绍。 表 1. ClassLoader 中与加载类相关的方法
对于 表 1 中给出的方法,表示类名称的 name 参数的值是类的二进制名称。需要注意的是内部类的表示,如 com.example.Sample$1 和 com.example.Sample$Inner 等表示方式。这些方法 会在下面介绍类加载器的工作机制时,做进一步的说明。下面介绍类加载器的树 状组织结构。 深入探讨Java类加载器(2)时间:2011-06-12 IBM 成富类加载器的树状组织结构 Java 中的类加载器大致 可以分 |
||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |