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