AIR 1.0:Adobe 的 Kevin Hoyt 和 Matt Rozen 对该平台发表看法

  • Jon Rose
  • 张凯峰

2008 年 2 月 28 日

话题:Java语言 & 开发架构

随着Adobe AIR 的产品发布,InfoQ 向 Adobe 的Kevin Hoyt和 Matt Rozen 了解了一下这个平台的有关情况。

您可以向 InfoQ 的读者概要地描述一下 AIR 平台吗?



通过 Adobe AIR,开发者可以使用 HTML/CSS、Ajax、Flash 和 Flex 等 Web 技术创建桌面富 Internet 应用(RIA)。AIR 可以让公司和开 发者只花费很小的开发、部署和维护成本,就能轻易地把 Web 应用扩展至浏览器之外。开发者可以使用自己熟悉的工具,比如 Dreamweaver、Flex Builder、Flash CS3、Apatana Studio,甚至是一个简单的文本编辑器来构建他们的应用程序,并且很容易发布一个可以跨操作系统的应用安装程序。

AIR 对 Ajax 开 发者提供强有力的支持,包括透明的 HTML 窗口、拖拽,并且支持对 AIR 和 Flash API 的完全访问。AIR 支持 HTML 内嵌 Flash,因此开发者可以在基于 HTML 的 AIR 应用程序中集成 Flash 内容。AIR 支持 H.264 视频和 高级音频编码(AAC),且包含一个嵌入式跨平台的开源 SQLite 本地数据库,它不需要额外的设置,但能提供很大的数据容量和全文搜索功能。通过 AIR,应用程序在后台悄无声息地运行,并在有新数据时自动更新给用户。Adobe AIR 还支持自动的运行时更新,这点与 Adobe Flash Player 的更新有些类似。

我们有一些非常棒的 AIR 案例。比如一个通常通过浏览器访问的办公室绩效应用程序,诸如 SAP 等,也同样可 以由 Adobe AIR 来提供。用户通过 Adobe AIR 可以获得跟在浏览器中相同的用户体验,但当用户离线或者转移办公地点时,仍然可以使用该应用程序。而且,通常只能通过浏览器来访问的在线应用程序, 也可以通过 Aodbe AIR 变成桌面应用程序。另外,由于 AIR 应用程序采用的技术跟构建基于浏览器的应用程序的技术相同,所以把应用程序扩展到桌面上不需要很多时间和努力。

您能给我们描述一下 AIR 的离线功能吗?以及在使用离线特性时构架呈如何形态?

有人认为 Adobe AIR 仅仅是关于离线,这是一个误解。我们已经看到有相当多的 AIR 应用集成基本上都是在线形式。因为 AIR 应用是桌面上的应用程序,所以它们具有许多很不错的特性,而离线运行只是其中之一。

当一个 Adobe AIR 应用程序离线运行时,开发者可以以任何能满足自己需求的方式来使用上述的特性。首先会想到的特性是通过网络探测来感知应用程序是在线还是离线,这可能也就意味着需要考虑到内容或数据是通过访问机器硬件或者远程服务而获得。

在网络或者远程数据点不可用时,开发者可以选择使用本地的文件访问来提供可替代数据。这些数据可以是之前缓存好的内容,也可以是以 XML 或其他文件格式存储的数据。

开发者也可以另外选择内嵌的 SQLite 特性来存储关系型数据。SQLite 是一个基于文件的关系型数据库,对于开发者和终端用户来说不需要额外的安装或者配置。

对于如何架构一个离线运行的应用程序,没有什么简单答案。应用程序在目标和功能上区别很大,Adobe 很难决定一种对所有人使用的最佳方案。关键是开发者能掌握所有的 AIR 特性,从而设计出最能满足自己特定需求的应用架构。



那么,AIR 编程模型的业务逻辑在哪呢?

RIA 的逻辑有着非常有趣的进化历程。

