這回來分析一下OSGI的類加載機制。

先說一下OSGI能解決什么問題吧。

記得在上家公司的時候,經(jīng)常參與上線。上線一般都是增加了一些功能或者修改了一些功能,然后將所有的代碼重新部署。過程中要將之前的服務(wù)關(guān)掉,而且不能讓客戶訪問。雖然每回的夜宵都不錯,但還是感覺這個過程很麻煩,很別扭。

為什么明明只修改了一部分代碼,卻都要重新來一遍。

OSGI架構(gòu)里面,很重要的一個理念就是分模塊(bundle)。如果你只是修改了一個模塊,就可以只熱替換這個模塊,不影響其它模塊。想想就很有吸引力。要實現(xiàn)這種功能,類加載的委派模型必須大改。像AppClassLoader --》ExtClassLoader --》BootstrapClassLoader這種固定的樹形結(jié)構(gòu),明顯不能擴展,不能實現(xiàn)需求。

OSGI的規(guī)范要求每個模塊都有自己的類加載器,而模塊之間的依賴關(guān)系,就形成了各個類加載器之間的委派關(guān)系。這種委派關(guān)系是動態(tài)的,是自由戀愛,而不是指腹為婚。。。。。。

當(dāng)然,委派是要依據(jù)規(guī)則的。這也好理解啊,談婚論嫁時,女方的家長肯定會問,有房嗎、有車嗎、有幾塊腹肌啊。哎,又扯遠(yuǎn)了。

當(dāng)一個模塊(bundle)的類加載器遇到需要加載某個類或查找某個資源的請求時,規(guī)則步驟如下:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式