日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java模块化之路 —— OSGI介绍

發(fā)布時間:2025/3/21 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java模块化之路 —— OSGI介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.初識OSGI

OSGI的全稱是Open Service Gateway Initiative,直接翻譯過來理解很費勁。為了理解這個問題,我們先看看OSGI的設(shè)計目的與實現(xiàn)特點是什么。

在傳統(tǒng)Web開發(fā)中,我們?yōu)榱诉M行功能的分離,經(jīng)常會進行模塊劃分,比如基礎(chǔ)信息模塊交由A和B做,接口信息模塊交由C和D做。最終,再匯集到一起,組成一個完整的項目。在這整一個流程中,我們做到的只是邏輯上的解耦,最終這些模塊還是運行于同一服務(wù)器上,共享同一個classpath。這時就會出現(xiàn)一個局限性問題,比如現(xiàn)在接口規(guī)范改了,我只想停掉接口信息模塊,而基礎(chǔ)信息模塊仍能正常運行,這顯然是無法實現(xiàn)的。

而使用OSGI可以完美解決這個問題,OSGI是基于模塊(Bundle)驅(qū)動的,每個模塊都有屬于自己的classpath和類加載器,模塊之間通過包暴露和引入進行關(guān)聯(lián),每個模塊有著自己獨立的生命周期,我們可以動態(tài)地對模塊進行加載、卸載、更新。如此看來,OSGI可以用一句話描述,就是一個為Java提供的動態(tài)模塊化的系統(tǒng)。

2. OSGI中模塊的生命周期

在OSGI中,每個Bundle有著下列六種狀態(tài),狀態(tài)圖如圖2-1所示:

? INSTALLED — 成功安裝Bundle。

? RESOLVED — 所有Bundle需要的Java類可用。這個狀態(tài)標(biāo)志著 bundle已經(jīng)是啟動就緒或者是已經(jīng)停止。

? STARTING — 正在啟動Bundle。調(diào)用了Bundle激活器的start方法,而且還沒有從方法中返回。

? ACTIVE — Bundle已經(jīng)啟動完畢,正在運行中。

? STOPPING — 正在停止Bundle。調(diào)用了Bundle激活器的stop方法,而且還沒有從方法中返回。

? UNINSTALLED — Bundle已經(jīng)卸載完畢,不能進入其他狀態(tài)。

圖2-1 Bundle生命周期狀態(tài)圖

3. OSGI與SOA

通過前面的說明,我們可以發(fā)現(xiàn),OSGI可以看成是一個服務(wù)發(fā)布規(guī)范,每個模塊可以看成是一個服務(wù)包,模塊可以進行注冊、監(jiān)聽,模塊間通過暴露服務(wù)進行聯(lián)系,很顯然,這是SOA的思想嘛。在OSGI RFC 119之前,OSGI只能運用于單體架構(gòu),與主要用于分布式架構(gòu)的SOA有著本質(zhì)的區(qū)別,RFC 119增加了分布式領(lǐng)域規(guī)范,這使得OSGI適用于實現(xiàn)SOA。

4. OSGI現(xiàn)狀

OSGI目前在國內(nèi)只有為數(shù)不多的公司和項目有在使用,究其原因,還是它的弊端太大了。OSGI過于復(fù)雜,似乎每個程序員用過了都說不好,主要問題有以下幾點:

(1)入門門檻高,OSGI規(guī)范多達幾十個,并包含上千個API;

(2)增加系統(tǒng)不穩(wěn)定性,由于OSGI類加載機制比較特別,經(jīng)常會出現(xiàn)不明原因的ClassNotFoundException等異常;

(3)應(yīng)用性不強,運用OSGI大部分是因為其“熱插拔”和Jar隔離特性,但是,如果不是對動態(tài)性要求特別高的項目,引入OSGI似乎只是徒增麻煩。

目前,OSGI的應(yīng)用更多的是因為其模塊性和服務(wù)性,這與主流的微服務(wù)也是融合的,但是其復(fù)雜性使得它很難成為主流。

附阿里架構(gòu)師對OSGI的評價:http://hellojava.info/?p=152



作者:Xx_hpeng
鏈接:https://www.jianshu.com/p/11dcea36b957
來源:簡書
?

總結(jié)

以上是生活随笔為你收集整理的Java模块化之路 —— OSGI介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。