刘剑峰 2012-08-12
OSGi(OpenServiceGatewayInitiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,
这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、
可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。
OSGi是什么
OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如Knoflerfish、Equinox和Apache的Felix。
您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系。
OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守的契约,
其中,服务对象是容器要实现的。您如果想要在OSGi平台上进行开发,首先,您必须要使用OSGiAPI来创建您的应用,然后将之部署到OSGi容器中。
从开发者的角度看,OSGi具有以下优点:
a)您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
b)对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;
c)OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构
如果说您使用Servlet容器开发您的网络应用,使用EJB容器开发交易式应用,您可能会问,为什么我们还需要另外的容器呢?对这个问题的简短回答是,
OSIG容器是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,您非常需要将这些应用分割为一个个的模块。在本系列以后的文章中,
我将针对这个问题进行展开并深入回答。
“OSGiserviceplatform是一个开放并且提供统一接口标准的体系框架,基于这个体系框架,服务提供商,程序开发人员,软件提供商,服务网管运营商,
设备提供商能够协调地联合起来开发,
部署以及管理向用户提供的各种服务。”还需要提到的是OSGiserviceplatform是一个基于Java的platform。
OSGi的提出和诞生之初,其目的主要是能够灵活方便并远程管理互联的网络嵌入设备(听说是1997年左右提出,与Jini有深厚渊源)。随着硬件设备的能力不断提高,
java技术的日益普及,尤其J2ME的壮大,现实应用的需求也不断扩大和推进,一个统一的标准变得非常的必要。OSGiAlliance就在这样的背景下成立了。从1999年成立以来,OSGiAlliance已经针对这个serviceplatform发布了4版规范,其中r4是2005年10月份刚刚发布。
目前有不少公司对OSGiserviceplatform推出了自己的实现,象ibm的smf(ServiceManagementFramework,嗯,多好的名字,在那么多的platform实现中,
我个人最喜欢这个名字,言简意赅)。