最早是主机环境,所有的一切都存在于远程系统上。处理能力的提升和桌面上的 window 系统的出现,逐渐把我们引向了客户机 / 服务器模式。通过客户机 / 服务器,我们看到了两层系统中的逻辑分离。最初 web 应用的所有逻辑于是被置于服务器上。

当标准和架构成熟后,我们看到了最好的 web 与最好的桌面的合成——RIA。不管构建 RIA 的技术是什么,应用程序的逻辑放在什么地方,都完全取决于开发者。这里没有一尘不变的规则,所有的应用程序都会有点不同。

eBay 桌面是个很好的例子,它通过在客户端分配较高程度的逻辑,提供有趣的用户体验,比如倒计时器和系统托盘通知。相反,在他们的服务器端显然有着大量的逻辑来处理同一时刻数目惊人的拍卖交易。同时支撑好两端(客户机和服务器)是 RIA 的核心所在。

而 轮到 Adobe AIR 时,开发者在客户端使用他们非常熟悉的 Web 技术。他可以使用 HTML、CSS 和 JavaScript 的 Ajax 方式,或者使用 Falsh CS3、ActionScript 和 Flex 的 Flash。这些技术能够提供最棒的桌面体验,但都归功于 AIR 的支持。



这会导致客户端和服务器上多余的逻辑吗?

无论你什么时候开发富 Internet 应用,总会有某种程度的冗余(比如验证、业务值对象)。然而有时冗余可以成为好事情。如果 你想构建一个世界级的富 Internet 应用程序,并扩展到桌面上去,你如今会如何去实现呢?如果目标仅仅是 Windows 操作系统,也许你会倾向于使用 MFC 或者.NET。如果想把它扩展到 Mac 上,你就不得不雇佣一些 Objective C 的程序员。如果还想支持 Linux,就会涉及到 Tk/Tcl 或者仅仅是旧式风格的 C 语言。

如果你是个 Ajax 开发者,那么这些技术跟你 用来创建 RIA 应用的 HTML、JavaScript 和 CSS 一点关系也没有,Flash 和 Flex 开发者也一样。把你的 RIA 应用发布到主导的操作系统 上,需要在新技能、技术、工具甚至基础设施上进行持续的投资——本质上这一点也不冗余;相反,这是一项全新的工作。通过 Adobe AIR,web 开发者可以使用他们自己既有的技术、工具、技能、工作流和基础设施来把他们的富 Internet 应用扩展到桌面上去。



AIR 向开发者提供的是什么级别的本地操作系统集成呢?

Adobe AIR 可用于 Windows XP、Vista 家庭版、Vista 终极版、Windows2000,以及 Mac 10.4 以及更高版本,包括 Leopard 机器。Adobe AIR 的 Linux 发行版计划在首个最终版本发布后推出。现在已经有一些关于 AIR 如何调用本地操作系统 API 的讨论,但 Adobe AIR 现在仍然处于初级阶段,所以我们现在不会把重点放在开发者创建本地桌面应用程序上。当 Adobe AIR 成熟时,我们会继续和客户商讨,来权衡特性和功能的取舍。把富 Internet 应用扩展到桌面上的开发者会期望能进行本地的集成,而 Adobe AIR 提供了大量的集成特性,比如本地文件 IO、系统托盘区提醒、作为后台进程运行、本地窗口控制等等。更明确地说,为 web 技术添加这样的集成是 AIR 的核心所在,它需要大量的开发努力。我们理解有些应用程序可能需要更深程度的系统集成,所以会在计划未来版本的 AIR 特性时继续评估这些请求。

是不是有这样一种离线的数据同步框架来帮助简化这部分的开发呢?

Flash 和 JavaScript 的数据同步框架一直在稳步发展——甚至在 Adobe AIR 之前。

对于 Flex 开发者,LiveCycle 数据服务 ES 可以提供一个智能的数据管理库。除了提供有效的数据连接,LiveCycle 数据服务还能在远程终端不可 用时,追踪客户端数据模型中的变化。然后在终端再次可用时,将这些变化提供给服务器。服务器端甚至能够解决可能发生的数据冲突。在 JavaScript 方面,我推荐的是 TrimJunction 项目。TrimJunction 项目的模型很像 Ruby on Rails,它提供一个可扩展的 web MVC 框架。TrimJunction 的特性之一是它能在内存中保存数据模型的变化。然后在重新连接后把这些变化发送给服务器。

