OSGi為什么重要:向模塊化轉(zhuǎn)移的主攻手
原創(chuàng)【51CTO快譯】本文為JavaLobby社區(qū)上的一篇文章。OSGi是一個(gè)Java企業(yè)級(jí)開源框架,近年來得到了很多方面的關(guān)注??吹胶芏嗖┛臀恼露荚谠儐朞SGi為什么重要,OSGi的推廣者Patrick Paulin寫下了此文。如果你同很多人一樣,也在環(huán)顧著OSGi使用量的增加,同時(shí)想知道它對(duì)你來說是否重要,那么請(qǐng)看他的答案。
51CTO編輯推薦:OSGi入門與實(shí)踐全攻略
Patrick:我要以一個(gè)非常大膽的說法開始,即OSGi是在過去20年間興起的最重要的技術(shù)之一。聽起來雖然不算什么,但OSGi確實(shí)是一種革命性的技術(shù)。事實(shí)上,OSGi非常重要,因?yàn)樗砹碎L(zhǎng)期軟件開發(fā)發(fā)展中下一個(gè)合理的步驟。
OSGi的開端
為了能夠讓你理解我的意思,讓我們回到20到30年前。那時(shí)候,面向?qū)ο笳Z(yǔ)言剛開始流行,我們之所以采用面向?qū)ο笳Z(yǔ)言的主要原因之一是,它能夠讓我們隱藏很多代碼的實(shí)現(xiàn)細(xì)節(jié)。
從過程式語(yǔ)言到面向?qū)ο笳Z(yǔ)言的轉(zhuǎn)變,讓我們能夠開發(fā)類,定義訪問權(quán)限,共享公共方法。
其結(jié)果是,我們的大部分代碼在其類外是不可見的。這對(duì)我們開發(fā)軟件的方式產(chǎn)生了深刻的影響。通過接受這種明顯的可見度限制,我們獲得了極大的使用自由。我們可以自由地重用類,而不需要知道它們的實(shí)現(xiàn)細(xì)節(jié)。我們可以自由地重構(gòu)我們的代碼,而不必?fù)?dān)心類的使用者。
你能想像如果開發(fā)軟件而沒有信息隱藏是多么痛苦嗎?
OSGi的優(yōu)勢(shì)
現(xiàn)在設(shè)想如果不僅可以隱藏類的方法,還可以隱藏JAR中的整個(gè)類集,那將會(huì)是一種怎樣的情形呢。設(shè)想JAR可以定義類運(yùn)作的公共規(guī)則,這些規(guī)則將被應(yīng)用于開發(fā)和運(yùn)行時(shí)。設(shè)想我們可以獲得信息隱藏的所有的優(yōu)點(diǎn)(管理復(fù)雜性,代碼重用,易測(cè)性,重構(gòu)等)。
OSGi讓這一切成為了可能。它提供了標(biāo)準(zhǔn)的Java軟件包,作為一個(gè)新的信息隱藏單元。當(dāng)我們的代碼是運(yùn)行在一個(gè)OSGi框架內(nèi)時(shí),JAR中的每個(gè)包對(duì)于使用者來說都可以可見或隱藏。

就如同類可以用一組小的公共方法來描述其與使用者之間的規(guī)則,一個(gè)模塊化的Jar文件(OSGi術(shù)語(yǔ)稱bundle)用一組小的導(dǎo)出包來描述公共規(guī)則。大部分代碼都隱藏在內(nèi)部包中,對(duì)于其它JAR并不可見。
設(shè)想可以重命名類、分割或合并類、把類從一個(gè)包轉(zhuǎn)移到另一個(gè)包、把整個(gè)包從一個(gè)JAR移動(dòng)到另一個(gè)JAR,所有這些操作都不必?fù)?dān)心會(huì)影響到JAR的使用者。這么多種類型的重構(gòu)操作現(xiàn)在都不必再擔(dān)心會(huì)出問題?;诎鼘哟蔚男畔㈦[藏給予我們施行重構(gòu)的信心,讓我們能夠及時(shí)迎合用戶的需求。
相關(guān)閱讀:JAR文件包及jar命令詳解
模塊化不可避免
OSGi如果想獲得成功,基于JAR層次的信息隱藏是不可避免的。在今后5到10年,我們將考慮是否有可能不采用這種機(jī)制。
目前,OSGi是我們不得不完成這一使命的唯一工具。幸運(yùn)的是,OSGi是一個(gè)考慮周全、測(cè)試良好、基于標(biāo)準(zhǔn)的解決方案。我想不出任何開發(fā)OSGi替代品的理由(除了可能會(huì)修改它的名字)。OSGi就在這里,它工作良好,讓我們使用它吧。
OSGi時(shí)代來臨
Steve McConnell曾說過一句非常漂亮的話,這句活真正接觸到了OSGi正努力實(shí)現(xiàn)的核心目標(biāo)。
在Code Complete中,他寫道:
“通過增加聚集粒度,軟件開發(fā)已經(jīng)在很大程度上取得了進(jìn)步?!?/P>
因?yàn)檫@種聚集的粒度是如此重要,從非模塊化轉(zhuǎn)移到模塊化,同從過程化轉(zhuǎn)移到面向?qū)ο蠡瑯又匾?0年來,我們一直局限于使用類作為提取單元,現(xiàn)在正是向模塊轉(zhuǎn)移的時(shí)候,OSGi時(shí)代即將來臨。
原文:Why is OSGi important by Patrick Paulin
【編輯推薦】















 
 
 






 
 
 
 