当前位置:  编程技术>java/j2ee

java 命名空间 命名规则第1/2页

    来源: 互联网  发布时间:2014-10-21

    本文导语:  摘要                                                                                          Java的类装载器是Java动态性的核心,本文将向大家简要介绍Java的类装载器,及相关的...

摘要                                                                                      
    Java的类装载器是Java动态性的核心,本文将向大家简要介绍Java的类装载器,及相关的parent delegation模型,命名空间,运行时包等概念,同时讨论一些在学习中容易混淆的问题。 

类装载器的功能及分类

    顾名思义,类装载器是用来把类(class)装载进JVM的。JVM规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-defined class loader)。 

   bootstrap是JVM自带的类装载器,用来装载核心类库,如java.lang.*等。如java.lang.Object是由bootstrap装载的。 

   Java提供了抽象类ClassLoader,所有用户自定义类装载器都实例化自ClassLoader的子类。 System Class Loader是一个特殊的用户自定义类装载器,由JVM的实现者提供,在编程者不特别指定装载器的情况下默认装载用户类。系统类装载器可以通过ClassLoader.getSystemClassLoader() 方法得到。


例1,测试你所使用的JVM的ClassLoader

/*LoaderSample1.java*/public class LoaderSample1 {    public static void main(String[] args) {        Class c;        ClassLoader cl;
        cl = ClassLoader.getSystemClassLoader();        System.out.println(cl);
        while (cl != null) {            cl = cl.getParent();            System.out.println(cl);        }        try {            c = Class.forName("java.lang.Object");            cl = c.getClassLoader();            System.out.println("java.lang.Object's loader is " + cl);            c = Class.forName("LoaderSample1");            cl = c.getClassLoader();            System.out.println("LoaderSample1's loader is " + cl);        } catch (Exception e) {            e.printStackTrace();        }    }}
在我的机器上(Sun Java 1.5)的运行结果

C:java>java LoaderSample1
sun.misc.Launcher$AppClassLoader@82ba41
sun.misc.Launcher$ExtClassLoader@923e30
null
java.lang.Object's loader is null
LoaderSample1's loader is sun.misc.Launcher$AppClassLoader@82ba41


第一行表示,系统类装载器实例化自类sun.misc.Launcher$AppClassLoader 

第二行表示,系统类装载器的parent实例化自类sun.misc.Launcher$ExtClassLoader 

第三行表示,系统类装载器parent的parent为bootstrap 

第四行表示,核心类java.lang.Object是由bootstrap装载的 

第五行表示,用户类LoaderSample1是由系统类装载器装载的 

parent delegation模型

   从1.2版本开始,Java引入了双亲委托模型,从而更好的保证Java平台的安全。在此模型下,当一个装载器被请求装载某个类时,它首先委托自己的parent去装载,若parent能装载,则返回这个类所对应的Class对象,若parent不能装载,则由parent的请求者去装载。

   如图1所示,loader2的parent为loader1,loader1的parent为system class loader。假设loader2被要求装载类MyClass,在parent delegation模型下,loader2首先请求loader1代为装载,loader1再请求系统类装载器去装载MyClass。若系统装载器能成功装载,则将MyClass所对应的Class对象的reference返回给loader1,loader1再将reference返回给loader2,从而成功将类MyClass装载进虚拟机。若系统类装载器不能装载MyClass,loader1会尝试装载MyClass,若loader1也不能成功装载,loader2会尝试装载。若所有的parent及loader2本身都不能装载,则装载失败。

   若有一个能成功装载,实际装载的类装载器被称为定义类装载器,所有能成功返回Class对象的装载器(包括定义类装载器)被称为初始类装载器。如图1所示,假设loader1实际装载了MyClass,则loader1为MyClass的定义类装载器,loader2和loader1为MyClass的初始类装载器。



    
 
 

您可能感兴趣的文章:

  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • java文件重命名(文件批量重命名)实例程序代码分享
  • java命名空间java.text接口attributedcharacteriterator的类成员方法: getattribute定义及介绍
  • Linux 下 java 的File类的renameTo()方法 不能重命名文件
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • Java命名规则详细总结
  • java命名空间java.beans接口propertyeditor的类成员方法: getvalue定义及介绍
  • Java Web项目前端规范(采用命名空间使js深度解耦合)
  • java命名空间java.awt类container的类成员方法: getlayout定义及介绍
  • sqlserver iis7站长之家
  • java命名空间java.beans类defaultpersistencedelegate的类成员方法: defaultpersistencedelegate定义及介绍
  • java开发命名规范总结
  • java命名空间java.text类decimalformat的类成员方法: topattern定义及介绍
  • Java实现文件批量重命名具体实例
  • java命名空间java.sql类types的类成员方法: null定义及介绍
  • java命名空间java.awt类awtevent的类成员方法: id定义及介绍
  • java命名空间java.text类choiceformat的类成员方法: choiceformat定义及介绍
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • java命名空间java.sql类driverpropertyinfo的类成员方法: value定义及介绍
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getuptime定义及介绍
  • Java 业务规则引擎 Drools
  • Java的演绎法规则引擎 JEOPS
  • Java规则引擎 Hammurapi Rules
  • Java 代码规则检查工具 Macker
  • Java规则引擎 Mandarax
  • java规则引擎 JRuleEngine
  • 求JAVA的设计规范和编程规则!
  • 大家来谈谈java语言的书写规则吧。(分数不断增加中)
  • 请问谁有JAVA编码规则?能否给小弟一份?先谢了!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt类basicstroke的类成员方法: getlinewidth定义及介绍
  • Java日历空间 JCalendarButton
  • java命名空间java.awt.image类raster的类成员方法: samplemodeltranslatex定义及介绍
  • 怎样用java 程序查看 像硬盘大小 以及各分区的剩余空间之类的信息?
  • java命名空间java.awt.image类raster的类成员方法: samplemodeltranslatey定义及介绍
  • HP-Unix操作系统, java进程, Swap空间不释放
  • java命名空间java.lang类stringbuilder的类成员方法: trimtosize定义及介绍
  • 这个操作java会自动释放内存空间吗?
  • java命名空间java.awt类multiplegradientpaint的类成员方法: getcolorspace定义及介绍
  • 在我的java程序中,我从数据库中得到一批数据,不能确定是多少个,我要把它保存到我的java数组中,可是怎样才能向C++中的数组一样可以自由分配空间,在java中我必需预先指定大小,不会一定要用java中的那个可改变数组大小的类吧?
  • java命名空间java.awt.color类icc_profile的类成员方法: getcolorspacetype定义及介绍
  • 怎样用Java获取linux上的各分区磁盘剩余空间,回答者一率有分!!!!
  • java命名空间java.lang类stringbuffer的类成员方法: trimtosize定义及介绍
  • Java3D实例之创建空间几何模型的实现方法
  • java命名空间java.awt.color类colorspace的类成员方法: gettype定义及介绍
  • java命名空间java.awt类color的类成员方法: orange定义及介绍
  • java命名空间java.awt类color的类成员方法: red定义及介绍
  • java命名空间java.awt类color的类成员方法: gray定义及介绍
  • java命名空间java.awt类color的类成员方法: yellow定义及介绍
  • java命名空间java.awt类color的类成员方法: green定义及介绍
  • java命名空间java.awt类color的类成员方法: black定义及介绍
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3