易截截图软件、单文件、免安装、纯绿色、仅160KB

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,我们


相关文档:

JNA实现Java调用Fortran

在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......

Linux下安装JAVA JDK

1.  从sun主页下载JDK for Linux版本,我的是jdk-6u14-linux-i586.bin。
2. 改为可操作文件,chmod +x  jdk-6u14-linux-i586.bin
3. 安装 在当前路径,./jdk-6u14-linux-i586.bin;一路确定,装好之后在同一目录下会生成一个文件夹,jdk1.6.0_14,里边是一些lib等文件,同windows下生成的安装文件夹一样。
4.设 ......

Java Swing教程(基础)


创建一个JFrame
下面用简单的实例演示了Java Swing创建一个能输入内容的窗口
public class frameTest(){
  public static void Main(String args[]){
    //创建JFrame对象,JFrame用来在屏幕上显示一个Windows窗口。
    JFrame frame = new JFrame("第一个JFrame"); &nbs ......

java组件之重量级与轻量级区别

轻量级组件是用JAVA代码画出来的,这样具有平台移植性。
   重量级组件是调用操作系统的函数画出来的组件,比如主窗体。
   一般来说尽量用轻量级的组件,这样对程序的移植性很好,一般javax.swing包里的组件大部分是轻量级的java.awt里面的是重量级的。
   Swing是由100%纯Java实现的,Swing组件是用Java实现 ......

java生成JNI头文件

Javah生成JNI头文件
假设工程目录下有bin文件夹,bin存放编译好的class文件;
在bin目录下,
......\koalaTest\bin>javah -classpath . -jni com.jni.vikitest
然后在.....\koalaTest\bin 即可找到一个com_jni_Calculator.h头文件,生成成功! ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号