background image

 

有更令人兴 奋的事--Java 技术提供了一种便于编写代码的强大语言。)
更一些令人激动的是它可以执行从远程 Web 服务器通过 HTTP 连接发
送过来的字节码。

此项功能归功于 Java 语言可以安装定制 ClassLoader。Applet 查看器
包含一个 ClassLoader,它不在本地文件系统中寻找类,而是访问远
程服务器上的 Web 站点,经过 HTTP 装入原始的字节码文件,并把它
们转换成 JVM 内的类。

浏览器和 Applet 查看器中的 ClassLoaders 还可以做其它事情:它们
支持安全性以及使不同的 Applet 在不同的页面上运行而互不干扰。

LukeGorrie 编写的 Echidna 是一个开放源码包,它可以使您在单个虚
拟机上运行多个 Java 应用程序。它使用定制的 ClassLoader,通过向
每个应用程序提供该类文件的自身副本,以防止应用程序互相干扰。

我们的 ClassLoader 示例

了解了 ClassLoader 如何工作以及如何编写 ClassLoader 之后,我们

 

将创建称作 CompilingClassLoader(CCL)的 Classloader。CCL 为我们
编译 Java

 

代码,而无需要我们干涉这个过程。它基本上就类 似于直接

构建到运行时系统中的 make”程序。

注:进一步了解之前,应注意在 JDK 版本 1.2 中已改进了
ClassLoader 系统的某些方面(即 Java2 平台)。本教程是按 JDK 版本
1.0 和 1.1 写的,但也可以在以后的版本中运行。

Java2 中 ClassLoader 的变动描述了 Java 版本 1.2 中的变动,并提供
了一些详细信息,以便修改 ClassLoader 来利用这些变动。

ClassLoader 的基本目标是对类的请求提供服务。当 JVM 需要使用类时,
它根据名称向 ClassLoader

 

请求这个类,然后 ClassLoader 试图返回

一个表示这个类的 Class 对象。通过覆盖对应于这个过程不同阶段的方
法,可以创建定制的 ClassLoader。

在本文的其余部分,您会学习 Java ClassLoader 的关键方法。您将了
解每一个方法的作用以及它是如何适合装入类文件这个过程的。您也会
知道,创建自己的 ClassLoader 时,需要编写什么代码。

在下文中,您将会利用这些知识来使用我们的 ClassLoader 示例--
CompilingClassLoader。

方法 loadClass

ClassLoader.loadClass()是 ClassLoader 的入口点。其特征如下: