第12章 扩展机制:如何使自定义API对Java平台上运行的所有应用程序可用
2021/5/23 22:55:15
本文主要是介绍第12章 扩展机制:如何使自定义API对Java平台上运行的所有应用程序可用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.简介
- 通过将JAR文件放在Java Runtime Environment的目录结构中的特殊位置,在这种情况下,它称为已安装扩展。
- 通过从另一个JAR文件的清单中以指定的方式引用JAR文件,在这种情况下,它称为下载扩展。
安装的扩展是Java Runtime Environment(JRE™)软件的lib / ext目录中的JAR文件。顾名思义,JRE是Java开发套件的运行时部分,包含平台的核心API,但没有诸如编译器和调试器之类的开发工具。JRE可以单独使用,也可以作为Java开发工具包的一部分使用。
2.类加载委托机制
扩展框架利用了类加载委托机制。当运行时环境需要为应用程序加载新类时,它将在以下位置按顺序查找该类:
- Bootstrap类:rt.jar中的运行时类,i18n.jar中的国际化类等。
- 已安装的扩展:JRE的lib / ext目录中的JAR文件中的类,以及系统范围内特定于平台的扩展目录中的类。
- 类路径:类,包括JAR文件中的类,位于系统属性java.class.path指定的路径上。如果类路径上的JAR文件具有带有该Class-Path属性的清单,则Class-Path还将搜索该属性指定的JAR文件。默认情况下,该java.class.path属性的值为.当前目录。您可以使用-classpath或-cp命令行选项或设置CLASSPATH环境变量来更改值。命令行选项将覆盖CLASSPATH环境变量的设置。
Java平台使用委托模型来加载类。基本思想是每个类加载器都有一个“父”类加载器。加载类时,类加载器首先将对类的搜索“委派”给其父类加载器,然后再尝试查找类本身。
- 实例化新的类加载器时,java.lang.ClassLoader及其子类中的构造函数允许您指定一个父级。如果您未明确指定父级,则将虚拟机的系统类加载器指定为默认父级。
- 当被调用以加载类时,ClassLoader中的loadClass方法按顺序执行以下任务:
- 如果已经加载了一个类,它将返回它。
- 否则,它将对新类的搜索委托给父类加载器。
- 如果父类加载器找不到该类,则loadClass调用方法findClass查找并加载该类。
- 如果父类加载器未找到该类,则ClassLoader的findClass方法将在当前类加载器中搜索该类。当您在应用程序中实例化类加载器子类时,您可能想覆盖此方法。
- 类java.net.URLClassLoader充当扩展和其他JAR文件的基本类加载器,重写java.lang.ClassLoader的findClass方法以在一个或多个指定的URL中搜索类和资源。
这篇关于第12章 扩展机制:如何使自定义API对Java平台上运行的所有应用程序可用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南