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

作者 Jon Rose译者 张凯峰

随着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

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: