Appcelerator RIA 平台概览

  • Jon Rose
  • 张龙

2008 年 9 月 15 日

话题:Java语言 & 开发架构

在这篇新闻中,InfoQ 与 Appcelerator 的社区开发副经理 Matt Quinlan 讨论了 Appcelerator 平台。Quinlan 着重谈到了 Appcelerator 的优势及常见用法。

Appcelerator 的站点对问题“Appcelerator 是什么?”给出了详尽的解答

Appcelerator 是完全集 RIA 与 SOA 于一体的平台。

Appcelerator 将 Web 2.0 和 RIA 可用性的优势与 SOA 的可重用性和灵活性结合了起来。该结合产生了一种“面向 Web 的客户端 / 服务器”开发模式……

在明白了“是什么”之后,InfoQ 向 Quinlan 问道:软件开发者为什么应考虑使用 Appcelerator 呢?
为什么?来看一下,它使得一般人也可以开发基于 Ajax 的 RIAs 应用,而不仅仅是让像 Google 那样拥有众多 JavaScript 高手的博士团队才能做到!
InfoQ 提到了 Appcelerator 的表达式语言(Expression Language):
Web 表达式语言实际上只是用于传统 HTML 中的 JavaScript 事件模型的一个扩展(语法有些微调)。某些情况下二者的行为是一致的。例如,你可以将 onClick="some javascript"作为某些 HTML 元素的属性。通过 Appcelerator 的 Web 表达式语言,你可以这样使用 on=“click”,然后编写 JavaScript 脚本。但对于使用 Appcelerator 的 Web 开发者来说,可用的事件(condition)和行为(action)要更多一些。

事件(Conditions):
  • DOM 事件(单击、焦点、移出、改变、鼠标事件)
  • 键盘事件(向上、向下、按下)
  • 其他(历史、拖拽、选择、调整大小、面向 iPhone、排序)
  • 订阅客户消息
行为(Actions):
  • Scriptaculous 效果(显示 / 隐藏、淡入淡出、移动、滚动、放开、渐变、高亮、变体等)
  • 设置元素值(静态、动态、绑定)
  • 设置 CSS 类或者属性
  • 执行自定义 JavaScript
  • 发布自定义消息
这使得开发者可以使用类似于现在处理事件(如 onClick)的方式来一致地进行事件处理、DOM 操作以及 Ajax(通过自定义消息)。

请查看http://doc.appcelerator.org首页,以了解可以解耦 UI 的消息与 Ajax。回想一下观察者和发布 / 订阅模式,而不是 API 调用。

InfoQ 询问了 Appcelerator 应用的部署:
基于 Appcelerator 的应用可以运行在任何支持 JavaScript 的 Web 浏览器中(无需插件)。只需在 HTML 中包含进 appcelerator.js 就行了。我们想说:“我们已经编写了大量复杂的 JavaScript,因此你就不用再写了”。我们为 6 个主要的 Web 开发平台(Java/J2EE、.Net、Ruby、PHP、Python、Perl)提供了服务绑定。
接下来,InfoQ 继续向 Quinlan 问道部署是否需要一个 SOA 后端:
不需要,我们的客户端技术(Web 表达式、Widgets、只针对客户端的消息)可与传统的非 SOA Web 架构一起使用。这一点很重要,因为它允许开发者采用适合自己的技术(我们称其为“慢行(crawl)”阶段)。但是,我们强烈建议开发者考虑以面向服务的 UIs(SOUIs)来构建其 Web 应用,这本质上是真正的 Web 客户端(使用 HTML、CSS 及最少的 JavaScript 构建)——仅通过异步的服务调用与服务器端交互(我们称其为“步行(walk)”阶段)。你无需再从服务器端脚本来产生 UI 了(请查看http://www.appcelerant.com/lipstick-on-cgi.html)。
然后 Quinlan 跟 InfoQ 读者分享了 Appcelerator 对 Google App Engine 的支持:
我们提供一个唾手可得的、像瑞士军刀一样锋利的工具——“app”(类似于 Ruby 的 GEM 命令),它使我们可以做很多事情,包括将 Appcelerator 应用直接部署到 Google App Engine 云中。你还可以利用该命令将应用发布到 Amazon S3 云中。

http://www.appcelerant.com/running-appcelerator-on-the-google-app-engine.html

InfoQ 问 Quinlan,InfoQ 读者还需要了解哪些关于 Appcelerator 的内容:
发布 / 订阅消息模型极其强大,可以将 UI 元素本身及 UI 元素与服务器端进行解耦。这种架构使得基于 Appcelerator 的应用适合于离线(将消息排入队列,然后刷新)、测试(无需点击、只记录消息即可……提示:这是跨浏览器运行的!)、原型(通过在 HTML 中模拟服务器端的服务来构建功能齐全的原型,而无需任何服务器端代码)及 Web 开发者能想到的方方面面。
在 InfoQ.com 采访完 Quinlan 不久,Appcelerator 宣布将其协议由 GPL 改为 Apache2 license。Appcelerator CEO Jeff Haynie 在其文章Appcelerator 宣布改变协议;与 GPL 说再见中宣布了该变化。
在过去的 6 个月中,我们充分听取了社区的建议,并与其积极讨论以了解人们想怎样使用 Appcelerator,他们现在使用 Appcelerator 的方 式以及未来他们想做哪些事情。我们已经听到了一个共同的声音:从社区角度来看 GPL 并不是一个很恰当的协议,这是由其给重新分发带来的影响决定的,尤其是它涉及到 Web 应用的构建、这些 Web 应用如何通过 Web 服务器进行组织和下载的。我们一开始就考虑尝试澄清我们对 GPL 的态度,因为这涉及到一些专门的 法律问题——我觉得本质上我们需要淡化 GPL 协议的意图,这会改变其目的。很明显,我们的协议与业务和技术目标并不匹配。
请访问http://www.appcelerator.com/以深入了解 Appcelerator。

查看英文原文:Overview of the Appcelerator RIA Platform

Java语言 & 开发架构