在历时两个多月后,OSGi进阶的编写已完毕,感谢N多朋友一直以来的关注和支持,现将正式版对外发布,下载地址为:
http://www.riawork.org/opendoc/osgiopendoc2.pdf
随文的代码的下载地址为:
http://www.riawork.org/opendoc/osgiopendoc2-source.zip
随文的例子的可运行版本的下载地址为:
http://www.riawork.org/opendoc/osgiopendoc2-dist.zip
随后将会相继在Redsaga上发布Redsaga Opendoc版本,以及在InfoQ中国站上发布InfoQ miniBook版本,这两个版本在精美程度上都会超过我现在发布的版本,到时再給予大家通知,:)
1.1.读者对象
此篇文档适合具备OSGi基础概念或已阅读《OSGi实战》的读者[1]阅读,尤其是希望将OSGi应用至实际的商业项目/产品的读者。
阅读此篇Opendoc的读者应具备以下知识:
l 如何在Eclipse中搭建OSGi应用开发环境;
l 如何部署OSGi应用;
l 对于OSGi应用开发有大致的了解(如DS怎么使用)。
1.2.编写目的
《OSGi实战》Opendoc发布已有一年多了,《OSGi实战》Opendoc作为一篇OSGi入门级的Opendoc,主要是起到介绍OSGi的作用,从而吸引更多的人认识OSGi和对OSGi产生兴趣,很高兴《OSGi实战》在过去的一年中得到了很多朋友的关注,更值得高兴的是短短的一年来OSGi取得了很大的进步,几乎可以称得上是OSGi发展历史上具备里程碑意义的一年。
在这一年OSGi成功进入企业应用领域,相继受到各大厂商的认可和采用,例如IBM的Websphere V6.1、BEA更是将其所有产品都重构为基于OSGi而开发的microServices上等等;在开源界OSGi也是引起了很大的反响,例如Spring和OSGi的结合、Apache宣布Struts 2要采用OSGi等等。
OSGi联盟很好的抓住的了这样的机会,成立了专门的EEG小组,以更好、更快的推进OSGi在企业领域的发展,而同时在EclipseCon2007上,OSGi也成为了主要的话题,这对在整个企业IT界中推广OSGi起到了巨大的作用。
在Java规范领域,OSGi成为了JSR291的规范标准,尽管没有成为JSR277的标准,但一定程度上还是反应了OSGi已经得到了各大厂商的认可。
在这样的大环境下,OSGi在国内也受到了越来越多的关注和认同,不少朋友也都有了将OSGi使用到实际的项目/产品中去的想法,其中有部分朋友已经在实际的项目/产品中开始使用OSGi,但其中更多的朋友由于这样那样的原因暂时放弃了在实际项目/产品中使用OSGi的想法,总结下来主要有这么几点原因:
l 基于OSGi怎么来设计/实现/部署/测试项目和产品
OSGi对于模块化有严格而规范的定义,这对于传统的设计/实现/部署/测试模式都会有一定的影响,而同时如何来充分发挥OSGi带来的动态性和可扩展性也是关键的问题,对于系统的架构设计者而言会非常的关心这个问题,否则的话采用OSGi就没有任何意义了,但从目前可获取到的OSGi资源中很难找到这方面的指导,这成了很多架构设计者不敢冒险选择OSGi应用到实际项目/产品中的原因。
l OSGi怎么和流行的Java领域的B/S体系架构集成
这个问题困扰了很多的朋友,因为如果OSGi无法和流行的Java领域的B/S体系架构集成的话,那也就意味着如果采用OSGi的话,项目/产品的很多基础框架都得从头再来,同时也意味着整个团队的知识体系得重建,这肯定是不可取的。
而从各方面OSGi的资源中确实找不到集成的方法,因此这也成了很多朋友放弃在实际的项目/产品中使用OSGi的原因。
l 基于OSGi怎么来实现分布式的系统
这个和做B/S系统的朋友的疑问是一样的。
l 怎么把原有的项目/产品部署为OSGi应用
有部分项目可能是长期的项目,产品的话就肯定是长期发展的,这些项目/产品都已经有一定的积累了,不可能因为要重构为OSGi应用而推倒从来,从已有的OSGi资源中又获取不到相关的指导,因此这也成为了很多朋友不得不放弃使用OSGi的原因。
作为OSGi的拥护者和实践者,我也非常希望能有越来越多的人能够将OSGi应用到实际的项目/产品中去,《OSGi实战》Opendoc吸引了不少的人关注OSGi,但由于上面的这些原因大家没有把OSGi应用到实际项目/产品上去,我感到非常的遗憾,因此有了编写一篇新的Opendoc的想法,把自己有限的知识和经验分享给大家,尽量的解除大家的担忧和忧患,而将OSGi应用到实际的项目/产品中去,这也是本篇Opendco编写的目的。
随着本篇Opendoc也会诞生出一些的OSGi开源项目,另外目前我已将在商业产品中使用的插件管理框架开源出来了,详细信息请大家访问以下地址:
http://www.blogjava.net/BlueDavy/archive/2007/10/05/150598.html
1.3.导读
本篇Opendoc遵照着让大家放心的将OSGi使用到实际的项目/产品的指导思想而编写,以实际的例子来解答大家心中的疑问。
l 解答如何基于OSGi怎么来设计/实现/部署/测试项目和产品
Opendoc以此开篇,以一个留言板系统实例讲解了OSGi应用在设计时应把握的几个重点原则,并遵照设计完成留言板系统的设计/实现和部署,具体内容请参见基于OSGi的留言板。
l 解答OSGi怎么和Java领域流行的B/S体系架构进行集成
Opendoc中详细讲解了如何将OSGi与Hibernate、Spring以及Webwork进行集成,并由此诞生了OSGi+Hibernate+Spring+Webwork(OHSW)的脚手架,基于此脚手架完成了对于留言板系统的重构,具体内容请参见与流行的Java B/S体系架构进行集成。
l 解答基于OSGi怎么来实现分布式的系统
Opendoc中详细讲解了怎么实现分布式的OSGi应用的通讯,并由此诞生了一个简单的分布式OSGi应用通讯的脚手架,基于此脚手架完成了对于留言板系统的重构,具体内容请参见基于OSGi搭建分布式系统。
l 解答怎么把原有的项目/产品部署为OSGi应用
Opendoc中详细介绍了将一个传统的基于Hibernate+Spring+Webwork的留言板系统重构为部署至OHSW的OSGi应用的步骤,以此说明如何将原有的额项目/产品部署为OSGi应用,并重构原有代码使其具备OSGi应用的模块化、动态化以及可扩展性的特征,具体内容请参见将原系统重构为基于OSGi的系统。
在解答了上面的几点问题后,为了能够让大家更好的使用OSGi,在最后的章节中总结了一些OSGi应用的设计模式和最佳实践。
1.4.致谢
在编写这篇Opendoc的过程中,得到了很多朋友无私的支持,在此略表谢意:
Kyang:感谢你对于预览版的反馈意见;
Jlinux(唐勇):感谢你对于预览版的反馈意见;
Caoxg(曹晓刚):感谢你对于预览版的反馈意见和封面的改进;
Xiaodao:感谢你的新闻报道;
霍泰稳:感谢你将此文档制作为InfoQ中文站迷你书(近期发布)并宣传;
还有其他未在此列出名字的关注此文档的朋友们,在此一并表示感谢。