发明名称 Java操作系统中类装载的实现方法
摘要 本发明提供了一种Java操作系统中类装载的实现方法。类装载将包含在类文件中的字节码装载到Java操作系统中,通过初始化基本类、装载静态类、处理具体实例类的一个过程,使用一系列装载器,将Java类装载到Java操作系统中运行。本发明对嵌入式系统环境,尤其是面向嵌入式系统的Java操作系统,有重大意义。
申请公布号 CN100346303C 申请公布日期 2007.10.31
申请号 CN200610049141.8 申请日期 2006.01.17
申请人 浙江大学 发明人 陈天洲;戴鸿君;黄彧
分类号 G06F9/445(2006.01) 主分类号 G06F9/445(2006.01)
代理机构 杭州求是专利事务所有限公司 代理人 林怀禹
主权项 1、一种Java操作系统中类装载的实现方法,其特征在于:类装载将包含在类文件中的字节码装载到Java操作系统中,并使其成为Java操作系统中运行进程的一部分;这个类装载过程是通过以下方法:a、初始化基本类装载基本类型为int、boolean及基本类Object、Class、Void、Boolean、Integer,调用装载静态类方法装载,基本类型也当作类装载并加入到类池表项;b、装载静态类将要装载的类名作为该函数的一个参数传入,先通过调用查询类入口方法检查类是不是已经在类池区,如果已经在类池中,则直接返回;如果不在类池中,则分配一个新的类表项结构,并返回指向该处的指针,然后寻找类并装载;该方法在类路径指定的目录下或者Jar文件中查询类文件,从类库读取字节码,并将其赋值给对象,返回该对象,再将这个对象赋值给classEntry->class指针,然后调用类处理方法处理已装载的类;c、处理类由于其他线程可能也要处理同一个类,因此该方法是同步的,处理装载类之前,必须先处理该类的超类,如果该类没有超类,则抛出异常,第一步解决类的对象区、静态区和接口,完成装载过程;第二步验证类的格式;第三步验证字节码;一个Java应用程序使用两种类型的类装载器:根装载器和用户定义的装载器,根装载器是Java虚拟机实现的一部分,如果一个Java虚拟机是在现在已经存在并且正在被使用的操作系统的顶部用C程序来实现的,那么根装载器将是那些C程序的一部分,根装载器以某种默认的方式将类装入,包括那些JavaAPI的类;在运行期间,一个Java程序能安装用户自己定义的类装载器,根装载器是虚拟机固有的一部分,而用户定义的类装载器则不是,它是用Java语言写的,被编译成class文件之后然后再被装入到虚拟机,并像其它的任何对象一样可以被实例化;Java操作系统中的类装载模型是一种代理模型,当Java操作系统要求类装载器装载一个类时,类装载器首先将这个类装载请求转发给他的父装载器,只有当父装载器没有装载并无法装载这个类时,类装载器才获得装载这个类的机会,这样所有类装载器的代理关系构成了一种树状的关系;树的根是类的根装载器,在Java操作系统中它以“null”表示,除根装载器以外的类装载器有且仅有一个父装载器,在创建一个装载器时,如果没有显式地给出父装载器,那么Java操作系统中将默认系统装载器为其父装载器;Java操作系统中具有:●根装载器:没有父装载器,是Java操作系统实现的一部分;●扩展装载器:继承的父装载器为根装载器,不像根装载器可能与运行时的操作系统有关,用纯Java代码实现的;●系统装载器:从CLASSPATH环境变量中装载代码的,用纯Java代码实现,同时还是用户自定义类装载器的缺省父装载器;●小应用程序装载器:从用户指定的网络上的特定目录装载小应用程序代码。
地址 310027浙江省杭州市西湖区浙大路38号