文章作者 100test 发表时间 2010:01:01 12:28:39
来源 100Test.Com百考试题网
最近在研究osgi,在osgi里面里面有个很重要的东西,就是ClassLoader,所以,在网上搜集了一些资料,整理一下,
并加入了自己的一些理解.
(1)jvm的装载过程以及装载原理
所谓装载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程,
其中类或接口的名称是给定了的。当然名称也可以通过计算得到,但是更常见的是通过搜索源代码经过编译器编译后所得到
的二进制形式来构造。 在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,
其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据.
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的.
校验:检查导入类或接口的二进制数据的正确性.
准备:给类的静态变量分配并初始化存储空间.
解析:将符号引用转成直接引用.
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
(2):java中的类是什么?
一个类代表要执行的代码,而数据则表示其相关状态。状态时常改变,而代码则不会。当我们将一个特定的状态与一个类相对应起来,也就意味着将一个类事例化。尽管相同的类对应的实例其状态千差万别,但其本质都对应着同一段代码。在JAVA中,一个类通常有着一个.class文件,但也有例外。在 JAVA的运行时环境中(Java runtime),每一个类都有一个以第一类(first-class)的Java对象所表现出现的代码,其是java.lang.Class的实例。我们编译一个JAVA文件,编译器都会嵌入一个public, static, final修饰的类型为java.lang.Class,名称为class的域变量在其字节码文件中。因为使用了public修饰,我们可以采用如下的形式对其访问:
java.lang.Class
新版网站调整中,如需联系我们,请Email: evisa2011#gmail.com (#换@) ---- Copyright © 2000-2020.百考试题网 100Test.Com
|