OSGi為什么重要:向模塊化轉移的主攻手
原創【51CTO快譯】本文為JavaLobby社區上的一篇文章。OSGi是一個Java企業級開源框架,近年來得到了很多方面的關注。看到很多博客文章都在詢問OSGi為什么重要,OSGi的推廣者Patrick Paulin寫下了此文。如果你同很多人一樣,也在環顧著OSGi使用量的增加,同時想知道它對你來說是否重要,那么請看他的答案。
51CTO編輯推薦:OSGi入門與實踐全攻略
Patrick:我要以一個非常大膽的說法開始,即OSGi是在過去20年間興起的最重要的技術之一。聽起來雖然不算什么,但OSGi確實是一種革命性的技術。事實上,OSGi非常重要,因為它代表了長期軟件開發發展中下一個合理的步驟。
OSGi的開端
為了能夠讓你理解我的意思,讓我們回到20到30年前。那時候,面向對象語言剛開始流行,我們之所以采用面向對象語言的主要原因之一是,它能夠讓我們隱藏很多代碼的實現細節。
從過程式語言到面向對象語言的轉變,讓我們能夠開發類,定義訪問權限,共享公共方法。
其結果是,我們的大部分代碼在其類外是不可見的。這對我們開發軟件的方式產生了深刻的影響。通過接受這種明顯的可見度限制,我們獲得了極大的使用自由。我們可以自由地重用類,而不需要知道它們的實現細節。我們可以自由地重構我們的代碼,而不必擔心類的使用者。
你能想像如果開發軟件而沒有信息隱藏是多么痛苦嗎?
OSGi的優勢
現在設想如果不僅可以隱藏類的方法,還可以隱藏JAR中的整個類集,那將會是一種怎樣的情形呢。設想JAR可以定義類運作的公共規則,這些規則將被應用于開發和運行時。設想我們可以獲得信息隱藏的所有的優點(管理復雜性,代碼重用,易測性,重構等)。
OSGi讓這一切成為了可能。它提供了標準的Java軟件包,作為一個新的信息隱藏單元。當我們的代碼是運行在一個OSGi框架內時,JAR中的每個包對于使用者來說都可以可見或隱藏。
就如同類可以用一組小的公共方法來描述其與使用者之間的規則,一個模塊化的Jar文件(OSGi術語稱bundle)用一組小的導出包來描述公共規則。大部分代碼都隱藏在內部包中,對于其它JAR并不可見。
設想可以重命名類、分割或合并類、把類從一個包轉移到另一個包、把整個包從一個JAR移動到另一個JAR,所有這些操作都不必擔心會影響到JAR的使用者。這么多種類型的重構操作現在都不必再擔心會出問題。基于包層次的信息隱藏給予我們施行重構的信心,讓我們能夠及時迎合用戶的需求。
相關閱讀:JAR文件包及jar命令詳解
模塊化不可避免
OSGi如果想獲得成功,基于JAR層次的信息隱藏是不可避免的。在今后5到10年,我們將考慮是否有可能不采用這種機制。
目前,OSGi是我們不得不完成這一使命的唯一工具。幸運的是,OSGi是一個考慮周全、測試良好、基于標準的解決方案。我想不出任何開發OSGi替代品的理由(除了可能會修改它的名字)。OSGi就在這里,它工作良好,讓我們使用它吧。
OSGi時代來臨
Steve McConnell曾說過一句非常漂亮的話,這句活真正接觸到了OSGi正努力實現的核心目標。
在Code Complete中,他寫道:
“通過增加聚集粒度,軟件開發已經在很大程度上取得了進步。”
因為這種聚集的粒度是如此重要,從非模塊化轉移到模塊化,同從過程化轉移到面向對象化同樣重要。20年來,我們一直局限于使用類作為提取單元,現在正是向模塊轉移的時候,OSGi時代即將來臨。
原文:Why is OSGi important by Patrick Paulin
【編輯推薦】