使用 LiveCycle 数据服务和 Adobe AIR 之前的 TrimJunction 可能带来的潜在问题是,它们只能有效地把数据模型及变化历史存储在客户机内存中(如果是 Flex 还会是有限的 Flash 共享对象),而且它们仍然必须先通过 web 进行部署。但通过 AIR,这些类型的框架现在可以通过连接进行发布和运行,它们同时也拥有一种强大的 方式保证在断开连接后依然保存数据变化。

我期望这个领域在近期能有更大的进展。



有些人尚在怀疑我们是否真的需要桌面上的浏览器应用程序 ,我们对 AIR 平台的需求到底有多大?

Adobe AIR 能够让开发者直接把他们的 RIA 扩展到桌面上,从而使它们成为用户体验的一等公民——而且具备桌面环境带来的众多优势。AIR 带来的是一种全新类型 的应用程序。AIR 不仅仅是浏览器之外的浏览器应用,它赋予了 web 开发者、Ajax 开发者、Flash 开发者强大的力量,触发他们创建新颖的应用程序的 创造力。我们希望能激起一股新型应用程序的创新浪潮。现在,大多数人认为能够创新的应用只有 Web 应用了,它们是最迷人的、最便于使用,也最直观的。 Adobe AIR 给这些开发者带来了崭新的开发天地。我们认为 AIR 的潜力要比仅仅把应用扩展出浏览器要大得多。

AIR 平台的许可如何?用户要付出多大的开销呢?

Adobe AIR 应用程序运行时,就像 Adobe Reader 和 Adobe Flash Player 一样,是免费的。可下载的 Adobe AIR SDK 也是免费的。现在的 Adobe AIR 的 beta 版是这样,将来的正式发布版本仍然会是这样。开发者可以使用免费的开源 Flex 框架来为浏览器构建 RIA,并通过 AIR 将其扩展到桌面 上。在 AIR 上创建应用程序不需要花一分钱。

有什么商业性 AIR 应用能让我们读者借鉴吗?

在 2007 年芝加哥的 Adobe MAX 用户大会上,Adobe 介绍了许多业内主导的公司,他们都在创建 Adobe AIR 应用。许多公司的业务涉及多个行业,比如零售、金融、软件、娱乐和政府。eBay、AOL 和 Finetune 使用 AIR 应用已经好几个月了。读者可 以去Adobe AIR Showcase 站点,看看还有谁在开发 AIR 应用,同时也可以下载一些 AIR 应用程序。

关于 Adobe AIR,还有什么 InfoQ 读者需要知道的吗?

AIR 目前是非常新的技术,吸引了大量的眼光,而且它完全配得上这些赞誉。但很重要的,我们希望 InfoQ 的读者能够看到 AIR 是 Adobe 的 RIA 技术平台中必需的一部分,它提供了工具、框架、服务器、服务以及创建 RIA 所需的运行时,从而达到跨浏览器、跨桌面、跨操作系统。开 发者可以使用免费的开源 Flex,来创建运行在安装有 Flash Player 的浏览器中的 RIA 应用,在 99% 联网的桌面机器上都有这样的浏览器,然后通过 AIR 将这些 RIA 扩展到桌面上。通过把应用扩展到桌面,应用 可以获得来自于操作系统的功能支持。这是一个完整的 RIA 解决方案,能够确保最“富有”的富应用程序的实现,在我看来,这对那些希望一次开发就能让应用程 序运行在用户的不同操作系统和浏览器上的开发者是个巨大的诱惑。

获得更多关于 Flex 和 AIR 发布的信息,请参考:http://www.infoq.com/news/2008/02/air-flex-release

查看英文原文:AIR 1.0: Kevin Hoyt and Matt Rozen From Adobe Give Platform Overview

Java语言 & 开发架构