A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 世界公民 中级黑马   /  2014-4-24 08:42  /  1342 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 世界公民 于 2014-4-24 14:45 编辑

为什么要自定义类加载器,自定义类加载的作用是什么。求解答,谢谢!

3 个回复

倒序浏览
java和其他语言不同的是,Java是运行于Java虚拟机(JVM)。这就意味着编译后的代码是以一种和平台无关的格式保存的,而不是某种特定的机器上运行的格式。这种格式和传统的可执行代码格式有很多重要的区别。具体来说,不同于C或者C++程序,Java程序不是一个独立的可执行文件,而是由很多分开的类文件组成,每个类文件对应一个Java类。 另外,这些类文件并不是马上加载到内存,而是当程序需要的时候才加载。

类加载器的作用
类加载器就是Java虚拟机中用来把类加载到内存的工具。而且,Java类加载器也是用Java实现的。这样你就不需要对Java虚拟机有深入的理解就可以很容易创建自己的类加载器了。
     
为什么要创建类加载器
既然Java虚拟机已经有了类加载器,我们还要自己创建其他的吗默认的类加载器只知道如何从本地系统加载类。当你的程序完全在本机编译的话,默认的类加载器一般都工作的很好。但是Java中最激动人心的地方之一就是很容易的从网络上而不只是本地加载类。举个例子,浏览器可以通过自定义的类加载器加载类。 还有很多加载类的方式。除了简单的从本地或者网络外,你还可以通过自定义Java中最激动人心
的地方之一:
* 执行非信任代码前自动验证数字签名
* 根据用户提供的密码解密代码
* 根据用户的需要动态的创建


评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
☆枫の云 发表于 2014-4-24 09:08
java和其他语言不同的是,Java是运行于Java虚拟机(JVM)。这就意味着编译后的代码是以一种和平台无关的格式 ...

感觉好复杂哦,自定义类加载器可以加载Java默认类加载器加载不了的class文件,是吗?
回复 使用道具 举报
记得张老师的视频中有演示过用类加载器来给文件加密和解密。
JAVA虚拟机可以安装多个类加载器,系统默认主要三个类加载器,每个负责加载特定位置的类:BootStrap,ExtclassLoader,AppClassLoader.当你需要编译加载一些你们专用或者特有的类时,就要用到自定义的类加载器了。比如说你要从网上加载一些类,从远程网站下载代码,执行从远程站点通过HTTP连接传送来的字节码等

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马