zoukankan      html  css  js  c++  java
  • OSGI浅谈

    1. Java模块化的发展

    osgi是Java动态模块化的标准,对Java的发展起到了推动性的作用,osgi却没有被官方认可【oracle公司想从更底层解决动态模块化面临的问题】。直到Java9中Java原生的模块化才正式上线,对jdk进行了模块化的重构,引入了platformClassloader。但jagsaw相对于OSGI,无论是功能上,还是成熟度上都是难以比拟的。

    比起OSGI带来的好处,过高的使用门槛、研发成本等问题,没有让OSGI流行起来。

    我常常思考动态模块化对于Java来说到底带来了什么?

    ——量化边界【模块间的耦合性】,代码间不能在随意的耦合。

    2. bundle

    bundle是OSGI组成单元,每一个bundle都有独立的生命周期,系统bundle负责bundle的管理。bundle有了生命周期是一个多么激动的事情!

    这个样就可以自由的安装、卸载功能了。

    3. 昙花一现的springDM

    Spring很早就开始支持osgi,并发布了springDM模块,springDM允许进程内创建多个隔离的spring-context。一向以简化使用存在的spring,并没有有效降低osgi框架的使用难度。导入、导出、启动乱序,启动时间长等问题仍然突出。因此springDM没有流行起来,spring官方决定将springDM捐给了eclipse社区,从此springDM的使命就此完结。

    4. 隔离性的思考

    bundle肩负着隔离性的具体实现,体现在两个方面:类的隔离性行,服务的隔离性。前者通过类加载器实现,后者通过多spring-context来实现。无论是哪一种隔离性,都把资源的访问变得可以控制。bundle之间的类和实例的引入都需要显示的声明,而传统的方式,同一个文件夹下的jar包里面的类是可以任意访问的,任意访问意味着不可控,意味着jar之间的耦合关系难以量化。说到这里你也许会说,maven之间的依赖不是可以描述依赖关系吗?但是我想说:maven确实可以描述的依赖关系,但是这种关系太粗了,要想了解类一级的依赖关系还需要去看源码。而osgi确可以通过配置文件把这个依赖【或者说耦合】量化。

  • 相关阅读:
    14款响应式布局的前端开发框架
    如何在本地进行微信公众号的开发调试
    微信公众帐号应用开发—本地调试
    利用H5开发微信公众号
    微信公众平台开发入门教程
    JAVA编程不得不看的几本经典书籍
    使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码
    网站建设需要哪些程序
    Visual Studio 2013 中使用断点
    Objective-c 实例变量的访问级别
  • 原文地址:https://www.cnblogs.com/hansc-blog/p/10812947.html
Copyright © 2011-2022 走看看