Java在需要使用类的時候,才會将类载入,Java类的载入是由类加载器(Class loader)來完成的。
JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一 样,Bootstrap ClassLoader是用C++实现的,它负责加载
系统参数【sun.boot.class.path】中指定的类(例如所有
java.*开头的类)。
个人电脑上,系统参数sun.boot.class.path对应的路径:
C:\Program Files\Java\jdk1.6.0_16\jre\lib\resources.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\lib\rt.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\lib\sunrsasign.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\lib\jsse.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\lib\jce.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\lib\charsets.jar;
C:\Program Files\Java\jdk1.6.0_16\jre\classes
为什么不需要在classpath中加载这些类,原因就是在JVM启动的时候就自动加载了,并且在运行过程中根本不能修改Bootstrap加载路径。
另外JVM还 会提供两个ClassLoader,它们都是用Java语言编写的,由Bootstrap ClassLoader加载;其中 Extension ClassLoader它负责加载
系统参数【java.ext.dirs】中指定的类(例如所有
javax.*开头的类和存放在JRE的ext目录下的 类)
个人电脑上,系统参数java.ext.dirs对应的路径:
C:\Program Files\Java\jdk1.6.0_16\jre\lib\ext;
C:\Windows\Sun\Java\lib\ext
Application ClassLoader负责加载
系统参数【java.class.path】中指定的类,也就是用来
加载Classpath所指定的路径下相关的类。
似乎JVM自身的ClassLoader已经足够了,为什么我们还需要创建自己的ClassLoader呢?
因为JVM自带的ClassLoader只是懂得从本地文件系统加载标准的java class文件,如果编写你自己的ClassLoader,你可以做到:
1)在执行非置信代码之前,自动验证数字签名
2)动态地创建符合用户特定需要的定制化构建类
3)从特定的场所取得java class,例如数据库中
4) 等等
事实上当使用Applet的时候,就用到了特定的ClassLoader,因为这时需要从网络上加载java class,并且要检查相关的安全信息。
当你决定创建你自己的ClassLoader时,需要继承java.lang.ClassLoader或者它的子类。在实例化每个ClassLoader 对象时,需要指定一个父对象;如果没有指定的话,系统自动指定ClassLoader.getSystemClassLoader()为父对象
在Java 1.2后,java class的加载采用所谓的委托模式(Delegation Modle),当调用一个ClassLoader.loadClass()加载一个类的时候,将遵循以下的步骤:
1)检查这个类是否已经被加载进来了?
2)如果还没有加载,调用父对象加载该类
3)如果父对象无法加载,调用本对象的findClass()取得这个类。
所以当创建自己的Class Loader时,只需要重载
findClass()这个方法。
参考:
classLoader深入知识]
JDK源码解析之ClassLoader
=http://wenku.baidu.com/view/b3bb931a6bd97f192279e9b1.htmlclassload
- 大小: 122.3 KB
- 大小: 89.2 KB
- 大小: 84.8 KB
- 大小: 77.4 KB
分享到:
相关推荐
在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...
### Java ClassLoader原理详解 #### 摘要 本文探讨了Java虚拟机(JVM)中的一个重要特性:动态类加载(Dynamic Class Loading)。这一机制为Java平台提供了强大的能力,允许在运行时安装软件组件,例如从网络下载...
### Java ClassLoader与ClassPath详解 #### 一、概述 在Java编程中,类加载机制是十分关键的一个环节。类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath...
Java ClassLoader机制是Java虚拟机(JVM)中一个至关重要的组成部分,它的主要任务是将类的.class文件加载到JVM中,使得程序能够运行。ClassLoader不仅负责类的加载,还涉及类的验证、初始化等一系列过程。理解...
Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...
Java 类加载器(ClassLoader)是Java虚拟机(JVM)的重要组成部分,它负责在运行时查找并加载类到JVM中。这个教程将深入探讨ClassLoader的工作原理、类型以及如何自定义类加载器。 一、Java ClassLoader 基础 1. 类...
Java ClassLoader学习总结 Java 类加载机制是 Java 中一个非常重要的机制,它负责加载 Class 文件到 JVM,以供程序使用。ClassLoader 是 Java 中的一个抽象类,它的主要作用是加载 Class 文件到 JVM 中。...
### Java ClassLoader详解:以淘宝网为例 #### 一、ClassLoader概述 在Java环境中,类加载器(ClassLoader)是负责加载Java类到JVM的重要组件。它不仅实现了类的加载机制,还支持了动态加载与卸载的功能。本文将...
### Java ClassLoader理解详解 #### 一、引言 在商业流行的编程语言中,Java以其独特的运行机制脱颖而出:它在Java虚拟机(JVM)上运行。这意味着编译后的程序采用一种特殊的、与平台无关的格式,而不是针对特定...
Java 类加载器(ClassLoader)是Java虚拟机(JVM)中的一个重要组成部分,它负责加载类的字节码文件,使得程序能够运行。深入理解ClassLoader对于优化应用性能、处理类加载问题以及实现自定义加载策略至关重要。 一...
### Java ClassLoader (类加载器)详解 #### 一、教程提示 如果你正在查看这份文档,在线版中你可以点击下面的任何主题直接跳转到相应的部分。 1. **教程提示** 2. **介绍** 3. **类加载器结构** 4. **编译类加载...
破解java加密的ClassLoader.java,在classloader植入破解代码
Java ClassLoader是Java虚拟机(JVM)的重要组成部分,它负责加载类到JVM中运行。理解ClassLoader的工作原理对于深入学习Java以及进行JVM优化、插件开发等高级技术至关重要。下面将详细介绍Java ClassLoader的基本...
在深入探讨Java类加载器(ClassLoader)之前,我们首先需要了解它在Java运行时系统中的核心作用。类加载器是Java虚拟机(JVM)的一个关键组成部分,负责查找、加载和链接类文件到JVM中。它的存在使得Java应用程序...
Java ClassLoader 是一个重要的、但又常常被人忽略的 Java 运行时系统组件。它是负责在运行时查找和装入类文件的类。创建自己的 ClassLoader 可以以实用且有趣的方式定制 JVM,这样可以让您彻底重新定义如何将类文件...