最近有好幾個人都問了我這個問題,問的挺好的,在軟件業界新技術層出不窮,做技術的人每天都要不斷的學習新技術,在學習每樣技術之前,自然是要知道為什么要學習它,說白點,就是得給自己一個理由,對于一個對OSGi完全陌生的人而言,學習OSGi能帶給什么呢,給大家幾個可選的理由:
1、想提升系統設計能力
????? OSGi提供了系統級別的軟件設計的指導,在傳統的設計中對于系統大多數設計師都是采用分模塊形成業務架構、進而模塊詳細設計的步驟,遵循OSGi也是類似如此,只是它能夠更加規范的讓設計師們去完成這些過程,而不是象現在百花齊放,每個設計師都有自己的一套設計的方式,這就象UML帶來的好處,大家以后在設計的交流上是不是就更加容易了呢,當然,這是從大方向來看的,具體的細節方面那是另一回事,基于OSGi的系統基本都采用分Bundle、對Bundle基于Service-Oriented Component Model思想的詳細設計,而OSGi對于Bundle各建classloader的機制則是更加容易同時也是強迫的讓設計師們很容易就去做到模塊解耦的設計,即使你不用OSGi,那也沒關系,OSGi的思想難道不值得學習嗎,學習了OSGi的這些優秀的思想你也可以在自己的項目/產品中采取類似的設計來提升系統的設計。
2、想實現動態的可管理的系統(即插即用)
??????N多人都已經知道了,基于OSGi的系統具備充足的動態性,而這其實也是我們在做Java開發時一直想實現的,現在有這么一個現成的已經被證明可實現動態性的規范給你使用和學習,何不使用試試或者學習學習它的設計,然后自己做個動態的系統玩玩呢?
????? 其實很多時候我們是因為在用Java時養成的習慣思維,看OSGi可以讓你稍微突破突破java帶給你的常規思維習慣,去做到按版本的動態的加載類等一些功能,這是很好的。
3、想建立規范的開發方式和培訓體系以及形成積累
????? 對于公司而言,規范的開發方式是一直以來都所期望的,而基于OSGi呢,很容易就可以讓公司做到這點,基于OSGi公司所有的項目都可以按照統一的基礎架構、開發方式、部署方式來完成,自然公司在開發知識方面的培訓體系就能很容易的形成了。
??????至于形成積累方面,更是公司都所期望的,就像我上篇blog所說的一樣,基于OSGi的話可以將公司所做過的項目的模塊都放入OBR中,當做新項目的時候就只需要去OBR中下相應的Bundle就可以搭出個腳手架,甚至是差不多的系統了。
上面只是簡單的列了三點,OSGi帶給業界的影響絕對是遠超過IoC這種純粹解決專一問題的設計思想的,給自己一個理由,或者是沒事的時候抽空找個OSGi的應用試試吧,體驗體驗,也許你就會

上OSGi的

ps:最近有個想法,既然每家公司都要養人做自己的開發平臺,那么不如各家公司聯合起來做開發平臺,進而把開發平臺開源出來,這樣每家公司就可以大概只要養一兩個人了做開發平臺了,畢竟大部分的公司都不是依靠賣開發平臺來賺錢的,而這樣多家公司聯合做的好處在于可以聚集各家公司的強人,呵呵,其質量、進度等必然會高過一家公司去做,當然,這種方法中最為重要的就是首先要樹立一致的目標,畢竟每家公司對于其開發平臺的功能還是有所輕重區別的,希望有共同想法的朋友們響應下......