PocketLinux 为 Jabber 带来首个手持设备支持
去年九月的封面故事(第 77 期)是“下一声巨响:嵌入式 Linux、XML 和即时通讯的爆炸性结合”。 像这样的标题肩负着预言的重担,因此在某个时候进行后续报道显然是必要的。
在我写这篇文章时,现在是去年十一月,而讨论的热度仍然超过了实际的爆炸,尽管预兆意味依然浓厚。Linux Journal 在通信工具类别中将 Jabber(基于 XML 的开源即时通讯系统)评为编辑选择奖。《Linux Magazine》将其评为最佳协作工具。Tim O'Reilly 在 O'Reilly 开源大会上盛赞 Jabber,此后加入了 Jabber.com 董事会。(免责声明:我在 Jabber.com 顾问委员会任职,这涉及到公司的股权。)
Jabber.com 与 VA Linux、Red Hat、Collab.net、Diamond Technology Partners 和其他方达成了合作和其他类型的交易。 例如,VA Linux 协议将把 Jabber 即时通讯整合到 SourceForge 以及开源开发者网络(及其各种站点)中。
但是 Jabber 在嵌入式“领域”中首次亮相的地方是一个很小的领域,这要归功于 Transvirtual 的 PocketLinux 采用它作为手持设备之间 XML 传输的方式。 在深入探讨这项发展之前,让我们更仔细地了解一下 Jabber 自身的进展。
Jabber 从根本上来说是关于服务器软件的,并且正在迅速成熟。Jabber.org 发布了 1.2 版本,Jabber 的创建者 Jeremie Miller 称之为“服务器技术和架构的代际飞跃”。 他写道,最大的变化是“基于组件的架构以及...普遍的灵活性和可扩展性。” 以下是一些细节
新的架构非常具有典型的组件架构特征。核心组件是客户端套接字管理器、服务器套接字管理器、会话管理器、基于文件的 xdb(Jabber 与文件系统以及 LDAP 等数据库的接口 - 编辑)和 dns 解析器。每个组件都由 Jabber 守护进程 jabberd 加载和管理。可以轻松添加其他组件,例如协议传输、服务、代理和其他实用程序(请注意,这些未包含在核心服务器版本中)。这些组件都通过一个主配置文件组装在一起,该文件几乎就像一个编程环境,使管理员能够以各种方式组装和构建组件。新的架构也具有很强的网络化能力,允许移除任何组件并将其放置在网络上的其他位置,由各种组件复制或共享。这种新架构旨在使服务器能够适应各种环境,并可用于从设备到大型服务器场的各种场景。重要的是要注意,此架构从一开始就被设计为支持在服务器场中运行,并且正在开发基于轮询的套接字管理器(已测试高达 40,000 个并发活动用户)。与之相关的工作还在于开发一个简单的基于名称的哈希扩展,以在多个组件或服务器之间分配单个域的负载。
他继续说道
通过组件架构,服务器的任何部分都可以透明地被外部脚本或应用程序替换。jabberd 进程知道如何执行组件以及如何通过 tcp 套接字与组件通信。只需一个小的 Perl 或 Python 脚本,或一个简单的 Java 应用程序,就可以像通过 CGI 接口扩展 Web 服务器一样轻松地向服务器添加其他功能。所有数据访问(vCard、花名册、离线消息等)都可以由任何组件处理,并且身份验证和注册请求可以重定向到任何位置。
六个用于 Windows
四个用于 Linux
一个用于 Newton
一个用于 Mozilla
一个用于 Mac
一个用于 Java
截至 2000 年 10 月 12 日,Jabber.com 统计了 50 个活跃的开源项目,其中 17 个已经可用。子项目包括 Palm、Java 和 HTTP 客户端,以及 Jabber 服务器与 Sun 的 Java 2 Platform Enterprise Edition (J2EE) 和 Sun 的 iPlanet LDAP 目录服务器的集成。
但是,从嵌入式角度来看,Jabber 最有趣的地方在于我们可能称之为“经典”即时通讯的领域之外。 这是因为 Jabber 可能最好被理解为不仅仅是一个“即时通讯系统”,而是一种非常高效且可扩展的实时传输 XML 流的方式。 用 Jabber.com 创始人兼总经理 Andre Durand 的话说,Jabber 是“一个 XML 路由器”。
第一家将这方面付诸实践的公司是 Transvirtual(请参阅 Doc 在 2001 年 1 月号的 Embedded Linux Journal 中对 Transvirtual 的 Tony Fader 和 Paul Fisher 的采访),该公司自 1996 年成立以来一直活跃于嵌入式领域。 他们最近开发了 PocketLinux 开发平台,该平台旨在构建用于传输和显示 XML 文档的通信基础设施,主要是在手持设备上。 Transvirtual 营销副总裁 Tony Fader 表示,PocketLinux 是一个“端到端系统平台,允许您用 XML 和 Java 编写应用程序,然后在 Linux 上运行它们”。 它包括 Linux 内核的小型设备实现,以及 Kaffe - Transvirtual 的开源 Java 实现。
Fader 说,Kaffe “实际上是 Java 规范的超集”。 “我们的抽象窗口工具包有一些扩展。我们有一个集成的帧缓冲图形库。我们有支持 XML 的扩展。我们有深入到 Linux 的扩展,用于实现诸如 Linux 视频和 MP3 播放等功能。”
Transvirtual 在 Jabber 中发现了一种将 XML 流传输到小型设备(尤其是即将推出的几代手持设备,包括 PDA 和移动电话)的完美方式。 两个开发团队在去年八月的 LinuxWorld Expo 上会面,Transvirtual 的人在 VTech 的 Helio PDA 上展示 PocketLinux,吸引了大量与会者。
Fader 说,“Jabber 的人在 LinuxWorld 上跟踪了我们,并要求我们调查合作的可能性。 我们当时被淹没了,所以我们直到后来才开始研究他们的技术。 当我们这样做时,我们发现这是一个完美的匹配。 他们的技术与我们正在做的事情非常吻合。 还有其他消息传递系统,但它们不是基于 XML 的,或者它们不是为即时消息传递本身而设计的。”
结果与其说是代码开发工作,不如说是 Web 开发范围的巨大扩展。 标准的 PDA 应用程序 - 日历、地址簿、笔记、任务列表 - 不再需要主要关心与 PC 同步。 “这个想法...是使应用程序具有网络感知能力”,Transvirtual 高级开发人员 Paul Fisher 说。 “我们正在走向一个持续连接的世界。 这是一件好事。 如果人们需要联系您,他们可以。 如果您需要联系其他人,您可以。 应用程序将假定您已连接到互联网。 因此,他们始终可以抓取或发送他们需要的数据。”
应用程序基本上是为 Jabber 服务器编写的,因此新鲜信息(例如日历中的更改)可以通过 XML 流推送到 PDA、台式机和手机。 应用程序本身不会锁定在硬件平台上,从而绕过所有这些设备之间熟悉的不兼容性泥潭。 通信和渲染 XML 数据是唯一的要求。
在撰写本文时,Transvirtual 和 Jabber 的人员迄今已合作完成了一个演示项目。 它涉及两台配备 802.11 无线 LAN 卡的 Compaq iPAQ,它们使用 Jabber 作为传输方式交换 XML 流。
“现在还为时过早”,Fader 说。 “我想指出的是,尚未为此框架编写一个医疗应用程序,一个物流应用程序,一个运输、制造或仓储应用程序。 这里的开发范例是能够编写一个应用程序,该应用程序可以使用此免许可框架适应任意数量的不同行业,并且此框架允许快速开发跨平台应用程序。 这非常引人注目。”
