|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.在OSGi中,服务是完成bundle间交互和使用天真性的基石。借助于服务,我们可以下降bundle之间的耦合,加倍有益于软件的重用,经由过程夸大面向接口编程,能够进步软件的天真性与计划程度。
传统体例下,我们注册服务都是在bundle的激活器(Activator)中利用BundleContext.registerService()办法完成的。而服务的猎取必要经由过程BundleContext.getServiceReference()猎取ServiceReference实例,进而利用BundleContext.getService()失掉真实的服务虚例。这类体例固然可以完成服务的公布与利用,可是有必定的不敷,详细来说:
- 发生较多的榜样式代码。OSGi的bundle是静态化的,陪伴着bundle的安装和卸载,它所公布的服务也会静态地处于可用或不成用的形态,因而每次利用服务的时分,我们都必要借助BundleContext对象往服务注册中央查找,而不克不及经由过程一次查找,与日俱增地持有服务对象的援用。只管有ServiceListener和ServiceTracker匡助我们监听和跟踪服务的形态,可是整体而言这类体例较为烦琐且简单堕落。
- 影响启动工夫,服务在激活器中注册时,必要实例化一切要公布的服务对象,由于激活器的start()办法是同步伐用的,以是会影响到全部使用的启动工夫。
- 加年夜内存的占用,在激活器中注册服务时,我们必要实例化一切的服务对象,可是这些服务在使用运转时代,其实不必定会用到,这在有形中加年夜了内存的占用。
- API依附引发的平台侵进性。利用传统体例注册和利用服务,会用到大批的OSGiAPI,从而发生与OSGi平台的耦合,假如要将代码复用到非OSGi场景当中,必要较多的重构事情。
OSGi经由过程声明式服务(DeclarativeService)和Blueprint标准来办理这些成绩。声明式服务基于组件模子实际,最早呈现在R4compendium标准当中,而Blueprint标准来历于SpringDynamicModules项目,最早呈现于R4.2企业标准当中。
这两种体例的完成道理与合用场景她
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。 |
|