放弃使用OSGi方式

开发 开发工具
本文介绍OSGi方式的开发,以及放弃使用OSGi方式的原因,包括OSGi目前不成熟等。

OSGi是什么

OSGi是一种服务运行平台。通过实现能够提供服务的符合OSGi规范的组件,用户可以将其组件发布到OSGi运行平台,供用户和其他组件使用。
OSGi 组件提供的服务具有两个层面的含义:系统层面,即一个组件为其他组件提供服务,这些服务体现为Java接口的实现;业务层面,即一个组件为外部系统或用户提供某种业务服务实现。

51CTO编辑推荐:OSGi入门与实践全攻略

记录下传统和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成熟了,转换过程也很简单。不过前提是要对架构设计好才行。

【编辑推荐】

  1. OSGi与JSF结合开发
  2. Spring OSGi的整合
  3. 简单介绍Spring osgi
  4. 基于OSGi的动态化系统搭建
  5. OSGi和SCA间的关系浅析
责任编辑:佚名 来源: BlogJava
相关推荐

2009-09-28 13:32:39

OSGi入门

2009-10-09 13:42:56

Spring DataSpring DM

2009-06-01 11:43:22

OSGiHibernateOpenCore

2009-06-01 11:12:34

OSGi规范架构体系结构

2009-09-28 14:49:08

Spring DMOSGi服务

2012-06-25 11:47:14

ibmdw

2009-06-18 15:24:08

Spring OSGi

2009-06-01 11:20:21

OSGi服务规范非赢利机构

2009-06-01 11:09:16

OSGI实战进阶

2024-02-26 08:00:00

MergeRebase开发

2011-06-08 10:30:08

MongoDB

2011-11-30 09:45:14

Ubuntu OneCouchDB

2020-07-07 09:19:01

LombokJava IDE

2009-06-01 10:28:03

SpringOSGi整合

2009-06-23 17:54:41

OSGi与JSF

2009-09-16 17:15:19

OSGi Bundle

2011-05-24 09:16:47

OSGiEclipse

2009-09-29 14:20:05

OSGiContactDAO

2009-07-09 09:18:50

Spring Tool

2009-09-29 09:16:23

启动bundleOSGi
点赞
收藏

51CTO技术栈公众号