OSGi近况总结:用户群蓬勃发展

开发 后端
自OSGi 4.2规范发布已有月余,而近期Java领域对OSGi愈发重视,很多工具产品都迅速提供了OSGi 4.2规范的支持,而全世界范围内的OSGi用户群也正在蓬勃发展。

今年九月下旬发布了OSGi 4.2规范,至今已经一个月有余。InfoQ的Alex Blewitt总结了这一个多月来的OSGi进展情况,应该说是一片大好,十分热闹。下面请看详情:

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

今年初发布的Equinox 3.5实现了OSGi规范草案,而最近发布的Apache Felix 2.0也提供了对OSGi 4.2的支持。除此之外,前几天发布的Knopflerfish 3.0 beta除了框架加载器还在开发当中外已经实现了4.2核心。

两周前发布的Apache Karaf 1.0构建在核心框架之上,其目的在于形成一个独立于引擎的OSGi框架,同时带有几个事先打好包的bundle,比如Blueprint、provisioning、日志、远程访问(通过SSH)等。对于那些OSGi新手来说,这是一个很好的起步点,因为它把所有东西都已经打好包了,就像是构建在标准Linux内核之上的Linux分发一样,可以提供额外的特性和管理功能。

近日SpringSource(已经被VMware收购)发布了dm Server 2.0M5,该版本也为Blueprint服务提供了OSGi参考实现并使用了嵌套框架(nested framework)特性。该特性在OSGi 4.2意见征集时被提出来,但却被搁置到未来版本中,OSGi框架可以利用该特性为特定的应用创建内部框架(在dm Server术语中叫做region)。这样我们就可以在系统中安装多个应用并将这些应用与其他框架隔离开来。从中获得的经验一定会为下一版本的OSGi铺平道理.

近日Jetty 7.0发布了,它既能作为独立的Java Web引擎,也可以嵌入到其他应用中(包括OSGi和传统的Java)。Oracle也宣布了WebLogic路线图,其中就包含了正在进行当中的基于OSGi的microService架构。***,Sun开发的GlassFish服务器也发布了V3 Preview,该版本也基于OSGi,大家可以下载使用。

OSGi企业专家组正致力于定义一套OSGi服务(比如解析JNDI和Web Servlet),同时也已经定义好了OSGi远程服务,这部分内容已经成为4.2规范的组成部分了。专家组希望在明年初发布一个版本,但目前的情况是每个主流的应用服务器的运行时都基于OSGi。

OSGi系统的运行是件轻而易举的事情,但构建却不是那么回事了。虽然像Ant之类的工具可以处理平的类路径、公共包可视化之类的事情,但OSGi运行时提供了一个更加模块化的类路径(既包括运行时,也包括编译期)。现有的构建方案如Eclipse PDE对于特定的用例(如构建Eclipse插件)没什么问题,但却无法做到独立于IDE或是客户化的构建。目前其他的构建引擎(如基于Any/Ivy的Apache Sigil,其目标是不仅支持Eclipse,还要支持NetBeans下的OSGi开发)也取得了长足的进展。尽管还处在孵化期,但最近Apache Sigil已经可以实现自我构建,今年底就将发布版本了。

现在Pax Construct已经成为基于Maven构建的不可或缺的手段,它联合使用了bnd工具,而后者则被Felix maven bnd插件所用。甚至还有人想从Maven仓库中构建Eclipse,这样我们就可以创建基于Maven的OSGi bundle并使用基于Eclipse的bundle了。然而最初这只适合于一小撮项目,他们可以展示这类系统的好处和必要性。

与此同时,Eclipse正致力于与另一个项目进行协同构建,这次叫做B3。这么做并不会改变Eclipse项目的构建方式,相反,其目标在于将当前的PDE构建与其他构建/部署系统如Buckminster和基于Hudson的构建系统联合起来。

现在NetBeans仍然徘徊在OSGi之外,这是因为netisgo(为NetBeans提供了OSGi支持)仍处在开发当中。另一方面,IntelliJ 9.0预览版于近日发布了,社区版与旗舰版(在社区版的基础上提供了额外的插件)都提供了OSGi支持。

