- 0
- 0
- 约2.7千字
- 约 6页
- 2018-07-04 发布于福建
- 举报
Java动态类加载机制究及应用
Java动态类加载机制研究及应用 摘 要 Java是当前应用最广、最具有发展前景的编程体系之一,其中JVM是核心,Java动态类加载是JVM的重要特征之一,其主要通过Bootstrap ClassLoader和用户自定义两种加载器完成加载、连接、初始化步骤,通过隐式加载与显式加载实现动态挂载,丰富了Java程序功能。 中国论文网 /1/viewhtm 【关键词】Java JVM 动态类类加载 Java是当前应用最广、最具有发展前景的编程体系之一,其体系主要可分为Java语言、Java class文件、Java API和虚拟机(JVM),其中JVM是核心。支持Java动态类加载是JVM的重要特征之一,既允许程序动态加载程序组建,程序本身运行并不受太大的影响,为程序的扩展创造了条件,同时极大的节省了运算空间。本文简要的概述Java动态类加载机制,并探讨其部分领域中的应用价值。 1 Java类加载器 Java加载体系灵活,一个程序可允许多种不同类别加载器存在,并允许一定程度的自定义。总体而言,Java加载器可分为Bootstrap ClassLoader和用户自定义两种。Bootstrap ClassLoader是JVM实现的一部分,依据JVM实现形式的不同,可成为实现形式的一部分,其通过默认方式加载Java运行环境提供了核心类(是所有应用程序必须的核心类),并永驻JVM,直至JVM退出基础操作系统。Bootstrap ClassLoader还加载Ext ClassLoader与App ClassLoader两个用户类加载器,以满足不同类型的加载需求。自定义加载器顾名思义,可采用自定义方式加载,其可支持Java语言编写,还可被翻译成为class文件,还能被实例化,实际上自定义加载器已成为程序的一部分。自定义加载器最大的优势在于为扩展Java提供了可能。 2 Java动态类加载机制 JVM解释字节码过程主要可分为加载、连接与初始化三个步骤: (1)加载:寻找类或接口子解码文件,并进行解析,并构造成为JVM内部对象能够表示的组件; (2)连接:是将已加载的数据合并进入JVM中允许,连接又可分为坚持、准备、解析三个步骤; (3)初始化,是将静态变量、代码快,进行初始化工作。前文提到JVM 运行需要多种加载器,每个加载器的稳定运行都需要许多类加载器进行支持,类加载器又有许多分级、分工,不同的类加载器复杂加载不同的类,JVM据此构建复杂的层级关系,构建“全盘负责双亲委托模型”机制进行加载。当有载入某类加载器需求时,便通过路径寻找父加载器载入,若无对应的父类加载器,则需要按照搜索路径进行递归性搜索,这个类加载器在载入一个类时,该类所以来的父类或搜索获得的引用类都有该类加载器载入。当一个加载器被请求载入某类时,在确认该类若已被加载,则直接返回已被加载过的类对象,若未被加载,则定义后委托父类加载,若能加载成功,则发挥该类对应的class对象,否则继续移交,一直到获得根引导类加载器。整个过程遵循严格的递归调用,尽管耗时费力,但是经过严格的层级检查,则相对安全,不易被植入恶意基础类,保证类根类使用的安全性。 前文提到,因为类加载器会检查目标类是否被加载,故每个类仅会被同一个类加载器加载1次。再次过程中,每个被加载的类被加载过程都由其名称以及加载器名称控制。在每个类没装载解析后,JVM都会形成对应的java.lang.Class对象,提供有关于此次加载过程的描述,每个Class对象都有一个完整的定义,以供加载器引用。 3 Java动态类加载实现 JVM加载类的方式主要可分为隐式加载与显式加载两种,前者主要针对new等方式生成的对象,通过隐式调用加载,后者主要通过程序员调用自定义加载器调用加载需要的类,其又可经过Class.forName(1)方法与loadClass(2)提供,显示加载灵活性强,大大提高了JVM的适应性。自定义加载器任何子类中创建,通过制定的已存在的父加载器,挂载到JVM加载器层次树中。此外,任何类的加载都需通过抽象ClassLoader类及其子类实现,后者是Java核心API的重要组成部分,所有的自定义类都必须继承并实例化该类,可供选择的途径主要有:① Class loadClass(String name,boolean recsove),使用制定的二进制加载类,name是指已有的指定二进制类名称,在初始化类之前需进行类解析,该方法使用委托机制加载类,若已加载则采用findClass方法加载;②Class defineCLass(String name,byte[]b,int off,int len),将byte数组转化为Class类实例并解析,即将一个字节组转化
您可能关注的文档
- CFM56―5B反LVDT原理分析.doc
- CFO是ERP有效推进者.doc
- CFO来之路.doc
- CFRP索拉梁面内自由振动建模及参数分析.doc
- Chinas ast Emperor Shares His Post―Liberation Life Story with Foreign Guests.doc
- Chinese and RussianArtists Commemorate 70th Anniversary of Victory of World Anti―Fascist War.doc
- CIEC科学促进项目课程资源介绍流动液体.doc
- CIF条件下企业出口环节存在问题及对策探析.doc
- CIO充分利用大数据提升企竞争力.doc
- CIS战略与品牌形象塑造.doc
原创力文档

文档评论(0)