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確可以通過配置文件把這個依賴【或者說耦合】量化。
轉載于:https://www.cnblogs.com/hansc-blog/p/10812947.html
總結
- 上一篇: Spring如何加载XSD文件(org.
- 下一篇: Nginx http keepalive