美文网首页
OSGi灵活的累计加载器架构

OSGi灵活的累计加载器架构

作者: gzss | 来源:发表于2019-08-10 14:24 被阅读0次

OSGi(Open Service Gateway Initiative)是OSGi联盟指定的一个基于java语言的动态模块化规范。

OSGi中的每个模块(称为Bundle)与普通的java类库区别不大,两者一般都以JAR格式进行封装,并且内部存储都是java Package 和class。但是一个Bundle可以声明他所依赖的java package(通过import-package描述),也可以声明他可以导出的java package(通过export-package描述)。在OSGi里面,Bundle之间的依赖关系从传统的上层模块依赖底层模块转变为平级模块之间的依赖,而且类库的可见性能得到非常精确的控制,一个模块里只有被Export过的package才能被外界访问,引入OSGi的另外一个重要理由是,基于OSGi的程序很可能可以实现模块级的热插拔功能,当程序升级更新或调试除错时,可以只停用、重新安装然后启用程序的其中一部分。

OSGi之所以有上述“诱人”的特点,要归功于他灵活的类加载器架构。OSGi的Bundle类加载器之间只有规则,没有固定的委派关系。例如,某个Bundle声明了一个他依赖的package,如果有其他Bundle声明发布了这个package,那么所有对这个package的类加载动作都会委派给发布他的Bundle类加载器去完成。不涉及某个具体的package时,各个Bundle加载器都是评级的关系,只有具体使用某个package和class的时候,才会根据package导入导出定义来狗仔Bundle间的委派和依赖。

另外一个Bundle类加载器为其他Bundle提供服务时,会根据Export-package李彪严格控制访问范围。如果一个类存在于Bundle的类库中但是没有被export,那么这个Bundle的类加载器能找到这个类,但不会提供给其他Bundle使用,而且OSGi平台不会把其他Bundle的类加载请求分配给这个Bundle来处理。

相关文章

  • OSGi灵活的累计加载器架构

    OSGi(Open Service Gateway Initiative)是OSGi联盟指定的一个基于java语言...

  • 2018-07-02(下半年学习目标)

    Java 字节码增强 & 类加载器 (7月1日-7月15日) 加餐:OSGi 完成 类加载过程详解(7月15日...

  • 13.类加载及执行子系统的案例

    Tomcat:正统的类加载器架构 Tomcat类加载器说明 前面3个类加载和默认的一致,CommonClassLo...

  • ARM汇编之内存处理一网打尽

    RISC架构可以认为是加载/存储的架构,因为所有存储在外部数据都需要通过指令加载到处理器进行处理。 加载/存储的指...

  • JVM内存结构

    JVM架构 JVM = 类加载器(classloader) + 执行引擎(execution engine) + ...

  • 类加载以及执行子系统的案例与实战

    tomcat:正统的类加载器架构 commonclasloaer:加载放在common目录中的类:可以被tomca...

  • JVM系列二(类加载器子系统)

    Java虚拟机(JVM)系列二 类加载子系统 一.类加载器子系统整体架构 类加载器子系统负责从文件或网络中加载Cl...

  • Java类加载

    本篇笔记的目标是理解类加载器的架构,学会实现类加载器并理解热替换的底层原理。 什么是类加载 类从被加载到虚拟机内存...

  • Java类加载器

    类加载的过程:加载、连接(验证、准备、解析)、初始化。类加载器作用于类的加载阶段,可以让我们的应用程序灵活的获取类...

  • jvm之类加载实战

    Tomcat:正统的类加载器架构 主流的Java Web服务器,如Tomcat、Jetty、WebLogic、We...

网友评论

      本文标题:OSGi灵活的累计加载器架构

      本文链接:https://www.haomeiwen.com/subject/ovlrjctx.html