写点什么

Buzzword –使用 Adobe Flex / AIR 构建的 RIA 文字处理器

  • 2007-12-03
  • 本文字数:2942 字

    阅读完需:约 10 分钟

Adobe 最近投资了基于 web 的文字处理器 —— Buzzword 的创建者 Virtual Ubiquity 公司。InfoQ.com 联系了 Adobe 系统公司的 David Coletta 和 Tad Staley 以了解该产品,使用 Adobe Flex 来开发 Buzzword 的挑战和好处以及 Buzzword 的远景规划。

Coletta 和 Staley 为 InfoQ.com 提供了 Buzzword 产品的特征和架构的概况:

Buzzword 是使用 Adobe Flex 构建的一个基于 web 的字处理器。Buzzaword 看起来用起来都象一个正规的字处理器,但是它是在一个 web 浏览器中运行的应用。Buzzword 结合了桌面字处理器的丰富用户体验,和其它基于 web 的字处理器的随处访问和协同工作的能力。
没有其它的在线字处理器可以提供这么丰富的用户体验,因为在线字处理器受到 HTML 和 JavaScript 功能的限制。
Buzzword 提供的丰富用户体验,包括随着每次击键即时进行的字母间距微调和重新分页。Buzzword 还提供了在文档中简单而强大的操作图像的功能,包括通过拖拽来放置图片和改变图片的大小。Flash Player 9 的性能有了显著的提高,这使得通过拖拽来放置图片和改变图片的大小是可行的。
Buzzword 对于公众是免费的,请访问 www.buzzword.com

关于为什么会选择 AIR/Flex 平台来开发 Buzzword 的问题:

在 2005 年我们开始评估候选平台的时候,我们考虑的基于浏览器的软件开发的平台包括 Microsoft .NET,Java,AJAX (HTML + JavaScript) 以及 Flex 1.5 on Flash Player 8。(当时 Flex2.0 的 beta 版还不可用,Flash Player 9 正在开发中。)我们理想的开发平台必须具备的因素包括:普遍性(即在 Windows,Mac 和 Linux 都可用的平台),零安装,支持富文本和图形,以及高性能。上述的平台没有一个满足所有的条件,当时我们认为也许我们要做的是不可能的事情。
当 Flex2.0 的第一版和 Flash Player 9 在 2005 年秋季上市的时候,我们更新了我们的原型产品,发现 Flash 平台的性能有了非常显著的提高。我们马上意识到是可以 Buzzword 可以实现的,而 Flash/Flex 平台是唯一的选择。

接下来,Coletta 和 Staley 被问到使用 Flex 开发 Buzzword 过程中遇到的挑战:

我们遇到了(并克服了大多数)相当多的挑战。这里有一些例子。
一个严重的技术挑战是,虽然 Flash/Flex 环境是完全可移植的并且在不同的操作系统和浏览器中工作良好,但是 Flash 沙箱有许多限制——完整的键盘支持以及在 Flash/Flex 环境中的富文本剪贴板——这些功能必须使用浏览器中的 JavaScript 来实现。使用 JavaScript 会限制我们能支持的浏览器数量,使得我们难以跟上我们所支持的浏览器的更新的步伐,总体上损害了采用 Flash 所带来到普遍性。
此外,宿主浏览器的工具栏和菜单栏与 Buzzword 竞争屏幕面积,这削弱了 Buzzword 的优雅的编辑方式的效果。幸运的是,Adobe AIR 平台通过提供对键盘事件和系统剪贴板的直接访问,给我们完全控制窗口的能力,使得我们得以克服在浏览器内运行应用的限制。
另一个技术挑战是不使用后台线程来保持 Buzzword 的用户界面响应能力。在 Flex 开发中使用的编程语言 ActionScript 3,根本上是单线程的,对于所有的网络操作都需要异步的来完成功能。在一个单独的线程中执行费时的后台操作,是保持用户界面的响应能力的一种常见技术。由于我们不能这样做,我们不得不采用其它技术来保持用户界面响应能力,这些技术有时候是笨拙而且难以实现和维护的。(但是众所周知,多线程编程是很容易出错的,所以这个限制并不是一点益处都没有。)
在开始设计的时候,在简洁和恰如其分地使用视觉效果之间作出正确的平衡是个巨大的挑战。Flash 和 Flex 提供了非常丰富的动画和过渡,只要在应用用户界面的某个区域使用了一个动画,就必须全局地考虑如何有效安排整个应用的视觉表现。类似的,我们在界面设计的一些关键领域作出了革新,例如 Buzzword 的格式化工具栏,文档滚动栏和合作者栏,同时努力在视觉革新和一致性之间保持平衡。

InfoQ.com 询问是否有什么东西 Coletta 或者 Staley 希望增加到 Flex 和 / 或者 AIR 中:

Flex 和 AIR 有许多可能提高之处,但是许多现有的约束是必要的而且非常难以克服的,所以单纯的愿望是没有意义的。一项有用而且现实的改进是一个用于在运行时编译和运行 ActionScript 的工具。

Coletta 和 Staley 对于打算采用 Flex 和 / 或者 AIR 的用户提供了如下建议:

当你寻找天才的时候,不要太关注他是否有 Flash 或者 Flex 方面的背景。Buzzword 团队没有一个成员在开始 Buzzword 项目之前使用过 Flash 或者 Flex。相反,雇佣有很强的面向对象软件开发的背景,有 Java、C++ 或者 C#语言经验的高手是更好的选择。他们会发现 ActionScript 3 和基于 Eclipse 的 Flex Builder 环境是非常舒适和熟悉的。

接下来 Coletta 和 Staley 被询问了有关 Adobe 投资的情况:

