OSGi越來越風行了,得到的關(guān)注越來越多,這本來是好事,但聽到的越來越多的聲音都是認為OSGi對于B/S、企業(yè)應用支持的太不夠,怎么說呢,這些聲音挺好,至少說明發(fā)出這些聲音的人肯定是想過將OSGi應用到自己的項目/產(chǎn)品中去,雖然這是好的,但我覺得更多的原因還是很多的人都習慣的以一種框架的觀點去看OSGi,這對于OSGi而言或多或少有些不公平,為什么這么說呢?
還得從OSGi的歷史講起,OSGi的建立并不是為了企業(yè)應用這種類型,而是嵌入式的應用領(lǐng)域,更為準確的說是為了網(wǎng)絡(luò)設(shè)備的管理,正是這個原因,在OSGi的規(guī)范中并沒有體現(xiàn)出為企業(yè)應用的充分考慮,OSGi聯(lián)盟的人在軟件設(shè)計的觀點上和Java企業(yè)應用的設(shè)計者觀點非常的不同,就像OSGi聯(lián)盟的主席Peter看Spring and OSGi的設(shè)計,就認為過于復雜了,OSGi的設(shè)計者們強調(diào)設(shè)計的簡單(不是簡陋)、以最小的代碼量去實現(xiàn)、盡量縮小最后應用的大小,同時由于它是為了支持部署在網(wǎng)絡(luò)設(shè)備上的軟件的管理,特別的強調(diào)模塊化以及動態(tài)的管理,這也就造就了OSGi在這兩方面具備了充足的優(yōu)勢,而在支持嵌入式領(lǐng)域的應用自然也不必說了。
OSGi在模塊化和動態(tài)管理上的優(yōu)勢被它帶有一點關(guān)系的Eclipse組織注意到了,于是引入到了Eclipse中,隨著Eclipse的引入,OSGi開始得到Java企業(yè)應用開發(fā)者的注意,但是直到今年才真正的比較廣泛了,這里面當然有各大廠商的原因,這也說明了OSGi確實是得到了各大廠商的認可,在JSR 291的投票上google、sun投出的反對票仍然沒有阻礙OSGi進軍Java SE領(lǐng)域,這也算是挽回了當年JSR 277上OSGi失敗的場面。
從這些發(fā)展過程中,我們可以看到,OSGi到目前受到Java企業(yè)應用界的關(guān)注階段為止,一直以來都尚未涉足企業(yè)應用界,就連OSGi的主席Peter都承認自己對于Spring只是了解而已,可想而知,那么我們憑什么在現(xiàn)在的這個階段就以企業(yè)應用級別的框架去評價OSGi的好壞呢,更不要僅僅以O(shè)SGi現(xiàn)階段對企業(yè)應用支持的不夠就斷定OSGi在Java企業(yè)應用界一無是處,那是不是很不公平呢?
當然,現(xiàn)在OSGi要進入企業(yè)應用界,大家以這樣的觀點去看待它沒什么太大的問題,至少大家評價的OSGi的不好也是對OSGi進入企業(yè)應用的一種促動的建議,只是希望大家不要純粹以一種新的Java企業(yè)應用的框架(象Spring等)的觀點去評價它,畢竟那不是OSGi的目標,OSGi并不希望成為一個新的Java企業(yè)應用的框架,在現(xiàn)階段,對于大家來說,也許去學習OSGi優(yōu)勢的地方和不同的設(shè)計思想是我們最值得做的,相信大家也不希望等哪天OSGi成為了JDK中的一部分后再去學習吧,如果愿意嘗試將OSGi應用到你現(xiàn)在的項目/產(chǎn)品中,那就更好了,我相信將以目前Equinox(OSGi R4的實現(xiàn))的表現(xiàn)來說,將你的新的應用基于它而搭建不會碰到什么太多的問題,如果你的新的應用是基于Equinox而搭建,非常歡迎與我進行交流,以后我也會在blog中更多的貼出一些關(guān)于基于Equinox搭建企業(yè)應用的實踐的文章(以前考慮到關(guān)注這些東西的人太少,就沒去寫了)。
OSGi現(xiàn)在在企業(yè)應用方面的努力工作大家有目共睹,相信在各大廠商(IBM、Oracle、BEA等)和各大開源組織(Spring、Apache)的支撐下,OSGi對于企業(yè)應用的支持會越來越好。