java9类加载器_关于类加载器在java9中的新特性

为了保证兼容性,java9里面没有从根本上改变三层类加载器架构和双亲委派模型,但是为了模块化系统的顺利运行,仍然发生了一些值得注意的变动。

1.扩展机制被移除了,扩展类加载器由于向后兼容性的原因被保留,不过被重命名为平台类加载器(platform classloader).可以通过ClassLoader的新方法getPlatformClassLoader()来获取

f0623042ec9b

2.平台类加载器和应用程序类加载器都不再继承自java.net.URLClassLoader.现在启动类加载器,平台类加载器和应用程序类加载器全都继承于jdk.internal.loader.BuiltinClassLoader.

f0623042ec9b

3.在java9中,类加载器有了名称,该名称是在构造方法中指定,可以通过getName()方法获取,平台类加载器的名称是platform,应用类加载器的名称是app,类加载器的名称在调试与类加载器相关的问题时会非常有用。

4.启动类加载器现在是在jvm内部和java类库共同协作实现的类加载器(不再是c++实现),但是为了与之前代码兼容,在获取启动类加载器的场景中仍然会返回null,而不会得到BootClassLoader实例

5.类加载的委派关系也发生了变动

当平台以及应用程序类加载器收到类加载的请求的时候,在委派给父类加载器之前,要先判断该类是否能够归属到某一个系统模块中,如果可以找到这样的归属关系,就要优先委派给负责该模块的加载器完成加载

f0623042ec9b

f0623042ec9b

f0623042ec9b

f0623042ec9b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值