Java的ClasLoader介绍.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java的ClasLoader介绍

了解JAVA classloader(1) 与C或C++编写的程序不同,Java程序并不是一个可执行文件,而是由许 多独立的类文件组成,每一个文件对应于一个Java类。ClassLoader是JVM中将类装入内存的那部分。而且,Java ClassLoader就是用Java语言编写的。这意味着创建您自己的ClassLoader非常容易,不必了解JVM的微小细节。 与C或C++编写的程序不同,Java程序并不是一个可执行文件,而是由许多独立的类文件组成,每一个文件对应于一个Java类。 此外,这些类文件并非立即全部都装入内存,而是根据程序需要装入内存。ClassLoader是JVM中将类装入内存的那部分。 而且,Java ClassLoader就是用Java语言编写的。这意味着创建您自己的ClassLoader非常容易,不必了解JVM的微小细节。 为什么编写ClassLoader? 如果JVM已经有一个ClassLoader,那么为什么还要编写另一个呢?问得好。缺省的ClassLoader只知道如何从本地文件系统装入类文件。不过这只适合于常规情况,即已全部编译完Java程序,并且计算机处于等待状态。 但Java语言最具新意的事就是JVM可以非常容易地从那些非本地硬盘或从网络上获取类。例如,浏览者可以使用定制的ClassLoader从Web站点装入可执行内容。 有许多其它方式可以获取类文件。除了简单地从本地或网络装入文件以外,可以使用定制的ClassLoader完成以下任务: ◆在执行非置信代码之前,自动验证数字签名; ◆使用用户提供的密码透明地解密代码; ◆动态地创建符合用户特定需要的定制化构建类; ◆任何您认为可以生成Java字节码的内容都可以集成到应用程序中。 定制ClassLoader示例 如果使用过JDK或任何基于Java浏览器中的Applet查看器,那么您差不多肯定使用过定制的ClassLoader。 Sun最初发布Java语言时,其中最令人兴奋的一件事是观看这项新技术是如何执行在运行时从远程的Web服务器装入的代码。(此外,还有更令人兴 奋的事--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的入口点。其特征如下: Class loadClass(String name, boolean resolve); name参数指定了JVM需要的类的名称,该名称以包

文档评论(0)

mi80868668 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档