在歷時兩個多月后,OSGi進階的編寫已完畢,感謝N多朋友一直以來的關注和支持,現(xiàn)將正式版對外發(fā)布,下載地址為:
http://www.riawork.org/opendoc/osgiopendoc2.pdf
隨文的代碼的下載地址為:
http://www.riawork.org/opendoc/osgiopendoc2-source.zip
隨文的例子的可運行版本的下載地址為:
http://www.riawork.org/opendoc/osgiopendoc2-dist.zip
隨后將會相繼在Redsaga上發(fā)布Redsaga Opendoc版本,以及在InfoQ中國站上發(fā)布InfoQ miniBook版本,這兩個版本在精美程度上都會超過我現(xiàn)在發(fā)布的版本,到時再給予大家通知,:)
1.1.讀者對象
此篇文檔適合具備OSGi基礎概念或已閱讀《OSGi實戰(zhàn)》的讀者[1]閱讀,尤其是希望將OSGi應用至實際的商業(yè)項目/產(chǎn)品的讀者。
閱讀此篇Opendoc的讀者應具備以下知識:
l 如何在Eclipse中搭建OSGi應用開發(fā)環(huán)境;
l 如何部署OSGi應用;
l 對于OSGi應用開發(fā)有大致的了解(如DS怎么使用)。
1.2.編寫目的
《OSGi實戰(zhàn)》Opendoc發(fā)布已有一年多了,《OSGi實戰(zhàn)》Opendoc作為一篇OSGi入門級的Opendoc,主要是起到介紹OSGi的作用,從而吸引更多的人認識OSGi和對OSGi產(chǎn)生興趣,很高興《OSGi實戰(zhàn)》在過去的一年中得到了很多朋友的關注,更值得高興的是短短的一年來OSGi取得了很大的進步,幾乎可以稱得上是OSGi發(fā)展歷史上具備里程碑意義的一年。
在這一年OSGi成功進入企業(yè)應用領域,相繼受到各大廠商的認可和采用,例如IBM的Websphere V6.1、BEA更是將其所有產(chǎn)品都重構為基于OSGi而開發(fā)的microServices上等等;在開源界OSGi也是引起了很大的反響,例如Spring和OSGi的結(jié)合、Apache宣布Struts 2要采用OSGi等等。
OSGi聯(lián)盟很好的抓住的了這樣的機會,成立了專門的EEG小組,以更好、更快的推進OSGi在企業(yè)領域的發(fā)展,而同時在EclipseCon2007上,OSGi也成為了主要的話題,這對在整個企業(yè)IT界中推廣OSGi起到了巨大的作用。
在Java規(guī)范領域,OSGi成為了JSR291的規(guī)范標準,盡管沒有成為JSR277的標準,但一定程度上還是反應了OSGi已經(jīng)得到了各大廠商的認可。
在這樣的大環(huán)境下,OSGi在國內(nèi)也受到了越來越多的關注和認同,不少朋友也都有了將OSGi使用到實際的項目/產(chǎn)品中去的想法,其中有部分朋友已經(jīng)在實際的項目/產(chǎn)品中開始使用OSGi,但其中更多的朋友由于這樣那樣的原因暫時放棄了在實際項目/產(chǎn)品中使用OSGi的想法,總結(jié)下來主要有這么幾點原因:
l 基于OSGi怎么來設計/實現(xiàn)/部署/測試項目和產(chǎn)品
OSGi對于模塊化有嚴格而規(guī)范的定義,這對于傳統(tǒng)的設計/實現(xiàn)/部署/測試模式都會有一定的影響,而同時如何來充分發(fā)揮OSGi帶來的動態(tài)性和可擴展性也是關鍵的問題,對于系統(tǒng)的架構設計者而言會非常的關心這個問題,否則的話采用OSGi就沒有任何意義了,但從目前可獲取到的OSGi資源中很難找到這方面的指導,這成了很多架構設計者不敢冒險選擇OSGi應用到實際項目/產(chǎn)品中的原因。
l OSGi怎么和流行的Java領域的B/S體系架構集成
這個問題困擾了很多的朋友,因為如果OSGi無法和流行的Java領域的B/S體系架構集成的話,那也就意味著如果采用OSGi的話,項目/產(chǎn)品的很多基礎框架都得從頭再來,同時也意味著整個團隊的知識體系得重建,這肯定是不可取的。
而從各方面OSGi的資源中確實找不到集成的方法,因此這也成了很多朋友放棄在實際的項目/產(chǎn)品中使用OSGi的原因。
l 基于OSGi怎么來實現(xiàn)分布式的系統(tǒng)
這個和做B/S系統(tǒng)的朋友的疑問是一樣的。
l 怎么把原有的項目/產(chǎn)品部署為OSGi應用
有部分項目可能是長期的項目,產(chǎn)品的話就肯定是長期發(fā)展的,這些項目/產(chǎn)品都已經(jīng)有一定的積累了,不可能因為要重構為OSGi應用而推倒從來,從已有的OSGi資源中又獲取不到相關的指導,因此這也成為了很多朋友不得不放棄使用OSGi的原因。
作為OSGi的擁護者和實踐者,我也非常希望能有越來越多的人能夠?qū)?/span>OSGi應用到實際的項目/產(chǎn)品中去,《OSGi實戰(zhàn)》Opendoc吸引了不少的人關注OSGi,但由于上面的這些原因大家沒有把OSGi應用到實際項目/產(chǎn)品上去,我感到非常的遺憾,因此有了編寫一篇新的Opendoc的想法,把自己有限的知識和經(jīng)驗分享給大家,盡量的解除大家的擔憂和憂患,而將OSGi應用到實際的項目/產(chǎn)品中去,這也是本篇Opendco編寫的目的。
隨著本篇Opendoc也會誕生出一些的OSGi開源項目,另外目前我已將在商業(yè)產(chǎn)品中使用的插件管理框架開源出來了,詳細信息請大家訪問以下地址:
http://m.tkk7.com/BlueDavy/archive/2007/10/05/150598.html
1.3.導讀
本篇Opendoc遵照著讓大家放心的將OSGi使用到實際的項目/產(chǎn)品的指導思想而編寫,以實際的例子來解答大家心中的疑問。
l 解答如何基于OSGi怎么來設計/實現(xiàn)/部署/測試項目和產(chǎn)品
Opendoc以此開篇,以一個留言板系統(tǒng)實例講解了OSGi應用在設計時應把握的幾個重點原則,并遵照設計完成留言板系統(tǒng)的設計/實現(xiàn)和部署,具體內(nèi)容請參見基于OSGi的留言板。
l 解答OSGi怎么和Java領域流行的B/S體系架構進行集成
Opendoc中詳細講解了如何將OSGi與Hibernate、Spring以及Webwork進行集成,并由此誕生了OSGi+Hibernate+Spring+Webwork(OHSW)的腳手架,基于此腳手架完成了對于留言板系統(tǒng)的重構,具體內(nèi)容請參見與流行的Java B/S體系架構進行集成。
l 解答基于OSGi怎么來實現(xiàn)分布式的系統(tǒng)
Opendoc中詳細講解了怎么實現(xiàn)分布式的OSGi應用的通訊,并由此誕生了一個簡單的分布式OSGi應用通訊的腳手架,基于此腳手架完成了對于留言板系統(tǒng)的重構,具體內(nèi)容請參見基于OSGi搭建分布式系統(tǒng)。
l 解答怎么把原有的項目/產(chǎn)品部署為OSGi應用
Opendoc中詳細介紹了將一個傳統(tǒng)的基于Hibernate+Spring+Webwork的留言板系統(tǒng)重構為部署至OHSW的OSGi應用的步驟,以此說明如何將原有的額項目/產(chǎn)品部署為OSGi應用,并重構原有代碼使其具備OSGi應用的模塊化、動態(tài)化以及可擴展性的特征,具體內(nèi)容請參見將原系統(tǒng)重構為基于OSGi的系統(tǒng)。
在解答了上面的幾點問題后,為了能夠讓大家更好的使用OSGi,在最后的章節(jié)中總結(jié)了一些OSGi應用的設計模式和最佳實踐。
1.4.致謝
在編寫這篇Opendoc的過程中,得到了很多朋友無私的支持,在此略表謝意:
Kyang:感謝你對于預覽版的反饋意見;
Jlinux(唐勇):感謝你對于預覽版的反饋意見;
Caoxg(曹曉剛):感謝你對于預覽版的反饋意見和封面的改進;
Xiaodao:感謝你的新聞報道;
霍泰穩(wěn):感謝你將此文檔制作為InfoQ中文站迷你書(近期發(fā)布)并宣傳;
還有其他未在此列出名字的關注此文檔的朋友們,在此一并表示感謝。