1 / 26
文档名称:

java类加载机制.doc

格式:doc   页数:26页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java类加载机制.doc

上传人:875845154 2016/3/1 文件大小:0 KB

下载得到文件列表

java类加载机制.doc

文档介绍

文档介绍:Java类加载机制(一)译:ayi第一次翻译,翻译得不是很好,请多多指点我的邮箱:nonopo12345@原文:/a/onjava/2005/01/26/。尽管,java中“advancedtopics”的发展,使java的类加载机制的地位有所下降。但每位编程着都应该知道这部分的工作机制,以及怎样去更好与其配合。这可以使我们节省很多时间,二不必要浪费在调试ClassNotFoundException,ClassCastException,等。这篇文章将从最基本的开始,比如代码和数据的关系和区别,以及他们怎么样关系起来形成一个实例或者对象。然后将会说到,java中怎样通过类加载器把代码加载到JVM中,以及java中实现的主要的几种类型的类加载器。然后在这篇文章中我们将会了解到java类加载机制的内幕,我们将使用最基本的代码来描述,这些代码执行与类加载器之后,但在加载一个类之前。在接下来的部分将使用一些例子来强调,对于开发者继承和开发自己的类加载器的必要性。接着将告诉你们怎样编写自己的类加载器,以及怎样使用它们去创建一个一般的能加载包括远程客户端辅助代码的类加载器引擎,以及怎样把它在JVM中定义,实例化,然后执行****惯上,把J2EE-ponents中说明的作为java类加载的规范,这篇文章正是从这本手册总结来的。类和数据一个类代表一段要执行的代码,然而数据则代表与这些代码相关联的某种状态。状态可以改变,代码不能改变。我们把一种特定状态与一个类关联起来时,就得到了这个类的一个实例。所以同一个类的不同实例有不同的状态,但都参照相同的代码。在java中,,虽然其中也包括异常。然而,在java运行时,每个类都会构造一个超类对象(first-classobject),。不论何时编译一个java文件,编译器都会在编译后的字节码中嵌入一个public,static,final型的字段class,。因为它是public类型的,我们可以通过标识符来访问它,像这样:=;只要一个类被加载到JVM,相同的类(强调:相同的类)将不会被重复加载。这将产生一个问题,什么才是相同的类?一个对象有一种特定状态和标识,对象总是与它所属类联系在一起,与这种状况相似,一个被加载到JVM中类也有特定的标识,接下来我们就阐述:在java中,一个类通过认证的类全名来唯一标识。认证的类全名是由包名和类名两部分组成。但是在一个类被加载到JVM中则是通过认证的类全名,还有加载这个类的加载器来唯一标识。因此,一个类的类名为C1,包名为Pg,被类加载器类KClassLoader的一个实例k1加载,则C1,,的类实例,在JVM中将被解释为(C1,Pg,k1)。这就意味着两个不同的类加载器实例(Cl,Pg,kl1)和(Cl,Pg,kl2),加载的类在JVM中将有不同的类实例对象,不是类型可比型(patible)的。在JVM中有多少个类加载器实例呢?下面,我们将讲解这个。类加载器在java中,。,开发者可以自由的创建它的子类,添加自己功能的类加载器。每当敲入javaMyMainClass,一个新的JVM开始时,引导类加载器(bootstrapclassloader)首先会把java中的一些关键类,,和运行时的代码载入内存。这些运行时类打包在JRE\lib\。因为是一个本地的接口,我们并不能从java文档中得到引导类加载器(bootstrapclassloader)信息。也正是这个原因,引导类加载器(bootstrapclassloader)的表现也根据JVM的不同而异。比如,如果我们试图得到一个核心java运行时类的一个类加载器,我们将得到null值,如下:log(());下面要说到的是java扩展类加载器。,我们可以放java扩展类库,这样我们可以获得超出java核心运行时类的特性。扩展类加载器(ExtClassLoader)。,