AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

Bundle.update:模块化的一年

  • 2010-01-27
  • 本文字数:3356 字

    阅读完需:约 11 分钟

虽然目前正值假期,但自从上次的 Bundle.update 以来还是发生了很多事情。

dm Server 迁移到 Eclipse

最重磅的新闻当属 Eclipse Virgo 项目提案(上周 InfoQ 对此曾有过深入报道)。目前的 dm Server 版本是 2.0.0 ,这也就意味着接下来的 2.1 版将在 Eclipse 下进行开发和发布。

现有项目与新提案之间的一个显著差别在于协议的不同。这意味着 dm Server 今后将基于 EPL 而非现在的 GPL,EPL 是一个更有利于商业行为的协议。此举的目的在于提升社区的贡献,同时鼓励这种软件开发方式。

目前的企业 OSGi 和 dm Server 引起了很多人的兴趣,围绕其的创新也一刻没有停止过。这种兴趣尤其以早期的使用者以及那些需求符合 OSGi Service Platform 动态模块特性的项目为甚。但对于主流的开发团队来说(只希望尽快构建好企业应用,麻烦越来越少),目前采用企业 OSGi 的代价可能会超出其短期的收益。在企业 OSGi 成为主流的企业应用开发方式事实上的标准前需要重点考虑这个问题。

介绍 OSGi 和 Equinox 的新书出版

本周出版了一本介绍 OSGi 和 Equinox 的新书,这也是 Eclipse RunTime 系列书籍的第一本。本书介绍了如何通过 OSGi 构建模块化 Java 应用,虽然书中的示例基于 Equinox ,但对于那些想在其他 OSGi 平台上进行开发的开发者来说该书也是颇具价值的。
该书还从头到尾实现了一个 Toast 示例项目,目的就在于通过具体的示例代码为该系列的后续图书铺平道路(这样读完此书的开发者就能很快上手其他书了)。本书分为四大部分:首先是 OSGi 概览、接下来是构建 Toast 示例指南、第三部分深入探索了 OSGi 的种种细节、最后是参考书目部分。

ECF remote services 开发完毕

近日, Eclipse Communications Framework 项目实现了 OSGi Remote Services 规范,可以通过多种异构协议跨越 VM 连接 OSGi 服务,这些协议包括 REST、WS-*、JMS、XMPP、Skype 及一个 ECF Generic 实现。

不仅如此,还有多种不同的探测机制,比如 ZeroConf、SLP 以及静态的、基于文件的探测。

OSGi Remote Services 的 Apache Felix 实现也已经发布( Apache CXF ),这也是 OSGi 的参考实现。但是该实现关注于通过 WS-* 传输层进行访问,而 ECF 则独立于传输层。不管哪种实现,最终用户和开发者所使用的 API 都是一样的。这样用户就可以在运行期对实现进行替换了。

Enterprise Expert Group 工作即将完成

近日,Peter Kriens 宣布OSGi Enterprise Expert Group 即将完成,同时 Enterprise Expert Group draft 4 也于前不久发布了,该草案提供了大量的Java EE 特性。我们有理由期待最终版将于今年3 月发布,这正是 OSGi DevCon EclipseCon 举办的时间。

EEG 将会提供新的查询机制以通过 OSGi 实现 JNDI 风格的查找、使用 JMX 管理 OSGi 运行时、通过 JTA、JPA 以及 DataSources 进行数据库访问,还会提供对 Remote Services 和 Service Component Architecture 的管理。此外,还将发布一种新的部署 bundle:WAB,这样 Web 应用 bundle 就可以像 WAR 那样被安装到容器中了。InfoQ 会在 EEG 发布其成果后对其进行深入报道。

WebSphere 发布 Alpha 版

IBM WebSphere 已经基于 OSGi 开发一段时间了,近日其发布了Alpha 版的OSGi 应用。该应用基于 Apache Aries ,同时包含了 OSGi Blueprint 容器(这类似于 SpringSource 提出的 Eclipse Gemini )。这些项目都希望解决 JNDI 和 JTA 面临的一些问题,这也是 Enterprise Expert Group 重点要解决的问题。

这些容器都在拓展 OSGi 运行时的边界以容纳多个应用。未来将可以通过 OSGi Nested Frameworks 对应用进行切分(类似于 Web 应用服务器切分 WAR 的方式)。但与 Web 应用服务器不同(WAR 被完全分离,无法共享代码),WAB 可以集成 OSGi 运行时,那时就可以像使用私有 bundle 和服务一样来轻松共享代码和服务了。

Tycho 使用 Maven 构建 OSGi

