了解classloader(节选)
完整文章下载:
http://www-900.ibm.com/developerworks/education/java/j-classloader/j-classloader.zip
在流行的商业化编程语言中,java 语言由于在 java 虚拟机 (jvm) 上运行而显得与众不同。这意味着已编译的程序是一种特殊的、独立于平台的格式,并非依赖于它们所运行的机器。在很大程度上,这种格式不同于传统的可执行程序格式。
与 c 或 c++ 编写的程序不同,java 程序并不是一个可执行文件,而是由许多独立的类文件组成,每一个文件对应于一个 java 类。
此外,这些类文件并非立即全部都装入内存,而是根据程序需要装入内存。classloader 是 jvm 中将类装入内存的那部分。
而且,java classloader 就是用 java 语言编写的。这意味着创建您自己的 classloader 非常容易,不必了解 jvm 的微小细节。
如果 jvm 已经有一个 classloader,那么为什么还要编写另一个呢?问得好。缺省的 classloader 只知道如何从本地文件系统装入类文件。不过这只适合于常规情况,即已全部编译完 java 程序,并且计算机处于等待状态。
但 java 语言最具新意的事就是 jvm 可以非常容易地从那些非本地硬盘或从网络上获取类。例如,浏览者可以使用定制的 classloader 从 web 站点装入可执行内容。
有许多其它方式可以获取类文件。除了简单地从本地或网络装入文件以外,可以使用定制的 classloader 完成以下任务:
*在执行非置信代码之前,自动验证数字签名
*使用用户提供的密码透明地解密代码
*动态地创建符合用户特定需要的定制化构建类
*任何您认为可以生成 java 字节码的内容都可以集成到应用程序中。
