在今年5月份的網俠大會上,InfoQ中文站有幸與國內OSGi的先鋒林昊(BlueDavy)在一起探討了OSGi的相關話題,包括它的優勢、復雜度以及Java下的實現等等。
在談到采用OSGi作為開放服務框架的基礎架構能帶來好處時,林昊是這么闡述的:
相信SOA現在已經是整個業界的焦點話題了。因為現在很多人都開始用OSGi,或者說學習OSGi,可能很多人都會想,OSGi 和SOA是不是有結合點?因為OSGi在R4以后,也就是說從他發行的第四個版本的規范來看,OSGi在R4中引入了面向服務的組建模型,而這個可以說幾乎是整個SOA體系中,第一個明確提出的一個實現級的規范。但是由于OSGI是SingleVM的,也就是說他只是在單VM中的規范,這樣的話可能跟 SOA有些不同,像SOA通常都是分布式領域的,這樣來看的話OSGi可能是有點欠缺的。不過目前OSGi也在這方面不斷的做出努力,包括在今年年底,OSGi將會推出RFC 119,那這個規范的話,其實就是OSGi用于分布式領域的規范。
我們最近從OSGi聯盟了解到的一些消息,OSGi和現在SCA的結合可能會變得更加緊密,相信在Java領域規范中可能會將采用OSGi列入規范。
來看OSGi對SOA體系的支持的話,其實主要仍然是他的面向服務的組件模型。在這方面呢,OSGi在面向服務組件模型中明確定義了服務到底是個什么東西。那這個的話,其實在SOA體系中以前可能沒有告訴你,你寫一個服務,到底應該是什么樣的。然后你的組件之間應該怎么樣來交互等等,這一系列在OSGi中都定義的非常清楚,OSGi可能現在用于來做SOA的實現還不是很齊全,畢竟它缺少分布式領域里的一些規范,但是OSGi在整個服務模型上的思想是值得我們參考的
下面是訪談文字記錄:
今天在InfoQ中文站有幸在阿里巴巴舉辦的第二屆中國網絡工程師俠客行大會上請到OSGi演講嘉賓林昊,林昊你好,請向大家介紹一下你自己好嗎?
大家好,我是林昊,網名 BlueDavy。現在在淘寶工作。之前先后寫了一些OSGi的中文宣傳材料,包括OSGi實戰、OSGi進階——這兩篇OpenDoc,主要是結合我自己的經驗來推廣OSGi在中國的應用,我大概也了解到,經過這兩篇OpenDoc,中國也有一些公司開始考慮采用OSGi了,這是一件很好的事情。目前,我們主要是在籌辦OSGi的中文官方站,這個是得到了OSGi官方認可的,全球第六個國家級別的User Group性質的站點。目前這個站我們還在進行之中,可能近期會全面對外公布,大概是這些。
好。 OSGI是一門存在了很長時間的一門技術。那么但是在近年來,在Java社區這里邊,關于它的探討、實現,然后以及應用已經越來越火熱了,尤其在最近宣布的Spring Source Application Server里邊更是以OSGI作為他的核心技術。作為國內在OSGI方面的先驅者,你還能不能跟不熟悉OSGI的這些讀者介紹一下OSGI到底是什么嗎?
是這樣的,近來我們可以看到,幾乎所有現在的應用服務器都已經宣稱基于OSGi或者run on OSGI或者兼容OSGI, 像Spring的話,之前大概花了一兩年的時間做Spring DM,但Spring之前一直都是基于他自己的IOC容器的,如果全面遷移到Spring DM的話可能還需要一段時間,但最近推出的Spring Source Application Platform是一個全新的東西,他基本上就已經開始全面采用Spring DM了,這個和以前的Spring的兼容方式是有點不同的。OSGI簡單來講,就像OSGI官方站上的一句話來描述話,OSGI是一個為Java提供的動態模塊化的系統,這是一個他非常好的簡稱。
然而經過近兩年的發展,OSGI已經逐漸在改變他的推廣方式了,也就是說從以前的for Java開始不大提這個詞,開始提他是全面的、統一的中間件。采用這個名詞的話,其實可以看出OSGI的目的是想脫離語言的限制,否則以前的話都是for Java,for Java。從OSGi目前簡單的介紹詞中,我們可以看到OSGI最重要的就在兩個方面,一個是動態化,一個是模塊化。在Java體系中模塊化一直以來都是比較弱的一點,而OSGI在這方面突出的表現,讓它吸引到了現在幾乎所有的大公司的關注,在模塊化,以及動態化方面呢, OSGI都是從規范角度來做,已經提供了支持,在沒有OSGi的情況下通常我們都是自己想各種各樣的辦法來實現,但畢竟不是官方級的規范,現在OSGI的發展已經影響到了整個業界,包括Sun,經過這么久的斗爭還是開始慢慢接受了OSGI,這也是一個很明顯的體現。
那采用OSGI作為開放服務框架的基礎架構能帶來哪些好處呢?
相信SOA現在已經是整個業界的焦點話題了。因為現在很多人都開始用OSGI,或者說學習OSGI,可能很多人都會想,OSGI和SOA是不是有結合點?因為OSGI在R4以后,也就是說從他發行的第四個版本的規范來看,OSGI在R4中引入了面向服務的組建模型,而這個可以說幾乎是整個SOA體系中,第一個明確提出的一個實現級的規范。但是由于OSGI是SingleVM的,也就是說他只是在單VM中的規范,這樣的話可能跟SOA有些不同,像SOA通常都是分布式領域的,這樣來看的話OSGi 可能是有點欠缺的。不過目前OSGI也在這方面不斷的做出努力,包括在今年年底,OSGI將會推出RFC 119,那這個規范的話,其實就是OSGI用于分布式領域的規范。
我們最近從OSGI聯盟了解到的一些消息,OSGI和現在SCA的結合可能會變得更加緊密,相信在Java領域規范中可能會將采用OSGI列入規范。
來看OSGI對SOA體系的支持的話,其實主要仍然是他的面向服務的組件模型。在這方面呢,OSGI在面向服務組件模型中明確定義了服務到底是個什么東西。那這個的話,其實在SOA體系中以前可能沒有告訴你,你寫一個服務,到底應該是什么樣的。然后你的組件之間應該怎么樣來交互等等,這一系列在OSGI中都定義的非常清楚,OSGI可能現在用于來做SOA的實現還不是很齊全,畢竟它缺少分布式領域里的一些規范,但是OSGI在整個服務模型上的思想是值得我們參考的。
Apache Tomcat開發團隊和JSR 277的郵件組中都有人質疑過,OSGI是否違背了KISS原則,那么Peter Kriens在博客中對這個觀點也進行反駁,請問你對OSGI的重量級以及它的復雜度持有什么觀點呢?
這一點其實是這樣的,對于了解OSGi規范的人而言,都可以看得出OSGI一直以來都是輕量級的,而且他也是比較簡單的,并不是很復雜。因為這個從OSGI的起源可以看得出。OSGI最早的時候是為Smart Home來提供服務的,也就是說他是為家居網關這一塊來制定規范的。那在這一塊的規范中,他是不可能做得很復雜的,所以OSGI他本身的規范在復雜度這方面應該不會是很大問題的。但OSGI R4的實現Eclipse Equinox,看起來是比較重量級的,如果我們去下這個包的話,大概會在幾兆以上,相對來講,這個看起來會讓人覺得OSGI的實現是比較復雜和比較重量級的。如果你再去看更聰明的Spring DM,那就更大了。這些東西可能會讓別人產生一定的錯覺,這個問題Peter在官方的BLOG上也曾經提到的,他對于Spring目前在OSGI上面的一些做法并不是相當認同。他認為Spring目前已經把OSGI引入一個復雜化的路線,所以這一點Peter也是持否認的觀點的,我們其實可以看得出,OSGI的實現像Felix的話,大概在100K左右,從這個數量級我們可以看得出,他本身是個相當小的東西。
你剛才提到的 Felix 還有Spring DM,目前除了這些框架以外,
在Java下邊有哪些OSGI規范的這些實現呢?他們各自都有哪些特色?
目前現在Java中真正實現OSGI規范的應該是有三個,最出名的當然是Eclipse Equinox,Spring DM的話,他應該是采用Equinox來做擴展實現的,Felix基本上是自己完全重新實現的一套。其實還有一個可能不是很出名的,是 Newton ,但是Newton的話,是一個SCA的實現,所以我們可能不能完全以OSGI的規范的實現來評判它,不過他是基于OSGI來實現SCA的,所以要算的話他也可以算一個。在這三者當中的話,Equinox名聲比較大一點。Equinox畢竟是OSGI第一個官方認可的實現,也是第一個通過了官方驗證的實現,他的使用也已經得到了驗證。因為Equinox畢竟是 Eclipse的核心,而且現在Equinox已經提升到了 Eclipse 的Top Level的Project,而這一點可以看得出 Eclipse 其實對這個的重視已經越來越高了,之后他可能也會改名成 Eclipse Core Runtime,成為Eclipse的運行核心。
Equinox整體來講他的實現是比較完整的,而且他投入的力量也比較大,這基本上是非常值得期待的,可以一直跟隨著他。Equinox在OSGI的發展上其實是起到了很大的作用的,包括我們可以看到Equinox之前他起動了一個 Server side的沙箱,那這個的話,對OSGI的發展起到了很明顯的推動作用,因為我們目前可以看到現在最新的RFC應該是 66,在66里面其實已經開始提到吸取了現在Equinox在Server side上的一些做法,我想對于了解OSGI的同學而言,應該知道OSGI的Http Services是只支持 servlet以前的老版本。新版本像2.3以上的servlet規范中的像filter,這些都是沒法支持的,在RFC 66中則會開始逐步支持這些東西了, Equinox另外一個最大的貢獻可能是在擴展方面,因為他引用了Eclipse做的非常成功的擴展點,擴展點現在幾乎已經成為了OSGI的非事實性的規范,也就是其實目前OSGI所有的實現中都會提供,因為擴展點對模塊的可擴展性方面提供了很大的幫助。以前的話,在OSGI官方規范中是沒有這一點的。然后我們可以來看Felix,Felix的話,其實他是Apache后期開始做的,也就是說它比Equinox晚挺多的。Felix的話,我們可以看他基本上是一個非常輕量級的OSGI實現,目前很多采用OSGI的人都開始逐步才用Felix,可能是因為大家覺得Equinox太重量級了。
Felix 除了輕量級以外,還有一個比較突出的特色,是他把之前Peter一直想做得OBR這一塊,就是OSGI的bundle倉庫這一塊做得非常非常好了,而這一塊對于OSGI其實是非常重要的,Bundle倉庫這一塊大概會在OSGI的R5列入規范,所以Felix在這一塊的作用應該是很明顯的,我相信OSGI R5的規范會參考他來做。然后 Newton的話,Newton本身是基于OSGI實現的,它帶來的最大作用也許是他讓所有人認可了OSGI是能夠應用于分布式服務領域的,這對于OSGI進軍分布式領域是有一定的好處的,也許RFC 119會在Newton的基礎上做一定的參考來做規范了。
對于目前Java 7中將支持OSGI的消息有什么看法?JSR 277跟OSGI之間的爭論呢?
我想OSGI和JSR 277的爭論在整個OSGI業界絕對是一場非常非常漫長的戰爭,幾乎了解的人可能都知道,JSR 277很早就成立了。一直以來,其實最早的時候,277的規范組的成員是沒有列入Peter的,而其實大部分人都知道,Peter在模塊化以及動態化方面的經驗幾乎在全世界都是頂尖級的。之前Peter自己也申請過要加入JSR 277,但被拒絕了。在今年Javaone第二天的大會上Sun官方明確的宣布了在Java 7中將會支持OSGI。這一點雖然沒有比他說采用OSGI讓人激動,因為他畢竟只是兼容而已。但是從這一點可以看到,Sun已經做了比較大的讓步了,因為之前其實他從來沒有考慮過,他一定是要自己完全做一套的,而我們從Sun在JavaOne上的第二天的一些講演中可以看出,Sun自己目前也在非常強調模塊化這一方面的工作,包括他自己在JavaEE 6以及Java 7上都是明確的說,最重要的一點的,就是說在他的規范中最需要重視的就是模塊化的規范這一點,這也說明Sun對JSR 277是非常非常重視的。不過也正因為他對這一塊非常非常重視,所以可能很難接納一個已有的模塊化的標準,否則Sun可能在這一塊會難以立足。不過我們可以看得出,在JavaOne宣布了以后。Peter在自己的官方博客上透露了一個消息,JSR 277 Leader已經邀請Peter加入JSR 277專家組,那這個的話,可能也證明了JSR 277專家組是認為需要Peter這樣的頂尖專家的,不過Peter自己仍然在考慮之中。因為Sun畢竟已經制訂了一系列的東西,這也意味著他可能不會完全采用OSGI,這個對Peter來說可能是有點疑問的。
記得上一次在InfoQ中文站的文字訪談中,您說過當時OSGI應用最重要的問題還是落在如何去構建模塊化、動態化和可擴展的系統上面。那么近年來OSGI在這方面上取得了什么進展嗎?
其實OSGI他本身的規范程度上應該來講,他在模塊化以及動態化還有可擴展性方面都已經有了一定的規范了。包括像模塊化的話,是他一直以來的特色,然后動態化方面應該也是支持的一直都比較好,只是在可擴展性方面的話,因為OSGI以前只是借助DS,就是它的R4中的 Declarative Services 來做這方面的支持,那相對來講比Equinox的擴展點的話,應該是有一定的弱勢的。
不過目前的話OSGI應該也會逐步考慮,就是說在他的R5中可能會考慮Equinox擴展點怎么樣嵌進去,來提升他在擴展性這一方面的支持。雖然OSGI從規范中支持了這些(模塊化、動態化和可擴展),包括框架的實現上也是可以支持模塊化這些特性的,但是我們最關鍵的仍然還是怎么樣去使用OSGI了。因為如果你使用OSGI的時候,不遵循他的這些原則的話,其實最后設計出來的系統仍然是你以前的非模塊化,非動態化的系統。
作為OSGI在國內中文社區里邊的一個活躍分子,也算是一個領軍人物了。那么你覺得目前國內社區這塊在OSGI的現狀是怎么樣子的,今后又是一個怎么樣發展方向呢?
之前呢,其實在國內的社區中應該是沒有,就是沒有OSGI的集中討論場所的,包括我們知道可能在JavaEye上面會有OSGI的圈子,但是并不是專欄性質的,或者說不是這種社區,極大的一個集中式的社區性質的。然后OSGI之前的社區更多是在Equinox上面,之前我們在Equinox的maillist上面可能會有一些討論。然后在中國方面的話,其實一直以來都沒有做這方面的工作,不過OSGI中文官方站籌劃已經很久了,但是因為要官方認可的話,需要跟官方做一些交互,還有一些協議方面的,因為要得到他們的授權,這個商標必須是拿到允許才能使用的。所以我們跟官方交涉了一段時間,最近應該也是在今年年初的時候,才拿到了OSGI的授權。在拿到授權之后呢,我們現在已經在開始建設我們的OSGI中文官方站了。在OSGI中文社區里面我們已經做了一定的推廣,就是已經告訴了大家這個站是怎么樣訪問,然后大家可以怎么樣加入這里來為OSGi做貢獻,就是說為整個OSGI的推廣做貢獻。因為其實在目前,我們OSGI官方站大概的做法主要是翻譯官方站的一些東西,包括官方站的一些新聞,這樣大家可以了解到整個OSGI業界的最新的發展動向。然后另外的話,我們會翻譯一些OSGI官方上的一些精品的 BLOG。那這些BLOG其實會給大家有很高的指導意義。
另外一方面我們可能會加強包括OSGI中國方面自己的一些原創性質的文章。因為其實以前是很少有原創性質的一些文章的。那這些方面的話,可能在近兩年應該會好一些。因為隨著OSGI在國內慢慢開始得到應用,大家都會開始在這一塊有一定的經驗了。在有了經驗之后,我們希望有更多人能寫出關于OSGI方面深入文章。這對于推廣,包括你自己對OSGI的一些想法,我們也會把一些寫得比較好的OSGI的原創文章翻譯成英文,然后推薦給OSGI官方聯盟。這樣的話,對于整個OSGI發展也會有一定的好處。
在中文官方站上,我們可能也會成立一個開源的社區,這里面可能會包括論壇等,另外一方面就是提供一些基于OSGI的開源項目,這些應該是會對推廣OSGI起到一定的作用。
個人簡介
林昊,三年前接觸OSGi,目睹了OSGi從最初的不夠受關注到現在幾乎成為了各大應用平臺廠商的必選,同時也得到了Sun的官方認可,而自己也隨著對于OSGi的應用經驗的增長,編寫了《OSGi實戰》、《OSGi進階》兩篇 Opendoc,這兩篇是目前OSGi領域中僅有的中文文檔資料,國內不少公司、IT從業人士因為這兩篇文檔進入了OSGi領域,在去年通過和OSGi官方聯盟交涉后拿到了官方聯盟的授權,建立了OSGi官方認可的全球第6個User Group
來自:http://www.infoq.com/cn/interviews/linhao-osgi
Author: orangelizq
email: orangelizq@163.com
posted on 2009-08-18 15:12
桔子汁 閱讀(436)
評論(0) 編輯 收藏 所屬分類:
other