近日 Sonatype 发布了 Tycho 0.6.0,使用的是新版 Maven 3。Tycho 是一套 Maven 构建器,可以根据 OSGi Manifest.MF 推断出依赖,而不是假想依赖存在于 Maven POM 中。这样就可以根据 POM 优先(在 Manifest 会自动生成的时候)或是 Manifest 优先的方式创建 OSGi bundle 了。

虽然使用 Maven 的大多数 OSGi 开发者(比如 Apache Felix 下的开发者)更习惯于 POM 优先的开发方式,但 Manifest 优先的开发方式对此是个补充,可以通过 Eclipse PDE(Plug-in Development Environment)更加方便地开发 OSGi bundle。

在众多的 Eclipse 项目中,使用 Maven 而非 Ant 进行构建的有 EGit( http://www.eclipse.org/egit/ http://www.eclipse.org/jgit/ )和孵化项目 Tigerstripe 等。

Maven 项目正在朝 Maven 3 迈进,该版本进行了大量的重构,使用了 Google Guice 。此外,Maven repository(由 Sonatype 进行管理)的成功也用事实印证了使用多依赖的 Java 开发并不难。使用 OSGi bundle 仓库(比如 OBR SpringSource 仓库)的人也越来越多,而且可以跨越不同的提供商进行分发。目前就提供一套统一的 OSGi 仓库(借助于 Nexus ,被 Tycho 所用)这个主题正进行一项探索性研究。试验仓库位于 bundles.sonatype.org osgi.sonatype.org 。未来的目标是提供多种格式(OBR、P2 等等)的访问,这样 OSGi bundle 的使用就能像 Maven JAR 那样简单了。

Nimble 与 POSH

如果只是获取 OSGi bundle 的话,那么使用 OSGi bundle 解析器会是个比较好的选择。近日 Paremus 发布了 Nimble ——用于获取并下载 OSGi bundle 的解析器。

Paremus 将 POSH(Paremus OSGi Shell)绑定到了 Nimble 解析器上。这样就可以使用同一套命令初始化并管理一般的 OSGi 框架了(这么做可以简化 Felix、Equinox 及 Knopflerfish 的测试工作),再加上 Nimble 的帮助就可以很快启动 OSGi 运行时了,正如 Dave Savage 所述。通过下面这两行命令可以安装并运行基于 Spring 的 OSGi Web 应用:

复制代码
posh -kc "repos -l springdm;add org.springframework.osgi.samples.simplewebapp@active"
open http://localhost:8080/simple-web-app/

感兴趣的读者可以到 DZone 上了解关于 Nimble 的更多信息。

OSGi UK User Group 及 OSGi DevCon London

OSGi UK User Group 正在蓬勃发展,已经有 100 多名会员了。最近的一次讲座来自于 Marcel Offerman(来自 Luminis )和 Graham Charters(来自 IBM )。过几天其站点就会发布讲座的相关视频和材料了。

讲座的第一部分是对孵化项目 Apache ACE 的介绍,该项目旨在简化 OSGi 在多种设备上(包括远程)的使用。

在通过可重用组件组装软件的过程中,最难以解决的问题就是如何将软件部署到日益增长的连接设备上去。如果设备上的软件栈是异构的,同时需要不同的组件时情况会变得更糟。该讲座向我们介绍了如何基于 Apache ACE(开源、基于 OSGi 的解决)将软件组件分发到不同类型的设备上去,从移动电话到云中节点都有覆盖。 Apache Ace 项目基于 Luminis 去年初所捐献的软件,该软件已经应用到了不少真实项目中,如 On-ship Radar systems、field X-Ray Equipment、CMS 的软件更新与协议管理以及机场行李处理系统等。

第二个讲座介绍了 OSGi Remote Services(已经包含在了 OSGi 4.2 中)及其如何与 Service Component Architecture( SCA )进行交互,以 Apache Tuscany 为例进行讲解。

OASIS 一直在致力于开发 Service Component Architecture(SCA)规范。SCA 提供了一种异构的 SOA 编程模型,该模型跨越了众多的实现技术(EJB、BPEL、C++ 及 COBOL 等)、bindings(Web services、JMS、IIOP 等)和 policy(WS-Policy 等)。 该讲座对 OSGi Remote Services 和 Service Component Architecture 技术进行了简要的介绍,接下来谈到了如何将这二者整合起来让 OSGi 应用可以通过 Remote Services 访问多种 SCA 实现技术、bindings 和 policy 框架等。

即将到来的 OSGi DevCon London JAX London 已经宣布了大会日程安排。优惠到今天截止,但OSGi UK User Group 成员可以获得额外的折扣。

总结

很明显,将有越来越多的大型服务器系统采用OSGi,同时OSGi 也开始向中小系统进军。随着构建工具的不断发展,开发者可以在多种IDE 中开发OSGi bundle 了;与此同时,用于共享OSGi bundle 的新仓库也在不断涌现,模块化Java 应用的开发将变得越来越容易。基于此,Kirk Knoernschild 断言: 2010 将是 Java 模块化的一年

查看英文原文: Bundle.update: The Year of Modularity

2010-01-27 03:141949
用户头像

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

关注

评论

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

2022 IoTDB Summit:东方国信王超《Apache IoTDB 在东方国信的商业化及应用》

Apache IoTDB

大数据 开源 时序数据库 IoTDB

面试官:请说一下如何优化结构体的性能?

王中阳Go

Go golang 高效工作 学习方法 高效学习

用户分享 | 达梦第三方客户端DockQuery使用体会

BinTools图尔兹

数据库 用户体验 国产数据库工具

React等前端框架如何与小程序结合

Onegun

前端 前端框架 React Vue 3

NFTScan:怎么使用 NFT API 开发一个 NFT 数据分析平台?

NFT Research

数据分析 API NFT

SSH和VNC的四个区别简单讲解

行云管家

SSH 行云管家

2022 IoTDB Summit:用友郭关飞《用友在 Apache IoTDB 应用与生态建设方面的探索与实践》

Apache IoTDB

大数据 开源 时序数据库 IoTDB

性能平台数据提速之路

百度Geek说

大数据 百度 提效 企业号 3 月 PK 榜 性能平台

瓴羊Quick BI:“3端4表4擎、3+NPlus”得到众多行业内部人士的认可!

对不起该用户已成仙‖

2022 IoTDB Summit:天谋科技刘海《Timecho:孵化于Apache IoTDB的开源商业化公司及其核心产品》

Apache IoTDB

大数据 分布式 开源数据库 IoTDB

秒懂算法 | 搜索基础

TiAmo

DFS BFS 搜索算法

OceanBase 生态产品:时序数据库CeresDB 正式发布 1.0 版本

OceanBase 数据库

数据库 oceanbase

探索以小程序提升运维效率

Onegun

运维 小程序容器

精选案例 | 博睿数据30w+监测节点护航新华网、人民网两会重保工作

博睿数据

可观测性 智能运维 博睿数据 精选案例 主动式拨测

淘宝 APP 网络架构演进与弱网破障实践

阿里技术

架构 网络

ByteHouse实时导入技术演进

字节跳动数据平台

大数据 数据仓库 Clickhouse 数据仓库服务 企业号 3 月 PK 榜

MMMBSC互助基金系统开发智能合约部署

薇電13242772558

智能合约 dapp

TypeScript 与 JavaScript:你应该知道的区别

京东科技开发者

JavaScript typescript 前端 后端 企业号 3 月 PK 榜

Dubbo Triple 协议

昵称不能为null

dubbo RPC triple协议

搬得进来,搬得出去!快来过一把数据迁移的“瘾”

OceanBase 数据库

数据库 oceanbase

等保联盟是什么机构?有什么用?

行云管家

等保 等级保护 等保联盟

Vineyard 论文被 SIGMOD'2023 接收,助力计算引擎之间高效数据交换

阿里巴巴中间件

阿里云 计算引擎

技术沙龙 | 探索软件测试前沿技术及最佳实践,体验ChatGPT在测试领域中的应用

测试人

软件测试 沙龙 ChatGPT

京东云RASP云原生安全免疫创新实践

京东科技开发者

Web 安全 漏洞 业务安全 企业号 3 月 PK 榜

Higress on K8s 5分钟开箱即用

阿里巴巴中间件

阿里云 云原生 Higress

聊聊线上发布这件事

老张

软件测试 权限管理 服务部署

瓴羊Quick BI和Power BI哪个比较好呢?

巷子

Caffeine高性能本地缓存框架初探

FunTester

技术沙龙 | 探索软件测试前沿技术及最佳实践,体验ChatGPT在测试领域中的应用

测吧(北京)科技有限公司

测试

动转静两大升级!一键转静成功率领先,重点模型训练提速18%+

飞桨PaddlePaddle

人工智能 百度 飞桨 PaddlePaddle 框架解析

数据测试实践:从一个bug开始的大数据引擎兼容性探索

京东科技开发者

大数据 bug修复 引擎 测试数据构造 企业号 3 月 PK 榜

Bundle.update:模块化的一年_Java_Alex Blewitt_InfoQ精选文章