- 浏览: 2142189 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (401)
- Agile (16)
- Apache Commons (3)
- Architecture (8)
- DB.MongoDB (5)
- DB.Mysql (3)
- DB.Oracle (34)
- DirectoryService (1)
- DotNet (1)
- English (3)
- Groovy (0)
- Html (28)
- Java (67)
- Java.Aixs (7)
- Java.Cache (2)
- Java.jPBM (1)
- Java.Resin (6)
- Java.Spring (4)
- Java.Struts2 (5)
- Java.Tomcat (16)
- Javascript (45)
- Javascript.Google Map (2)
- Javascript.Jquery (8)
- Life (15)
- Maven&Ant (4)
- Network (5)
- OS.Linux (45)
- OS.Windows (10)
- OS.Windows.Office (1)
- PlayFramework (15)
- Python (28)
- Reading notes (11)
- Security (13)
- Server.Apache (3)
- Server.Nginx (7)
- Test (6)
- Tool (15)
- Work.Solution (15)
- Other (20)
- SSO&CAS&Identity (13)
最新评论
-
hutuxiansheng123:
防火墙、Iptables、netfilter/iptables、NAT 概述 -
dacoolbaby:
非常棒的正则表达式,非常适用。万分感谢。
用python分析nginx的access日志 -
loot00:
您好! 我也遇到了相同的错误信息。我是用f_link_lob ...
LOB variable no longer valid after subsequent fetch -
feihangchen:
@OnApplicationStop public clas ...
Play framework 1.2.3 Jobs定时任务、异步任务、引导任务、触发任务、关闭任务 -
洞渊龙王:
谢谢了
www.w3.org被qiang导致logback报错:Connect reset
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
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
发表评论
-
xml 字符串和xml Document相互转换、xml Document内容输出到http response
2012-11-05 10:07 5509import java.io.ByteArrayOutpu ... -
isAssignableFrom & isInstance
2012-11-02 14:34 1182java.lang.Object extended by ja ... -
Struts 1.1 ExceptionHandler(转)
2012-11-02 10:20 1370转自:SSH项目中利用Exce ... -
X.509、数字签名、CA(Certificate Authority)、自签名证书、PKI
2012-10-18 14:22 6265X.509是由国际电联电信委员会(ITU-T)为单点登录(SS ... -
keytool、keystore、jarsigner、生成自签名证书
2012-10-18 10:27 7966Keytool是Java的密钥和数字证书管理工具,位于JDK_ ... -
Java 类初始化顺序
2012-08-21 14:07 1065class Parent { // 静态变量 pu ... -
java嵌套类、静态嵌套类、内部类
2012-08-21 10:29 2082官网文档:Nested Classes 什么是嵌套类及内部类 ... -
java静态类、静态方法、静态变量、实例变量、线程本地变量、静态线程本地变量
2012-08-21 10:24 1853静态类: 只有嵌套类才 ... -
ProcessBuilder 和 Runtime
2012-07-17 09:26 20855ProcessBuilder.start() 和 Runtim ... -
对称加密、PBE基于密码加密、PKCS
2012-07-05 11:07 7685对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信 ... -
(转)xml schema xsd 入门
2012-06-28 16:05 2434理解XML Schema: XML Schema 初步 (I) ... -
XmlRootElement JAXB注解
2012-06-28 15:23 39018@Retention(value=RUNTIME) @T ... -
jaxb xml数据绑定
2012-06-28 14:22 1302XML Schema编辑工具:XML Spy 常见的XML绑 ... -
(转)jpa 注解
2012-06-25 16:00 1293转自:jpa 注解 1.设置Po ... -
(转)JPA(Java Persistence API)简介
2012-06-25 14:20 1510转自JPA基础(一):全 ... -
Play 内置模板标签(1.2.3版本)
2012-06-18 14:03 4968Play framework 1.2.3 Built-in t ... -
play plugin插件 实现类似Servlet中的拦截器效果
2012-06-15 15:05 3618play plugin和module的区别见:play Mod ... -
Play tag标签,模板、tag中直接调用后台静态java方法
2012-06-15 11:02 2962见Play Framework template engine ... -
play secure模块 验证和授权管理
2012-06-14 15:48 3392参考:http://www.playframework.org ... -
Play framework HTTP Route路由
2012-06-08 14:22 1669路由组件负责把进来的HTTP请求转换成Controller控制 ...
相关推荐
Java ClassLoader定制实例
java classloader classpath 张孝祥
Java ClassLoader Tutorial
理解Java ClassLoader机制
java classloader 讲义-淘宝网
Understanding the Java ClassLoader
java classLoader 的全面讲解 从基本概念到具体的应用 里面共有三份资料。
Understanding the Java ClassLoader.pdf
Sun 官方关于 ClassLoader原理的文章,值得一看
本教程概述了 Java ClassLoader,并指导您构造在装入代码之前自动编译代码的示例 ClassLoader。您将完全了解 ClassLoader 的功能以及创建自己的 ClassLoader 需要执行的操作
破解java加密的ClassLoader.java,在classloader植入破解代码
内容简介: ClassLoader体系结构 类装载器在JVM中并不是唯一的,JVM自带了三个装载器,用户也可以根据自己的需求自定义新的装载器,这些装载器的体系结构可以看作是树状结构,如图1所示:
了解 Java ClassLoader
ClassLoader类加载器讲解,理解JAVA类加载机制
Java ClassLoader 是一个重要的、但又常常被人忽略的 Java 运行时系统组件。它是负责在运行时查找和装入类文件的类。创建自己的 ClassLoader 可以以实用且有趣的方式定制 JVM,这样可以让您彻底重新定义如何将类文件...
深入了解Java_ClassLoader,Bytecde.pdf
主要内容包括 Java类加载机制及加载流程,以及如何定义自己的类加载器,如何实现类的热替换。