Java应用类加载器原理与应用

原创 2015年11月17日 18:47:48

Java类加载器架构

在典型的Java SE应用程序中,Java SE平台中java.*包下的类都将被加载到特定的根类加载器中,并且不能被覆盖。
这时Java的一种安全机制,这种机制能够有效的阻止恶意代码的执行。例如:替换String类,或是重定义Boolean.TRUE和Boolean.FALSE。

Java SE中的类加载机制

在Java SE中,根类加载器的之后是扩展类加载器,它主要用于加载JRE安装目录下的扩展JAR文件。接下来才是我们自己实现的应用程序类加载器,
应用程序类加载器将加载应用程序中的所有其它类。这样的类加载器顺序变组成了类加载器的层次结构:
- 根类加载器是所有类加载器最早的祖先。
- 当低级别的类加载器申请加载一个类时,它总是首先将该任务委托给它的父类加载器。
- 父类加载器收到委托后将继续向上委托直至根类加载器确认成功。
- 如果类加载器的父类加载器未能够找到要加载的类,那么当前的类加载器将尝试从自己的JAR文件和目录中加载目标类。
这样的类加载过程被称为: 双亲优先类加载委托模式

Java EE中的类加载机制

在Java EE平台中,Java SE的类加载机制在大部分单机Web应用情况下依然还是适用的。但是,由于运行Java EE Web应用程序的服务器通常都相当复杂,不同的服务器供应商有着自己不同的实现方案。服务器很有可能适用了与我们自己的Web应用程序相同的第三方库,或者是不同的服务器实现厂商都使用同样的第三方库等。这时,这几者之间有极大的可能出现文件版本冲突。这个时候如果继续使用Java SE中的类加载机制,冲突发生的概率将更进一步增加。
为了解决上面的Web应用中存在的问题,我们需要在Java EE Web应用中采用另外一种类加载机制– 子女优先类加载委托模式
在Java EE Web应用服务器中,每个Web应用程序都被分配了一个自由的、相互隔离的类加载器,它们都继承自公共的服务类加载器
通过上面的这种隔离机制,使得不同的应用程序相互隔离开来,不同的应用之间不能访问对方的类。不仅解决了Java SE中双亲优先类加载委托模式带来的冲突问题,同时也使得Web应用程序更加安全的运行。
通过这种:子女优先类加载委托模式,类加载的任务会在最后而不是优先委托给它的父亲,而是优先由子女进行加载。这样,Web应用程序中的类和库将会被优先使用,而不是服务器中的自带的库优先加载。这样的模式有助于解决很多版本冲突问题,但是并不能保证能解决所有问题,这时解决的方案更多的是依赖于服务器提供给商解决。

最后:为了维持绑定的Java SE类的安全状态,Web应用程序类加载器仍然会在尝试加载任何类之前先与根类加载器进行确认

版权声明:本文为博主原创文章,未经博主允许不得转载。

【java】自定义类加载器

以前只知道自定义类加载器需要继承ClassLoader和重写findClass方法,但实践出真知,还是自己动手写一个才能理解透彻。 首先,文件的位置并不是固定要在当前packge下面,可以位于磁盘中的...
  • zp919191
  • zp919191
  • 2015年08月28日 15:56
  • 589

java动态与反射的基本原理及实际应用

java动态与反射的基本原理及实际应用             java动态与反射的基本原理及实际应用                  要想深入研究java...
  • xuchuangqi
  • xuchuangqi
  • 2016年08月07日 22:59
  • 428

《区块链原理设计与应用》读后感

有的人国庆国外游,国内游,有的人国庆堵在高速路上,我国庆没有出去玩,在家把杨保华的区块链原理设计与应用书看了一遍。这本书国庆前就买了一直没有时间看,总体感觉这书讲的不是很深入,很适合区块链入门者。 先...
  • hy614
  • hy614
  • 2017年10月14日 11:30
  • 1298

《COM原理与应用》学习笔记

 为了学习ActiveX插件的编写,从这几天开始学习COM原理。ActiveX是以COM为基础的,所以要想要比较深入的学习ActiveX技术需要先学习COM原理。   COM是微软提出的组件标...
  • dennisxie1992
  • dennisxie1992
  • 2014年09月08日 17:14
  • 586

【COM原理和应用】1、COM原理和概述

【我们知道,Directshow整体上是构建在COM之上的,也可以认为是COM在视频、流媒体领域的一种特定的应用和封装。如果只是为了开发High level的directshow应用,COM方面的只是...
  • shaqoneal
  • shaqoneal
  • 2015年01月31日 18:36
  • 747

《区块链原理、设计与应用》正式出版!

《区块链原理、设计与应用》已经正式出版,详细介绍了区块链和分布式账本相关技术,以超级账本为例介绍企业分布式账本的设计原理、架构实现和应用技巧,欢迎大家阅读使用并反馈建议。 编辑推荐 本书由...
  • yeasy
  • yeasy
  • 2017年10月18日 21:12
  • 904

RFID原理与应用1

1.RID技术的特点 2.RFID系统的组成
  • h_h33
  • h_h33
  • 2016年12月14日 22:56
  • 435

深度学习原理和实践

深度学习是近年机器学习领域的重大突破,有着广泛的应用前景。随着Google公开Google Brain计划,业界对深度学习的热情高涨。腾讯在深度学习领域持续投入,获得了实际落地的产出。下面四篇文章,阐...
  • tiandijun
  • tiandijun
  • 2015年04月10日 09:47
  • 2012

Java异常处理机制的简单原理和应用

异常是指Java程序运行时所发生的非正常情况或者错误,就像人们正常生活发生的意外事件、在什么地点, 可以 用一个对象来表示,Java采用面向对象的方式来处理异常,把程序中发生的每个异常都封装到一个对象...
  • JavaReact
  • JavaReact
  • 2017年07月10日 11:17
  • 666

《单片机原理及应用》复习提纲

《单片机原理及应用》复习提纲 单片机应用系统的典型结构图   单片机应用系统核心硬件技术包括: 1.时序 2.中断 3.地址译码 ...
  • opiticer
  • opiticer
  • 2015年12月14日 10:42
  • 1394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java应用类加载器原理与应用
举报原因:
原因补充:

(最多只允许输入30个字)