破坏双亲委派模型的一次历史事件

228 篇文章 ¥59.90 ¥99.00
Java 1.2引入扩展类加载器打破了双亲委派模型,允许类加载器绕过父加载器加载核心类库,导致安全问题。为恢复模型,引入系统类加载器作为应用程序类加载器的父加载器,确保安全加载核心类库。

在Java的历史中,曾经发生过一次破坏双亲委派模型的事件,这对于后端开发具有重要意义。下面将详细介绍这一事件,并提供相应的源代码。

双亲委派模型是Java类加载器的一种工作机制,它通过一种层次结构的方式来加载类。按照这个模型,当一个类需要被加载时,首先会委派给父类加载器进行加载,如果父类加载器无法加载该类,才会由自身的加载器来加载。这种层次结构保证了类的加载的顺序和一致性,从而确保了程序的安全性和稳定性。

然而,在Java 2平台标准版(J2SE)1.2版本之后的一个事件中,破坏了双亲委派模型。这个事件就是引入了扩展类加载器(Extension Class Loader)。

在此之前,Java的类加载器体系中只有两个层级:引导类加载器(Bootstrap Class Loader)和应用程序类加载器(Application Class Loader)。引导类加载器负责加载Java的核心类库,而应用程序类加载器则负责加载应用程序的类。这两者都是由JVM内部提供的,并且无法通过Java代码获取其引用。

然而,J2SE 1.2版本引入了扩展类加载器,它位于引导类加载器和应用程序类加载器之间。扩展类加载器的作用是加载Java的扩展类库,这些类库位于JRE目录下的lib/ext目录中。这样一来,类加载器的层次结构就变为了三层。

这个改变引发了一些问题。由于扩展类加载器位于引导类加载器和应用程序类加载器之间,因此它可以加载由引导类加载器加载的类。这就破坏了原本的双亲委派模型,因为应用程序的类加载器可以绕过父类加载器,直接加载引导类加载器加载的类。

为了更好地理解这个问题,我们来看一个示例代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值