1.5. OSGi 捆绑包


概述

借助 OSGi,您可以将应用程序模块化为捆绑包。每个捆绑包都是紧密耦合的、可动态加载的类、JAR 和配置文件的集合,明确声明任何外部依赖项。在 OSGi 中,捆绑包是主要的部署格式。捆绑包是打包在 JAR 中的应用程序,可以安装、启动、停止、更新和删除。

OSGi 为开发捆绑包提供动态、简洁且一致的编程模型。从实施中分离了服务的规格(Java 接口)可以简化开发和部署。

OSGi 捆绑包抽象允许模块共享 Java 类。这是静态的重复使用形式。当依赖捆绑包启动时,共享类必须可用。

捆绑包是一个 JAR 文件,其中包含其 OSGi 清单文件中的元数据。捆绑包包含类文件和(可选)其他资源和原生库。您可以明确声明捆绑包中的哪些软件包在外部可见(导出软件包),以及捆绑包需要哪些外部软件包(导入的软件包)。

模块层处理捆绑包和从其他捆绑包隐藏软件包之间的 Java 软件包打包和共享。OSGi 框架在捆绑包之间动态解决依赖项。框架执行捆绑包解析,以匹配导入和导出的软件包。它还可以管理已部署捆绑包的多个版本。

OSGi 中的类加载

OSGi 使用图形模型进行类加载,而不是树状模型(如 JVM 使用)。捆绑包可以以标准化的方式共享和重新使用类,无运行时类加载冲突。

每个捆绑包都有自己的内部类路径,以便在需要时可以充当独立的单元。

OSGi 中类加载的好处包括:

  • 在捆绑包之间直接共享类。不需要将 JAR 提升到父类加载器。
  • 您可以同时部署同一类的不同版本,且没有冲突。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.