(Java类装载器.docVIP

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

Java 类装载器 类装载器概述 Java被设计为与平台无关并且支持分布式网络体系结构。为了实现这两个目标,Java革新了许多关键领域。这些领域之一是怎样装载代码库的这个基础问题。如果Java真的成为与平台无关的语言,那么为了装载自己的库,它就不能依赖特定类型的文件系统。许多小型嵌入式计算机系统甚至都没有文件系统。 此外,因为Java被设计为从分布式在网络上的各种源码装载类,而不能运行简单的从文件系统装载的类。 为了处理这些问题,Java体系结构引入了类装载器的概念。类装载器的角色是抽象装载类的过程,它完全与任何底层的数据存储无关,而成为网络或硬件设备。 标准的JavaSE类装载器 自从J2SE 1.2规范起,JVM就已经利用了三种不同的类装载器,以下将对它们进行详细的介绍: 引导类装载器(也称为初始类装载器) 扩展类装载器 系统类装载器 这些类装载器是有层次的,系统类装载器在底层,引导类装载器在上层。它们的关系是父——子关系,因此父系统装载器是类装载器的扩展。它们之间关系非常重要。 引导类装载器 正如其名称表示的那样,引导类装载器用于JVM装载那些它运行所需的Java类。实际上,引导类装载负责装载所有核心的Java类(例如:Java.lang.*和java.io.*) 因为类装载器是使用Java编写的,引导类装载器解决了高技术才能解决的“鸡与蛋”问题:当类装载器本身需要被装载时,JVM怎样装载基于Java的类装载器?包括JVM中的引导类装载器自己解决问题,和各种JVM厂商(包括Sun)使用代码实现引导类装载器。 尽管已经说明了类装载器装载了核心的Java类,读者可能还想知道引导类装载器具体在哪里找到这些类。JAR文件的查找方法由于厂商的不同而变化。例如Sun的JavaSE5 JVM在JDK/jre/lib目录下查找JAR文件,尤其在JDK/jre/lib/rt.jar目录下查找引导类。另一方面IBM的JVM从JDK/jre/lib/vm.jar读入这些引导类。此处,JDK指安装Java5 JDKr 位置。 无论是Sun还是IBM的JVM,它们也拥有不同标准的命令行选项:-Xbootclasspatchs,它允许为JVM查找引导类设置不同的位置,而-Xbootclasspatch/p:和-Xbootclasspath/a:,它们允许预先计划或附加CLASSPATH到boot CLASSPATH。至于开发WEB应用程序,不需要更改或添加boot CLASSPATH。 扩展类装载器 Java 1.2引入了标准扩展机制。通常,当程序员想让JVM在特定的位置查找类文件时,他们会利用CLASSPATH环境变量。Sun引入了标准扩展机制作为一个可选的方法。可以将JAR文件放到标准扩展目录,JVM将能自动地找到它们。 扩展类装载器负责装载一个或多个扩展目录中的所有类。正如引导装载器的路径随着不同的JVM而变化一样,标准扩展路径也是如此。Sun和IBM JDK在Linux上的标准扩展目录为JDK/jre/lib/ext。此处的JDK指安装Java 5 JDK的位置。只要安装了Java运行环境JAR,那么扩展目录为JRE/lib/ext,而JRE是Java运行时的安装位置。扩展类装载器可以不是独立的类装载器——一些实现也许甚至使引导类装载器从扩展目录装载类。 系统类装载器 系统装载器在目录和CLASSPATH环境变量指定的JAR文件中查找自己的类,或通过-classpath命令行选项传递该类。系统装载器也用于装载应用程序的entry point类(即含有main()方法的类),对于那些其他任何没有涵盖在以上两类装载器中的类,都默认使用系统类装载器。 系统类装载器有时称为应用程序类装载器。这是一个更直观的术语,因为该类装载器装载应用程序类。IBM JVM使用此技术;不过,本章使用Sun的约定,将它称为系统类装载器 委派模型 正如前面介绍的,Java SE 拥有三种不同的类装载器。如果实例化java.lang.String,引导类装载器就负责该类;如果用户类被实例化,通常系统类装载器负责装载该类。那么JVM是如何知道将使用哪个类装载器呢? JVM通过利用委派模型知道将使用哪个类装载器。Java JDK 1.2以后的版本,无论类装载器何时收到装载类的请求(换句话说,它委派到其父类装载器的请求)。在父类装载器请求的类之前,它委派到其父的请求等,直到引导类装载器到达。如果父类装载器成功地装载该类,那么就返回作为结果的类对象,说明

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档