博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OSGI浅谈
阅读量:4336 次
发布时间:2019-06-07

本文共 969 字,大约阅读时间需要 3 分钟。

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确可以通过配置文件把这个依赖【或者说耦合】量化。

转载于:https://www.cnblogs.com/hansc-blog/p/10812947.html

你可能感兴趣的文章
dockerfile_nginx+PHP+mongo数据库_完美搭建
查看>>
Http协议的学习
查看>>
【转】轻松记住大端小端的含义(附对大端和小端的解释)
查看>>
设计模式那点事读书笔记(3)----建造者模式
查看>>
ActiveMQ学习笔记(1)----初识ActiveMQ
查看>>
Java与算法之(2) - 快速排序
查看>>
Windows之IOCP
查看>>
机器学习降维之主成分分析
查看>>
WebSocket & websockets
查看>>
openssl 升级
查看>>
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
ARPA
查看>>