- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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以后的版本,无论类装载器何时收到装载类的请求(换句话说,它委派到其父类装载器的请求)。在父类装载器请求的类之前,它委派到其父的请求等,直到引导类装载器到达。如果父类装载器成功地装载该类,那么就返回作为结果的类对象,说明
您可能关注的文档
- 《iPod有声读物制作终极大法.doc
- 《IPO预审员内部操作手册一览.docx
- 《iPhone的拍照技巧技巧适用于其他手机.docx
- 《IPPBX与PBX的区别和比较.doc
- 《ip反查主机名.doc
- 《IPv6地址格式.doc
- 《IPTV流媒体平台STB设计方案.doc
- 《IP地址和子网掩码的类别.doc
- 《IP省电设置.docx
- 《IP呼叫中心功能列表.doc
- 评分环境系统水平试卷页nenvironmental systems and societies paper 2 sl markscheme.pdf
- 不给糖就捣蛋1trick or treatlpr.pdf
- 及国产双龙主席新线路图.pdf
- 会话分类trevor hughes20 in 2013 the top privacy issues watchstudio 20值得隐私问题.pdf
- 模具制造商专用高精度立式加工中心电子型录nvd4000 dcg.pdf
- vscode软件安装海量资源尽在.pdf
- 内容品牌masport图库.pdf
- 银河护卫队综合笔记.pdf
- 文稿头部秋季slim raglan zip mock.pdf
- 协商解除劳动合同通知书(精选28篇) .pdf
文档评论(0)