写点什么

采访:基于 AIR 实现任务管理工具 Doit.im

  • 2009-11-16
  • 本文字数:1835 字

    阅读完需:约 6 分钟

Doit.im 是一个结合 GTD 理论,基于 AIR 开发的个人待办事项管理工具,目前发布了 1.1 版本,已经有近 1.8 万人注册使用。InfoQ 编辑就 AIR 开发相关话题采访了 Doit.im 的主力开发者李晓。

InfoQ:为什么要基于 AIR 开发?有没有什么特别的考虑?

李晓:我们当时选择基于 AIR 的开发主要有如下考虑:

  • 跨平台:虽然基于浏览器的 Web 应用也能够一定程度做到,但是 AIR 在各个操作系统的行为一致性还是远远高于跨浏览器的 Web 应用,我们基本上没有花什么精力就达到了这一目标。
  • 桌面应用:Doit.im 虽然是基于网络的应用,但是本质上是桌面应用,1.1 版本新增的离线支持让 Doit.im 在没有网络时也能够工作。现在浏览器端的解决方案是采用 Gears 来保存离线数据,但是相对于 AIR 的本地应用而言仍然受到很多限制,比如文件操作,最小化应用,浮动窗口等等。虽然 AIR 也不是完全拥有普通桌面应用的所有能力,但是相对浏览器而言还是具有很大的优势的。

InfoQ:在使用 AIR 开发过程中,最大的挑战来自于哪里?

李晓:

  1. 性能:我们原来考虑使用 AIR 其实还有一个原因,就是因为 AIR 是本地应用,ActionScript 虽然和 JavaScript 有血缘,但是运行期是经过编译的,怎么想它都应该在性能上优于基于 JavaScript 的 Web 应用。但是实际结果却很难说 AIR 在性能上有优势。为了解决性能问题,已经影响到我们放弃一些好的用户使用体验。一般来说,更多使用 Flex 原生控件能够在这个方面得到更好的效果。而多使用或少使用一个 VBox(Flex UI 组件)有时候在界面展现上会有天壤之别,这多少让人不得不在一开始就为性能而谨慎编码,虽然这在现代编程理论中已经是大忌。
  2. 内存使用率:这个实际上我们只能做非常有限的努力,AIR 使用的内存显得非常夸张,Doit.im 的客户普遍抱怨 Doit.im 使用了太多内存,基本上能比它更多使用内存的也就是浏览器了。
  3. 文档稀缺:Adobe 虽然有公布很多 API 文档,但是多数文档过于简陋。更加缺乏的是如何使用控件的文档,这里所说的如何使用,不是说这个控件具有什么属性、什么方法,每个属性和方法的功能是什么,而是这个控件是解决什么问题的,什么情况下应该如何使用该控件。这个问题的结果是,在初期,我们的团队犯了很多使用控件不当的问题,一般来说,一个控件被在错误情况下使用,它的功能还是完整的,只是从性能和最终效果上会有差别,特别是性能方面,我们为此花了很多精力。
  4. 代码开源:现在 Adobe 已经开源了不少代码,但是仍然有核心代码是非开源的,这在碰到 Flex/AIR 本身的 bug 时就比较致命,不能调试,你又不知道怎么回事,文档又缺,只能想方设法避开,好像没头苍蝇一样到处撞。也许相对于那些完全闭源的开发环境这已经好多了,而我可能也更习惯于 Ruby/Java 这样的环境,但是这确实挑战人的神经。
  5. 在 ActionScript 3 中,将 private 关键字做了强化,一旦声明成 private,那真的就是没有任何办法可以在类之外调用到相关属性或者方法了。当你碰到问题并且没有办法接触到源代码时,这就非常麻烦了。ActionScript 的这种发展方向,让人担忧。强类型和各种限制能够避免一些程序员犯错,但同时也关闭了程序员做出正确选择的门。

InfoQ:你希望 AIR 在新的版本中做哪些改进?

李晓:

  1. 性能(天下武功,为快不破);
  2. 内存使用率;
  3. 更多本地支持,比如注册系统快捷键,这块对 Doit.im 来说是非常需要的,我相信很多桌面应用也非常需要这个;
  4. 更多 Meta programming 支持,放开对程序员的束缚。

InfoQ:Doit.im 产品的开发环境是什么样子的?

李晓:

  • 操作系统:Windows, Mac OS
  • IDE:Flex builder 3
  • 数据传输框架:graniteds
  • 客户端服务器传输协议:AMF
  • 服务器端:Hibernate 做数据存储; jrest-route 实现 REST 服务

