理解Java类加载原理.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类加载原理

理解Java类加载原理第一部分. 提示 我需要读这篇文章吗? Java类加载器对Java系统的运行是至关重要的,但是却常常被我们忽略。Java类加载器负载 在运行时查找和加载类。自定义类加载器可以完全改变类的加载方式,以自己喜欢的方式来 个性化你的Java虚拟机。本文简要的介绍Java类加载器,然后通过一个构造自定义类加载器 的例子来说明,这个类加载器在加载类前会自动编译代码。你将学到类加载器到底是干什么 的,如何创建你自己的类加载器。只要你有一些基本的Java知识,知道如何创建、编译、运 行一个命令行Java程序以及一些Java类文件的基本概念,你就可以理解本文的内容了。读完 本文,你应该能够: * 扩张Java虚拟机的功能 * 创建一个自定义的类加载器 * 如何把自定义的类加载器整合到你的应用程序中 * 修改你的类加载器以兼容Java2 获得帮助  对本文有任何问题,可以联系作者Greg Travis,油箱:mito@ 。 ? 第二部分. 简介 类加载器是什么? Java和其他语言不同的是,Java是运行于Java虚拟机(JVM)。这就意味着编译后的代码是以 一种和平台无关的格式保存的,而不是某种特定的机器上运行的格式。这种格式和传统的可 执行代码格式有很多重要的区别。具体来说,不同于C或者C++程序,Java程序不是一个独 立的可执行文件,而是由很多分开的类文件组成,每个类文件对应一个Java类。 另外,这 些类文件并不是马上加载到内存,而是当程序需要的时候才加载。 类加载器就是Java虚拟 机中用来把类加载到内存的工具。而且,Java类加载器也是用Java实现的。这样你就不需要 对Java虚拟机有深入的理解就可以很容易创建自己的类加载器了。 为什么要创建类加载器? 既然Java虚拟金已经有了类加载器,我们还要自己创建其他的呢?问得好。默认的类加载器 只知道如何从本地系统加载类。当你的程序完全在本机编译的话,默认的类加载器一般都工 作的很好。但是Java中最激动人心的地方之一就是很容易的从网络上而不只是本地加载类。 举个例子,浏览器可以通过自定义的类加载器加载类。 还有 很多加载类的方式。除了简单的从本地或者网络外,你还可以通过自定义Java中最激动人心 的地方之一: * 执行非信任代码前自动验证数字签名 * 根据用户提供的密码解密代码 * 根据用户的需要动态的创建类 你关心的任何东西都能方便的以字节码的形式集成到你的应用中 自定义类加载器的例子 如果你已经使用过JDK(Java软件开发包)中的appletviewer(小应用程序浏览器)或者其他 Java嵌入式浏览器,你就已经使用了自定义类加载器了。Sun刚刚发布Java语言的时候,最 令人兴奋的一件事就是观看Java如何执行从远程网站下载的代码。执行从远程站点通过HTT P连接传送来的字节码看起来有点不可思议。之所以能够工作,因为Java有安装自定义类加 载器的能力。小应用程序浏览器包含了一个类加载器,这个类加载器不从本地找Java类,而 是访问远程服务器,通过HTTP加载原始字节码文件,然后在Java虚拟机中转化为Java类。当 然类加载器还做了其他的很多事情:他们阻止不安全的Java类,而且保持不同页面上的不同 小程序不会互相干扰。Luke Gorrie写的一个包Echidna是一个开放的Java软件包,他允许在 一个Java虚拟机中安全的运行多个Java应用程序。它通过使用自定义类加载器给每个应用程 序一份类文件的拷贝来阻止应用程序之间的干扰。 我们的类加载器例子 我们知道了类加载器是如何工作的,也知道如何定义自己的类加载器了,接下来我们创建一 个名字为CompilingClassLoader (CCL)的自定义类加载器。CCL为我们做编译工作,我们就 不用自己手动编译了。 这基本上相当于有一个make程序构建到我们的运行环境。 注意:我们进行下一步之前,有必要搞清楚一些相关的概念。 系统在JDK版本1.2(也就是我们说的Java 2平台)得到很到改进。本文是在JDK1.0和1.1的 版本下写的,但是所有的东西都能在后来的版本工作。ClassLoader也在Java2种有所改进, 第五部分有详细介绍。 ? 第三部分.ClassLoader的结构 总揽 类加载器的基本目的是服务于对Java类的请求。Java虚拟机需要一个类的时候,就把一个类 名给类加载器,然后类加载器试图返回一个对应的类实例。可以通过在不同的阶段覆盖相应 的方法来创建自定义的类加载器。接下来我们将了解到类加载器的一些主要方法。你会明白 这些方法是干什么的,他们在加载类文件的时候是如何工作的。你还将知道创建自定义类加 载器的时候需要写哪些代码。在下一部分,你将利用这些知识和我们自定义的Co

文档评论(0)

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

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

1亿VIP精品文档

相关文档