观点/反驳 - AJAX
AJAX 是构建跨平台应用程序的理想方式,还是仅仅是往昔 Java 小程序和 CGI 程序的翻版? Bill 的观点符合 Web 2.0 标准,而 Kyle 对此印象不深,更喜欢原生应用程序。 AJAX 是未来的平台,还是仅仅是一只跳舞的熊? 请继续阅读他们的看法。
Kyle: 那么,Bill,AJAX 到底有什么了不起的?
Bill: 我喜欢使用 AJAX 应用程序,主要是因为我的电脑变成了无状态的。 我不必担心数据在哪里或安装某些应用程序——它就在那里,随时供我使用。
Kyle: 看起来所有这些应用程序早已存在于 Web 上——它们只是用 Java 或某种 CGI 编写的。 我的意思是,早在 1997 年我就在 Web 浏览器上聊天了。
Bill: 当然,有 CGI 聊天,我也见过 Java 小程序聊天。 但是 Web 2.0 不仅仅是聊天应用程序,而且,所有早期的应用程序都存在 糟糕 的可用性问题。
Kyle: 我觉得 AJAX 似乎患有跳舞熊综合症——人们并没有对应用程序有多好印象深刻,而是对有人能够让 JavaScript 做到这一点印象深刻。 我的意思是,抛开丑陋的 Java 小部件不谈,似乎所有这些 JavaScript 应用程序多年前就以其他语言存在了。
Bill: 你去哪儿了,伙计? 当然,当第一个真正令人惊叹的 AJAX 应用程序出现时,情况确实如此,比如 Google 地图。 即使你也不得不承认,拖动地图是一个 巨大 的可用性飞跃。
Kyle: 我记得第一次看到 Google 地图。 我确实印象深刻,我可以用鼠标拖动地图,它可以在 JavaScript 中移动和缩放。 但是,如果那是一个 Java 小程序或桌面程序,就不会有人那么在意了。
Bill: 现在,应用程序已经超越了“哇”因素,变成了成熟的应用程序。 你试过 Google 日历或 Google 文档吗? 这两个都是很好的例子。 Zimbra 用于邮件的 Web 界面也非常好。 它的外观和感觉很像大多数邮件客户端——以至于我让人们使用它时,他们在使用它时没有任何学习曲线。
Kyle: 这正是我的观点。 这些 Web 应用程序令人印象深刻的地方在于,它们几乎像桌面应用程序一样运行,但是如果有人将同样的东西编写为桌面应用程序,大多数人就不会印象深刻。 好吧,我承认。 我确实使用 Google Reader 来获取 RSS 订阅,但老实说,它比 Sage Firefox 插件唯一好的地方就是 vi 快捷键。 我的意思是,Firefox 已经消耗了足够的内存。 Web 浏览器已成为新的 emacs:一个试图做所有事情的单一程序。 这与“做好一件事”的 UNIX 哲学背道而驰。
Bill: 你使用 Google Reader! 亵渎神灵! “做好一件事”的 UNIX 哲学已经过时了,伙计。 越来越多的程序正在朝着拥有多种特性和功能的方向发展。 驱动这一切的是人们 想要 的,而不是任何至上的哲学。 早在 2005 年,人们就在谈论浏览器 成为 操作系统。 AJAX 应用程序有助于实现这一目标。 这一切都与普遍性有关——而浏览器是任何现代计算机中最普遍的部分。
Kyle: 这听起来就像我们过去常抱怨微软的功能蔓延。 当然,Sun 多年前也在谈论网络即计算机,但后来它需要销售高端服务器。 难道真的只是因为 Java 小部件非常丑陋,才导致每个人都蜂拥而至 AJAX 吗?
Bill: 这不是功能蔓延……应用程序不是浏览器的一部分。 如果是的话,我会同意你的看法。 Java 小部件也有点臃肿,而且存在运行时编译问题,以及尽管 Java 承诺“一次编写,到处运行”,但在最近之前,这还远未实现,即使现在,也并非完全 100%。
Kyle: 嗯,至少 Firefox 在恢复会话方面做得很好。 如果你所有的应用程序都在浏览器这个篮子里,你肯定希望当这个篮子坏掉时,你不会丢失你的工作。
Bill: 如果你在 X 会话中运行程序,而 X 崩溃了,你也会丢失你的工作。 无论什么技术驱动应用程序,它仍然在容器中运行。 如果容器爆炸,你的应用程序也会崩溃。
Kyle: 我想我只是不同意 Web 浏览器是我所有程序的理想容器。 看看这些 AJAX 程序需要多少黑客技术才能在没有互联网连接时保持某种状态。 对于桌面程序来说,这甚至不是一个问题。
Bill: 没错。 我想到了 Gears 来实现这一点,这有点像黑客技术。 但老实说,你有多久没有互联网连接了? 我似乎记得你 非常 自豪地从太浩湖山顶远程配置服务器。 如果你在那里有连接,很可能你在任何地方都会有连接。
Kyle: 虽然现在在任何地方连接都容易得多,但手机 tethering 在某些地方可能不稳定,而且我不能总是为了使用文字处理器而在咖啡店花几美元购买无线连接(当然,我无论如何都不会使用 vim 以外的任何东西)。 另外,如果你在程序运行过程中连接中断了会怎么样?
Bill: Google 的东西 非常 频繁地保存你的工作。 我想你最多会丢失一句话,也许两句。 这完全取决于应用程序,不是吗? 如果你失去了与 Google 日历的连接,那没什么大不了的。
Kyle: 我对这个问题的最后一句是,我没有在 AJAX 中看到太多多年前没有用其他 Web 技术完成的东西。 这对我来说只是炒作——每个沉迷于此的人都认为,当程序从 Web 运行并且其名称中删除了所有元音时,程序会立即变得更好。 我认为有些东西在你的电脑上运行得更好、更快。 毕竟,让 Bill 像行星一样大的“笔记本电脑”中的所有马力白白浪费掉似乎是一种耻辱。
Bill: 是的,AJAX 是一项较新的 Web 技术(Google 地图于 2005 年推出——我真不想看到 Kyle 认为什么是 旧 的)。 尽管如此,它是第一项真正使开发人员能够编写引人注目的 Web 应用程序的技术。 Java 小程序还差得很远,Java 也从未完全实现。 我很震惊 Kyle 不更喜欢它,因为他那可怜的小型笔记本电脑可能可以很好地运行这些应用程序。 毕竟,如果 iPhone 可以运行 AJAX 应用程序,“真正的计算机”可能也应该能够处理它。
Kyle Rankin 是旧金山湾区的高级系统管理员,也是多本书籍的作者,包括 O'Reilly Media 出版的 Knoppix Hacks 和 Ubuntu Hacks。 他目前是 North Bay Linux Users' Group 的总裁。
Bill Childers 是硅谷的一位 IT 经理,他和他的妻子和两个孩子住在那里。 他非常喜欢 Linux,而且他可能应该时不时地多晒晒太阳。 在业余时间,他为 Gilroy Garlic Festival 工作,但他身上没有大蒜味。