Eclipse 3.6 M2已经发布几周了,它是Eclipse平台下一版本的里程碑版本。其Equinox支持包含了OSGi EventAdmin,这在目前正在开发当中的OSGi平台的异步支持中得到了广泛的应用(以前Equinox所提供的EventAdmin是个单独下载的bundle,这意味着没几个人会使用到它;由于合并到了RCP中,默认情况下就可以使用它了,因此其使用的范围也更加广泛了)。Equinox 3.6 M2还为bundle提供了加载期编织的功能,这是通过在bundle加载期利用AspectJ注入代码实现的。除此之外,Equinox控制台也变成多会话的了,这样多个用户就可以同时连到远程实例上了。

最近在工具领域中Eclipse E4 1.0M1异军突起。Eclipse E4是Eclipse平台在JavaScript运行时(如Web浏览器)上的一个分支,其关注点在于异步。Eclipse 3.x中的很多行为都是同步的,这意味着用户的行为会阻塞界面的响应。为了支持远程客户端,Eclipse修改了行为以支持异步访问,其计划是在未来将这些内容融合进Eclipse 3.x当中。其所提供的一个特性就是在纯JavaScript中创建OSGi bundle,大家可以访问E4/JavaScript wiki来了解它是如何借助于JSFramework和JSConstants对象进行工作的。我们期待着E4 1.0M1的发布。

未来6个月要召开不少大会,OSGi无疑将成为一个明星。首先就是下周的SpringOne America,届时将公布Burton Group 2nd Annual OSGi的调查结果。接下来就是本月底的EclipseCon Summit Europe,然后就是下个月的QCon SF。明年1月份将召开OSGi DevCon London 2010,紧跟其后的是3月底的QCon London以及将于加利福尼亚举行的EclipseCon 2010。

全球的OSGi用户群在蓬勃发展着,最近由Tara Simpson of Instil Software在Paremus举办的OSGi in Anger 对电信系统中应用OSGi以确保远程管理并提供服务的经验进行了探讨。后续的讨论在酒吧进行(由Luminis赞助),收到了很好的效果。由SkillsMatter记录的演示资料与视频放在了会议主页上。很多项目从貌似的模块系统迁移到了OSGi上,这有助于发现遗漏的包;Jetty在迁移到Eclipse上也遇到了同样的问题。一旦这些系统迁移到OSGi上人们就会觉得如果没有OSGi的话,想要构建这些复杂系统将是一件多么难的事情啊。

简单模块系统怎么样了呢?它的目标是为OSGi和Jigsaw创建一个共同点。虽然一开始是很有前途的,但就运行时空间到底应该成为一个平的类路径(就像现在的Java)还是嵌套类路径(就像OSGi和编译路径),人们众说纷纭。未来的专家组也许可以解决这个问题,但现在似乎还遥遥无期。Neil Bartlett将在伦敦的大会上谈到这个问题。

【编辑推荐】

  1. 2009甲骨文全球大会:OSGi将获得更多支持
  2. 你好,OSGi!OSGi入门必读系列
  3. OSGi 4.2规范已发布 新特性介绍
  4. OSGi是什么:Java语言的动态模块系统
  5. Spring Tool Suite开始支持OSGi
责任编辑:yangsai 来源: InfoQ
相关推荐

2009-03-18 14:35:32

Linux上网本蓬勃发展

2016-12-06 09:56:48

物联网芯片IoT

2019-01-30 17:43:04

SaaSIaaSBPaaS

2013-05-17 10:42:31

私有云虚拟化

2009-02-04 15:05:24

LegalTech电子发现ESG

2013-07-16 15:04:42

SAPERP

2022-04-14 15:09:32

边缘计算云计算物联网

2019-07-26 18:03:40

大数据机器学习技术

2019-07-28 21:40:54

IoT机器学习IOT

2020-03-06 05:46:56

物联网企业IOT

2011-08-08 21:36:19

两化融合运维

2022-01-26 13:42:56

数字化转型SaaS企业

2013-12-09 09:24:50

数据中心以太网

2020-05-20 06:07:52

边缘计算冠状病毒IT

2023-08-22 11:34:33

数据中心服务器

2014-11-12 09:05:58

2021-11-15 23:56:13

区块链数字货币加密货币

2023-03-15 10:52:06

物联网eIM技术

2020-09-24 07:00:00

数据中心数字化转型云计算

2017-10-16 14:10:25

点赞
收藏

51CTO技术栈公众号