【Java小知识点】类加载器的区别

🎄欢迎来到@边境矢梦°的csdn博文🎄

🎄本文主要梳理Java类加载器的区别🎄

🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈

🎆喜欢的朋友可以关注一下**🫰🫰🫰**,下次更新不迷路🎆
Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大)🌑🌒🌓🌔🌕

在Java中,类加载器(Class Loader)根据其加载类的来源和工作方式可以分为不同的分类。主要的类加载器分类如下:

  1. 启动类加载器(Bootstrap Class Loader):

    • 启动类加载器是Java虚拟机的一部分,它负责加载Java平台核心库(Java API的一部分,如java.lang、java.util等)。
    • 它是虚拟机本身的一部分,通常由C++编写,不是一个Java对象,也不继承java.lang.ClassLoader。
  2. 扩展类加载器(Extension Class Loader):

    • 扩展类加载器负责加载Java的扩展库(Java标准库之外的一些功能,位于jre/lib/ext目录下)。
    • 通常使用Java编写,是标准的ClassLoader的子类。
  3. 应用程序类加载器(Application Class Loader):

    • 应用程序类加载器是最常用的加载器,负责加载应用程序的类,包括应用程序自身的类和第三方类库。
    • 通常是系统类加载器的子类,由Java编写。
  4. 自定义类加载器:

    • 开发者可以创建自定义类加载器,以实现特定的需求,例如从网络加载类、加密类文件等。
    • 自定义类加载器需要继承java.lang.ClassLoader类,并覆盖其中的方法,例如findClass和loadClass。

另外,还可以根据加载类的顺序将类加载器分为以下三个主要类别:

  1. 双亲委派模型:

    • Java类加载器遵循双亲委派模型,即每个类加载器在尝试加载一个类之前,会先委派给其父加载器。这种模型有助于确保类加载的一致性和安全性。
    • 如果父加载器找不到类,子加载器才会尝试加载。这意味着一些核心库类由启动类加载器加载,而应用程序类由应用程序类加载器加载。
  2. 扩展类加载器和应用程序类加载器:

    • 扩展类加载器和应用程序类加载器通常是系统类加载器的子类,它们负责加载Java类库和应用程序的类。
    • 这两个加载器通常是自定义类加载器的父加载器,因此开发者可以扩展它们以实现自定义加载行为。
  3. 自定义类加载器:

    • 自定义类加载器允许开发者根据需要实现特定的加载行为,可以加载网络上的类、加密的类文件等。
    • 自定义类加载器通常不是双亲委派模型中的一部分,开发者需要自行实现加载逻辑。

这些类加载器的分类和加载机制在Java应用程序的类加载过程中起到重要的作用,确保类能够正确加载和协同工作。

相关推荐
badhope10 分钟前
Spring AI Alibaba停更:Java程序员的信任,还能被辜负几次?
java·spring
const_qiu17 分钟前
第一章 1.1-1.2:基础模型调用与 TypeScript 入门 —— Java 开发者的视角
java·javascript·typescript
Wang's Blog22 分钟前
Java 项目实战: 交友项目 - Dubbo 负载均衡策略与实战验证
java·dubbo·交友
SL_staff26 分钟前
销售知识库7天落地实践:面向业务侧的零代码嵌入方案
java·开源·产品
kimnoic28 分钟前
PHP 8.2的DNF类型怎么用才规范
开发语言·php
GreatSQL社区36 分钟前
主从复制SQL线程中断——字符集砸出的坑
java·数据库·算法
_Evan_Yao1 小时前
前后端联调怎么排查问题?从 Network 到后端日志,一步步定位错误
开发语言·后端·团队开发·需求分析
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 入门案例:服务提供者搭建总结
java·交友
hudd6681 小时前
JavaEE 初阶 - 多线程(进阶)
java·开发语言·java-ee
小白快快跑哦1 小时前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言