java中的ClassLoader
ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用。
要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就是用来加载Class文件到JVM,以供程序使用的。我们知道,java程序可以动态加载类定义,而这个动态加载的机制就是通过ClassLoader来实现的,所以可想而知ClassLoader的重要性如何。
看到这里,可能有的朋友会想到一个问题,那就是既然ClassLoader是用来加载类到JVM中的,那么ClassLoader又是如何被加载呢?难道它不是java的类?
没有错,在这里确实有一个ClassLoader不是用java语言所编写的,而是JVM实现的一部分,这个ClassLoader就是bootstrap classloader(启动类加载器),这个ClassLoader在JVM运行的时候加载java核心的API以满足java程序最基本的需求,其中就包括用户定义的ClassLoader,这里所谓的用户定义是指通过java程序实现的ClassLoader,一个是ExtClassLoader,这个ClassLoader是用来加载java的扩展API的,也就是/lib/ext中的类,一个是AppClassLoader,这个ClassLoader是用来加载用户机器上CLASSPATH设置目录中的Class的,通常在没有指定ClassLoader的情况下,程序员自定义的类就由该ClassLoader进行加载。
当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。
上面大概讲解了一下ClassLoader的作用以及一个最基本的加载流程,接下来将讲解一下ClassLoader加载的方式,这里就不得不讲一下ClassLoader在这里使用了双亲委托模式进行类加载。
每一个自定义ClassLoader都必须继承ClassLoader这个抽象类,而每个ClassLoader都会有一个parent ClassLoader,我们可以看一下ClassLoader这个抽象类中有一个getParent()方法,这个方法用来返回当前ClassLoader的parent,注意,这个parent不是指的被继承的类,而是在实例化该ClassLoader时指定的一个ClassLoader,如果这个parent为null,那么就默认该ClassLoader的parent是bootstrap classloader,这个parent有什么用呢?
我们可以考虑这样一种情况,假设我们自定义了一个ClientDefClassLoader,我们
相关文档:
List的用法
List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如表1所示。
表1 List接口定义的常用方法及功能
从表1可以看出,List接口提供的适合于自身的 ......
学JAVA需要掌握的技术及流程
对于java初学者来说庞大的Java语言不知到从哪里入手开始学习,也不知道都要学些什么才能符合企业的要求,以下是java私塾根据技术的更新而调整的最新教学内容及流程,供大家参考。
1.java的基础知识
不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对 ......
Javah生成JNI头文件
假设工程目录下有bin文件夹,bin存放编译好的class文件;
在bin目录下,
......\koalaTest\bin>javah -classpath . -jni com.jni.vikitest
然后在.....\koalaTest\bin 即可找到一个com_jni_Calculator.h头文件,生成成功! ......
[摘要]
本文介绍了一系列基于Windows CE的Java虚拟机以及集成开发环境,其中包括 IBM公司的Visual Age Micro Edition
(就是现在的WebSphere Studio Device Developer),
Sun公司的Personal Java, WabaSoft 发起的Waba,Insignia公司的Jeode (就是现在Esmertec的Jeode),Nsicom公司的CrEme以及New
Monics公司的PE ......
将java编织成.class后,如果只是用java命令来执行总觉得不是太过瘾,找个办法生成像exe文件一样用鼠标双击便可执行的文件,应该是很有趣的啊。这里我用了一个名字叫做exe4j的免费小软件,感觉不错。
首先,当然是要下载个exe4j。我的是2.2版本的,license:L-g782dn2d-1f1yqxx1rv1sqd。
接着,将你要选择好你即将 ......