`

Java Class Loader

阅读更多

Java中有三种ClassLoader

 

1. Bootstrap class loader:

    用于加载java语言规范所定义的标准库的类,比如String,ArrayList,Object等。   

    它通常是在虚拟机种用本地代码(如C)实现,在系统中用null表示。

    这里之所以返回null,与其说是技术原因,到不如说更多得是出于安全考虑。

    试想,如果我们能够获得这个ClassLoader的引用,那么我们就可以自由的加载或卸载语言标准类的实现了。

 

2. Extension class loader:

    负责加载Java语言可选实现的类。

    我机器上的"Java环境中安装的可选包(optional package)"在这个路径中:

    D:\DevelopingTools\Java\jdk1.6.0\jre\lib\ext

    因此这里面的java包中的类,都会由Extension class loader来加载。

    另外:sun,ibm等不同厂商的扩展包会不同。

 

3. Application class loader:

   剩下的,由我们写的,或者由我们引用的类,也就是CLASSPATH上的类有这个加载器加载。

   有时候也称为system class loader,Java程序可以通过调用java.lang.getSystemClassLoader()获得它的引用。

 

上面的讨论也说明了 Java中获取classpath路径下的资源文件 这篇blog中的原因。

应外,关于这些加载器的关系以及调用次序可以参考这篇blog Java Class Loader

 

这里给出一段测试代码来解释这三个ClassLoader(By L同学),跑在sun jdk 1.6上:

 

public class TestClassLoader {
	public static void main(String[] args) {
		Object o = new Object();
		System.out.println(o.getClass().getClassLoader());
		System.out.println(sun.security.pkcs11.Secmod.class.getClassLoader());
		System.out.println(TestClassLoader.class.getClassLoader());
	}
}
 

他的输出为:

 

写道
null
sun.misc.Launcher$ExtClassLoader@3e25a5
sun.misc.Launcher$AppClassLoader@1a46e30
 

 

 

 

 

分享到:
评论
1 楼 wjason 2010-01-15  
liuzm 写道
不错,等哈试试看看
有空来我这坐坐  http://www.liuzm.com


一定 

相关推荐

    java class loader(JAVA类加载器)

    自己收集的java class loader相关的一些网络资源文档, 希望对大家有所帮助

    Java Class Loader总结.doc

    Java Class Loader总结

    java 类加载器 class loader

    java 类加载器 class loaderjava 类加载器 class loaderjava 类加载器 class loaderjava 类加载器 class loaderjava 类加载器 class loaderjava 类加载器 class loaderjava 类加载器 class loader

    深入Class Loader

    深入 Java 的Class Loader(类加载器)

    class loader

    Dynamic class loading in the Java Virtual Machine

    深入java虚拟机(inside the java virtual machine)

    The Class Loader Architecture The Java Class File The Java API The Java Programming Language Architectural Tradeoffs Future Trends On the CD-ROM The Resources Page 2 Platform independence Why ...

    Java经典入门教程pdf完整版

    loader Byte code Verifier Javac Hello.java Netwo Hello class Interpreter code Runtime generator/ Hardware 1:编写代码 首先把我们想要计算机做的事情,通过Java表达出来,写成Java文件,这个过程就是 编写代码的...

    Class Loader:在没有命令提示符的情况下执行Java .class文件-开源

    Class Loader 是一个可视化的基本 .net 2.0 软件。 使用类加载器,您可以在没有命令提示符的情况下执行 .class 文件。 只需打开类文件!

    js-class-loader:(Java) 快速 Javascript 聚合器捆绑器,具有依赖项检测功能

    js 类加载器(Java) 一种免费软件工具,用于捆绑和提供具有内置依赖项检测功能的大型 Javascript 代码库。 请参阅网站 和 github 仓库: : 了解更多信息。

    JAVA白皮书(英文版)

    6.2Security Checks in the Class Loader 6.3The Byte Code Verification Process 6.3.1The Byte Code Verifier 6.4Security in the Java Networking Package 6.5Summary 7. Multithreading 7.1...

    深入解析Java中的Class Loader类加载器

    主要介绍了Java中的类加载器,是Java入门学习中的基础知识,需要的朋友可以参考下

    hive-jdbc-1.1.0-cdh5.4.5-standalone.jar

    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) at org.eclipse.osgi.internal....

    Java常用基础知识-kaic.docx

    你可以创建个新的class loader,然后用loadClass加载,再newInstance;原来加载的classloader是不能重新加载的;这算是一个典型的容器思路。 《深入理解java虚拟机》 2、对java“书写一次,到处运行”(Write once, ...

    hive-jdbc-2.1.0-standalone.jar

    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) at org.eclipse.osgi.internal....

    Java虚拟机 JVM 内存结构介绍

    描述Java虚拟机规范中关于内存管理的部分 主要介绍Runtime Data Area,包括Java Stack,Native Method Stack, ...还简要介绍了Runtime Data Area周边的模块,包括Class Loader,Execution Engine,Native Interface

    深入Java虚拟机读书笔记1

    Java虚拟机的基本结构图:Java虚拟机包含一个类装载器(class loader),可以从程序和API中装载class文件,其中API只有程序执行时需要的那

    jboss 5 原理 2 classloader

    With OSGi-style classloading getting more and more traction, and a number of new Java modules/classloading specifications on the horizon, it was high time we revamped our classloading layer in order ...

    javacv-platform-1.3.3-src

    The class definitions are basically ports to Java of the original header files in C/C++, and I deliberately decided to keep as much of the original syntax as possible. For example, here is a method ...

    commons-beanutils-1.7.0

    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325) at org.apache.catalina...

    深入探讨 Java 类加载器

    类加载器(class loader)是 Java™ 中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载...

Global site tag (gtag.js) - Google Analytics