这里简单解释一下。至于 IDE 虽然 Flex builder 3 有很多不尽人意之处,但是似乎没有太多选择,IntelliJ 也推出了 Flex 插件,License 的原因没有去尝试。

客户端服务器传输方面,采用的 graniteds 规规矩矩,但是在使用过 AMF 这种强类型的传输协议之后,我现在更倾向使用 JSON 为传输载体的 REST 接口,相对来说透明、简单清晰,因为 AMF 的 AS RemoteObject 实现在登录登出方面有些问题,其实现策略也感觉不太适合实现随时离线的应用。

jrest-route 是我们为实现简单的 REST API 而做的一个简单实现,现有的 Java REST 框架感觉普遍太过繁琐复杂,所以自己实现了一个开源出去了。

注:现在 InfoQ 正和 Adobe 合作,提供 Flash Builder 4 Beta 2 的高速下载,11 月 20 日前下载还能免费获得产品序列号,感兴趣的读者可以直接点击这儿下载

2009-11-16 02:212324

评论

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

OpenTelemetry日志体系

骑牛上青山

Java 日志 log 调用链 OpenTelemetry

Button(按钮)与ImageButton(图像按钮)

梦笔生花

Android Studio button imagebutton

追求技术极致 探索落地先机 毫末智行城市NOH公布未来产品规划

科技大数据

新能源汽车

如何让你的架构设计应用做到高内聚、低耦合?

风铃架构日知录

Java 程序人生 后端 架构设计 后端开发

TSDB助力井下位置服务

CnosDB

数据库 IoT 时序数据库 开源社区 infra

中国自动驾驶行业最大智算中心亮相 毫末顾维灏:毫末车端感知架构实现跨代升级

科技大数据

汽车

直播交友一对一视频语音APP项目系统架构和模式分析(成品1对1源码)

山东布谷科技胡月

视频语音直播app开发 语音直播交友系统搭建 社交app开发 1v1语音系统搭建 视频社交APP开发

元器件温度系数(ppm/℃)是什么?

不脱发的程序猿

元器件温度系数

2023-01-07:hyper/docker-registry-web是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

云原生 k8s k3s 福大大

怎么用vscode创建工程

eng八戒

ide vscode koa

社交视频直播一对一交友APP源码之Android如何打包APP

山东布谷科技胡月

语音直播app开发

极客时间运维进阶训练营第十周作业

老曹

你知道微服务架构中的“发件箱模式”吗

JAVA旭阳

Java 架构

使用 App Store Connect API 批量创建内购商品

37手游iOS技术运营团队

AppleParty 苹果派 App Store Connect API 批量创建内购IAP 批量上传 IAP

【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数据实战指南(在线同步数据)

洛神灬殇

redis 数据同步 1月日更 数据同步工具 RedisShake

线上压测

agnostic

使用 OpenAI ChatGPT 进行了编码尝试

devpoint

人工智能 openai ChatGPT

分享 7 个不错的 AI 工具

devpoint

人工智能 AI openai

用 SwiftUI 实现 AI 聊天对话 app - iChatGPT

37手游iOS技术运营团队

ios SwiftUI openai ChatGPT

选购LED显示屏时需要注意8个技术参数

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

MySQL字符集和排序规则详解

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

VSCODE 配置远程调试环境

eng八戒

ide vscode 服务器

高并发系统设计的15个锦囊

小小怪下士

Java 程序员 系统设计 高并发

分享 7 个VUE项目用得上的JavaScript库

devpoint

JavaScript Vue 前端开发 前端开发框架

Guitar Pro2024最新免费版吉他打谱软件下载

茶色酒

Guitar Pro Guitar Pro8 guitar pro2023

运维训练营第十一课作业

好吃不贵

毫末智行稳健收官2022“三大战役” 火力全开打响2023“四大战役”

科技大数据

智能汽车

《零基础学 Python(2023 版)》学习笔记 Day0

IT蜗壳-Tango

Python编程 IT蜗壳教学

Portraiture4人像智能磨皮插件下载亲测可用

茶色酒

Portraiture2023 Portraiture

8 个很酷的 GitHub 技巧

devpoint

GitHub vscode 开发技巧

盘点毫末智行AI DAY:智算中心成立、六大闭环、MANA五大模型...助力毫末智能驾驶产品快速迭代

科技大数据

采访:基于AIR实现任务管理工具Doit.im_Java_霍太稳@极客邦科技_InfoQ精选文章