OSGi是什么
OSGi是一种服务运行平台。通过实现能够提供服务的符合OSGi规范的组件,用户可以将其组件发布到OSGi运行平台,供用户和其他组件使用。OSGi组件提供的服务具有两个层面的含义:系统层面,即一个组件为其他组件提供服务,这些服务体现为Java接口的实现;业务层面,即一个组件为外部系统或用户提供某种业务服务实现。
记录下传统和osgi方式的开发方式的特点:
传统方式的开发
:
开发时,要引入整个依赖包。
整个系统为一个工程,里面包含了各个功能模块。(假如不使用像maven之类的工具管理模块依赖的话,在eclipse中开发确实是个比较头疼的问题)
osgi方式的开发
:
模块的依赖,只需要引入使用到的接口。不需要引入整个bundle。(基于eclipse 的插件开发就是这种类型)
只需要将bundle部署到服务器上,即可为系统增加相应的模块
支持热拔插(其实这个功能,虽然很好,但是对于企业级开发,感觉意义不大。对于嵌入式那就另当别论了)
osgi在很大的部分上也是对模块的管理,开发都是基于服务的,我觉得这样很好,不过目前来说,我觉得在企业级应用里面使用还是为时过早。目前使用的maven 加 soa的方式已经可应对大多问题了。
所以我最终决定目前放弃使用osgi:
考察了osgi很久,最终决定放弃使用该技术作为zog平台的模块管理框架。还是使用目前使用得很多的maven + soa进行开发。主要有以下考虑:
1.osgi 目前不成熟。特别在B/S方面,因为大多数应用服务器都不支持osgi,这样让部署很困难,而且目前已有的解决方案也不好。osgi是底层的,我认为他应该在服务器级提供实现,或者jvm级实现。给应用层增加一层OSGI是不明智的。
2.maven管理模块的依赖目前还是很成熟了。maven的模块管理是传统意义的管理,即把包作为jar包导入引用工程。由于maven强大的包管理功能,使得包依赖问题得到了解决。光从开发这点上osgi没有明显的优势,因为在基于osgi开发中,要引用其他包,必须在eclipse中把这些作为一个个工程打开,其他工程才能引用它们(想想假如你有100个bundle的情况,就可想而知!)。
3.假如光把osgi作为zog平台级开发使用,而在开发具体项目时采用普通开发模式,咋样呢?依据我目前掌握的osgi知识来看,我不赞同这样。首先问题的原因也如同刚刚2所提到的,同时也考虑到zog平台打包的问题。你想想,bundle是按照功能来创建的,为了管理这些小东西,也会打开很多的模块工程。很麻烦。
4.以后等osgi成熟了,转换过程也很简单。不过前提是要对架构设计好才行。
分享到:
相关推荐
赠送jar包:osgi-resource-locator-1.0.1.jar; 赠送原API文档:osgi-resource-locator-1.0.1-javadoc.jar; 赠送源代码:osgi-resource-locator-1.0.1-sources.jar; 赠送Maven依赖信息文件:osgi-resource-locator...
赠送jar包:osgi-resource-locator-1.0.1.jar; 赠送原API文档:osgi-resource-locator-1.0.1-javadoc.jar; 赠送源代码:osgi-resource-locator-1.0.1-sources.jar; 赠送Maven依赖信息文件:osgi-resource-locator...
spring-osgi-1.2.1-with-dependencies.zip spring-osgi-1.2.1-with-dependencies.zip spring-osgi-1.2.1-with-dependencies.zip
Spring OSGi是Spring框架与OSGi(开放服务网关倡议)技术的结合,它为开发者提供了在OSGi环境中使用Spring的能力。OSGi是一种Java模块化系统,旨在解决大型软件系统的复杂性问题,而Spring OSGi则将Spring的依赖注入...
【标题】"killbill-osgi-bundles-lib-slf4j-osgi-0.8.4.zip" 是一个基于OSGi的 Kill Bill 库,其中包含了SLF4J(Simple Logging Facade for Java)的OSGi兼容版本。SLF4J是一个为各种日志框架提供简单抽象的接口,...
OSGi(Open Services Gateway Initiative)是一种Java平台上的模块化系统和服务平台,它的主要目标是解决软件的复杂性和可维护性问题。OSGi的核心是其服务导向的架构,它允许开发者将应用程序分解为独立的模块,这些...
spring-osgi-1.2.0-with-dependencies.zip spring-osgi-1.2.0-with-dependencies.zip spring-osgi-1.2.0-with-dependencies.zip
在OSGi DS中,开发者可以使用特定的注解(如@Component, @Reference等)来声明服务组件,而"carrot-osgi-anno-scr-make"则能根据这些注解自动生成对应的XML描述符。 在压缩包"carrot-osgi-anno-scr-make-2.0.1.zip...
《Atlassian Plugins OSGi 2.6.0.jar - 深入理解与应用》 Atlassian Plugins OSGi 2.6.0.jar 是一个重要...对于企业来说,理解和掌握Atlassian Plugins OSGi的使用,对于优化工作流程和提高团队协作效率具有重要意义。
它允许开发者使用Spring的XML配置或者基于注解的方式来定义和管理Bean,同时,这些Bean能够在OSGi环境中被正确地激活、销毁和更新,确保了服务生命周期的管理。 再者,Spring OSGi提供了事件模型,使得组件之间可以...
OSGi在Java应用中的使用大大提高了代码的可维护性和可扩展性。而Web服务(Web Service)则是一种基于网络的、平台无关的交互方式,它允许不同系统之间的数据交换。本教程将指导你如何在OSGi环境中开发和部署Web服务...
Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的产物,它允许在OSGi容器中使用和管理Spring应用。OSGi是一种Java模块化系统,它提供了动态部署、版本控制和依赖管理等功能,极大地...
Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的产物,它允许在OSGi容器中使用和管理Spring应用。Spring框架是一个强大的轻量级Java应用程序框架,而OSGi则是一种模块化系统,用于...
3. **使用Spring DM(Declarative Services)或Blueprint API**: Spring DM是Spring与OSGi集成的早期解决方案,现在已经由Blueprint API取代。这些API允许我们声明OSGi服务,并将它们注册为Spring beans,反之亦然。...
Spring-DM指的是 Spring ...Spring-DM 的主要目的是能够方便地将 Spring 框架和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环境中,利用OSGi框架提供的服务,将应用变得 更加模块化。
maven-osgi-plugin-launcher-framework-equinox-1.0.15.jar
Eclipse作为一款流行的开源IDE,大量使用了OSGi技术来构建其插件系统。每一个Eclipse插件本质上就是一个OSGi bundle,可以独立开发、部署和更新。通过“org.eclipse.osgi-3.7.2”,Eclipse能够支持插件的生命周期...
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
jar包,亲测可用