Buzzword 的愿景的一个关键部分是在 web 上提供优雅的用户体验,这导致了我们评估并选择 Adobe 的 Flex 作为开发环境,我们的应用部署在 Flash 平台上。
当 Adobe 发现了 Buzzword 团队在他们的平台上做的工作,包括在最近宣布的 Apollo(现在的 AIR)平台上的一个早期版本后,Virtual Ubiquity 在 2006 年秋季成为 Adobe 风险投资基金投资的第一个项目。
Buzzword 团队认识到为了应付拥挤而混乱的新市场,我们必须与一家成熟的软件公司合作来得到某种公司运作的稳定性和产品的市场曝光,以有效的推动 Buzzword 进入市场。
Adobe 是一个显而易见的选择——不仅仅是因为 Buzzword 构建于 Adobe 伟大的 Flash 平台之上,而且因为 Buzzword 与 Adobe 的传统十分吻合,两者都与伟大的设计和文档相关。我们相信与 Adobe 一起我们真的可以创造奇迹,并且在许多方面帮助 Adobe。Adobe 对于未来有一些令人激动的计划,而 Buzzword 已经准备好在 Adobe 日益增长的 web 应用与协同工作方面的解决方案中扮演重要的角色。欲得到更多的关于 Adobe 投资的信息,请查阅 Adobe 网站的新闻与 FAQ。

Coletta 和 Staley 谈论了 Buzzword 的将来:

Buzzword 将继续作为一款字处理器软件而发展——我们渴望实现一些伟大的设计和创新,例如变化跟踪和给样式命名。因为 Buzzword 是在线交付的,所以我们能够定期更新它——我们设定了一个 6~8 周的更新周期,这样我们可以把握可以预见的未来。
我们还希望最近可以增加导出 PDF 的功能。这是在 Adobe 的投资公开之前从我们的用户那里得到的一个需求。
作为 Adobe 的一部分,我们渴望在许多领域扩展 Buzzword。当然,首先是 AIR 平台,我们希望不仅仅使得用户可以离线使用 Buzzword,而且会提供一个更干净的用户界面(没有浏览器的烦扰)甚至与桌面更紧密的集成。
除了 AIR,Adobe 的协同工作平台和正在发展的主机应用会为 Buzzword 提供一套完美的丰富的功能集补充,为在线协同工作提供一个伟大的环境。

Buzzword 为使用 Adobe Flex 构建一个真正的富互联网应用提供了一个出色的样板。Coletta,Staley 和 Buzzword 团队的经验会帮助那些正在评估 RIA 技术前景的人。

查看英文原文 Buzzword - RIA Word Processor: Built Using Adobe Flex / AIR - - - - - -

译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于新技术的钻研,软件架构与敏捷开发,目前从事 Home Control 方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-12-03 13:001992
用户头像

发布了 47 篇内容, 共 12.7 次阅读, 收获喜欢 3 次。

关注

评论

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

LeetCode 144. Binary Tree Preorder Traversal

liu_liu

算法 LeetCode

写一个 web 性能压测工具

WW

week7 总结 性能测试

Geek_z9dmvw

Mybatis二级缓存,你确定要用么?

xcbeyond

mybatis 二级缓存 一级缓存

LeetCode 565. Array Nesting

liu_liu

算法 LeetCode

MinIO 简介和搭建一个对象存储服务

耳东@Erdong

Minio store Object store

企业架构框架之DoDAF

冯文辉

企业架构

如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?

Bruce Duan

消息队列 保证消息不丢失 处理重复消息 消息有序性 消息堆积处理

ARTS 05 - 使用 Ecto.Migration 来做数据库迁移

jerry.mei

学习 算法 ARTS 打卡计划 函数式编程 Elixir

Apache BeanUtils和Spring BeanUtils剖析

Bruce Duan

BeanUtils 浅拷贝和深拷贝

什么?还没有自己的域名?

北漂码农有话说

技术革新产业变革新动能

CECBC

两个指针缩小范围算法,CQRS 命令查询职责分离模式 John 易筋 ARTS 打卡 Week 09

John(易筋)

ARTS 打卡计划

使用HSDB 查看jvm内存

引花眠

Docker容器中一定要避免的10件事

xcbeyond

Docker 避坑

IDEA 插件: EasyCode 一键生成所需代码

Bruce Duan

idea插件 easycode 生成代码

分布式锁用 Redis 还是 Zookeeper?

xcbeyond

redis zookeeper 分布式锁

记一次西安thoughtworks的面试经历

xcbeyond

面试 thoughtworks

应届生求职面试真的有那么难吗

xcbeyond

面试 应届生

MyBatis几种好用的写法

Bruce Duan

MyBatis标签

架构师训练营——请简述 CAP 原理

WW

JDK1.8新特性(四):函数式接口

xcbeyond

新特性 函数式编程 JDK1.8 JDK1.8新特性

MySQL 大表优化方案

Bruce Duan

MySQL优化

架构师训练营 -- 第七周学习总结

花花大脸猫

SpringBoot 使用 jasypt 对配置项进行加密

hungxy

Java springboot jasypt

性能测试

满山李子

极客大学架构师训练营

JDK1.8新特性(五):Stream,集合操作利器,让你好用到飞起来

xcbeyond

stream 集合 新特性 JDK1.8 JDK1.8新特性

自从用完Gradle后,有点嫌弃Maven了!速度贼快!

xcbeyond

maven Gradle

JVM系列之:详解java object对象在heap中的结构

程序那些事

Java JVM GC JOL

架构师训练营作业 (第七周)

默默

ARTS打卡 第8周

引花眠

ARTS 打卡计划

Buzzword –使用Adobe Flex / AIR构建的RIA文字处理器_Java_Jon Rose_InfoQ精选文章