【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

Bundle.update:OSGi 现状

  • 2009-10-22
  • 本文字数:2544 字

    阅读完需:约 8 分钟

OSGi 4.2 已经发布一月有余了(查看InfoQ 的报道),在这一个月当中都发生了哪些事情呢?

今年初发布的 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 参考实现(查看InfoQ 的报道)并使用了嵌套框架(nested framework)特性。该特性在OSGi 4.2 意见征集时被提出来,但却被搁置到未来版本中,OSGi 框架可以利用该特性为特定的应用创建内部框架(在dm Server 术语中叫做region )。这样我们就可以在系统中安装多个应用并将这些应用与其他框架隔离开来。从中获得的经验一定会为下一版本的OSGi 铺平道理.

近日 Jetty 7.0 发布了(查看InfoQ 的报道),它既能作为独立的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.6M2 已经发布几周了,它是 Eclipse 平台下一版本的里程碑版本。其 Equinox 支持包含了 OSGi EventAdmin,这在目前正在开发当中的 OSGi 平台的异步支持中得到了广泛的应用(以前 Equinox 所提供的 EventAdmin 是个单独下载的 bundle,这意味着没几个人会使用到它;由于合并到了 RCP 中,默认情况下就可以使用它了,因此其使用的范围也更加广泛了)。Equinox 3.6M2 还为 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 将在伦敦的大会上谈到这个问题

InfoQ 上有个关于 Java 模块化的专题,专题的下一期将在下周发布。

查看英文原文: Bundle.update: the Current State of OSGi

2009-10-22 06:282790
用户头像

发布了 88 篇内容, 共 258.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

MySql 通过定义变量更新多表

Flychen

HarmonyOS Connect伙伴峰会重庆站举办 生态建设持续完善

科技汇

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者联盟

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

阿里云低延时直播 RTS 能力升级 让直播推流效果更佳

阿里云视频云

阿里云 音视频 直播技术 视频云

MapReduce的参数优化

大数据技术指南

7月日更

爬虫入门到放弃02:如何解析网页获取数据

叫我阿柒啊

爬虫 CSS选择器 xpath lxml

邮件误删不用怕,试试这个方法帮你找回来

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

网络攻防学习笔记 Day76

穿过生命散发芬芳

网络攻防 7月日更

深度解析HashMap底层实现架构

华为云开发者联盟

Java hashmap 底层 底层架构 Map接口

科创人|决策易赵祝维:从满足应用需求到服务业务目标,从SaaS服务商到业务合作伙伴

科创人

ClickHouse大数据领域企业级应用实践和探索总结

王知无

Vue进阶(幺陆贰):vue render函数介绍

No Silver Bullet

Vue 7月日更 render

测试开发之系统篇-常用系统命令

禅道项目管理

测试 命令 测试开发

从零开始学习3D可视化之3D界面

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

视觉生产技术入门篇

若尘

视觉 7月日更

干掉 Postman?测试接口直接生成API文档,这个工具贼好用

程序员小富

Java 编程 程序员 开发工具 大学生

数仓是如何与“夏令时”愉快的玩耍!

华为云开发者联盟

数仓 时区 GaussDB(DWS) 夏令时 夏令

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者联盟

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

我可以减肥失败,但我的 Docker 镜像一定要瘦身成功!

尔达Erda

Docker 开源 云原生 镜像 瘦身

Vue进阶(幺肆拐):利用Vue中keep-alive快速实现页面缓存

No Silver Bullet

Vue 7月日更 keep-alive

10分钟理解REACT概念

加百利

React 7月日更

Redis on AEP 实践

BUG侦探

redis 傲腾AEP

从Encoder-Decoder模型入手,探索语境偏移解决之道

华为云开发者联盟

神经网络 ASR 语境偏移 CLAS ASR模型

【大数据面试之对线面试官】MapReduce/HDFS/YARN面试题70连击

王知无

北鲲云超算与传统的超算中心有什么不同?

北鲲云

商业智能BI,会成为下一个风口吗?

瓴羊企业智能服务

阿里云 数据中台 数据分析 BI 商业智能

Ubuntu Server 20.04搭建Redis集群

玏佾

redis redis集群 搭建 redis cluster

Bundle.update:OSGi现状_Java_Alex Blewitt_InfoQ精选文章