SproutCore:一个 HTML 5 应用框架

阅读数:5440 2009 年 9 月 7 日

话题:JavaRubyJavaScriptHTML5DevOps语言 & 开发文化 & 方法

此前 InfoQ 曾对SproutCore有过多次 报道,最近获悉其 1.0 版行将发布的消息。SproutCore 的目标是在浏览器中提供极佳的桌面效果应用而无需任何浏览器插件。所有这些都不是用什么新技术实现的,而是采用这几年广为应用同时又在不断发展的技术。SproutCore 主要采用了 JavaScript、HTML 以及 CSS,这样对后端系统就没什么限制了,显然是个优势。

SproutCore 能与任何后端服务器技术搭配使用。事实上,一旦部署之后,SproutCore 应用只包含标准的 HTML、JavaScript 以及 CSS。只需使用 Apache 就能部署完整的 SproutCore 应用。

自从上次报道 SproutCore 之后,其发生了很多变化,因此 InfoQ 采访了 Sproutit 的总裁兼 CEO Charles Jolley 以了解即将到来的发布。

到底是什么让 SproutCore 成为一个 HTML 5 应用框架?

现在有不少 Web 框架开始使用 HTML 5 中的一些新特性(如离线存储、HTML5 ApplicationCache 等)来构建富本地(rich native-class)应用,而 SproutCore 则是其中之一。SproutCore 在那些使用 HTML 4 特性的老的浏览器上工作良好,然而我们期待未来 5 年兼容于 HTML 5 的浏览器,如 Safari 4、Chrome 及 Firefox 3.5 等能成为主流。
对于我来说,HTML 5 将成为 Web 上最激动人心的事情,因此我们开发了 SproutCore。

SproutCore 1.0 正式版何时发布?

今年秋天发布,但在这之前就将有构建在 SproutCore 1.0 之上的应用了。目前来看,其相当稳定,因为在过去的一年中我们添加了 5,000 多个单元测试,涵盖了每一个特性。在过去的一年当中,我们几乎重写了 SproutCore 构建工具与 JavaScript 框架的每一部分,目的就是保持 API 的稳定性并对性能进行了极大的改进。但我认为 SproutCore 0.9 及之前版本的主要目的是为了证明我们可以在浏览器中构建桌面级的应用,而 SproutCore 1.0 则是保证其核心技术能够平滑的使用且具备极强的可靠性。我很高兴地看到我们实际上已经超过了自己的目标。SproutCore 1.0 无疑是我们最杰出的成就。

所有的文档以及站点更新之类的工作会随着 1.0 版的发布而完成么?

当然了。事实上,我们刚刚将 API 文档放在了 http://docs.sproutcore.com 上,同时又开发了一个文档查看器。http://demo.sproutcore.com 上还有很多示例应用,其中包括一些将于不久之后开源的完整的端到端示例。

为什么要使用 SproutCore 而不是 GWT 或是 Cappuccino 之类的框架?

一般来说,尝试过 GWT 或是 Cappuccino 的人们都会由于种种原因而转向 SproutCore。其中性能问题是首当其冲的要素。这三个框架(GWT、Capp 及 SproutCore)在富 Web 应用上的表现都非常棒。但如果构建的应用非常复杂,瓶颈则很快就会出现,尤其在应用最初的加载阶段更是如此。而在这方面,SproutCore 应用的表现是可圈可点的。第二个因素就是可定制化的能力。使用 GWT 和 Cappuccino 开发时,我们无需总与浏览器打交道,而是在其 Java 或是 Objective-J 沙箱中进行。这种方式很不错,但如果想要探究其底层那可就不好办了。SproutCore 也提供了非常丰富的功能,但都是基于普通的 JavaScript,这样你就能随心所欲的使用了。

对于视图层来说,为何从 Ruby(0.9)转变成了纯 JavaScript(1.0)?

主要原因有二。首先,一旦 1.0 版完成后,我们打算开发一个支持拖拽的 UI 设计器。而 JavaScript 使这一切成为可能。事实上,SproutCore 1.0 的核心程序库已经对 UI 设计器的开发提供支持了。我们只需完成设计器应用本身即可。其次,也是更加重要的原因,那就是性能问题。如果只使用 JavaScript 编写代码,然后让 SproutCore 处理所有的 HTML 和 CSS 的话,我们可以通过一些技巧提高应用的速度,哪怕是 IE 也没问题。总的来说,SproutCore 新的视图层的速度要比之前版本的快 10 倍多(其实之前版本的也够快了)。此外还有一个好处,那就是纯 JavaScript 会极大地简化应用的开发,因为开发者不会陷入两种编程语言的泥潭中,一种语言走天下。

DataStore API 能从 Java Server 上获取数据么?RDBMS(如 MySQL 或 Oracle 等)又如何呢?

你可以使用任何喜欢的后端,没问题。事实上,大家在学习 Todos Tutorial(http://wiki.sproutcore.com/Todos%C2%A0Intro)时会发现我们可以从三种不同的服务器端技术中进行选择。虽然 Java 不在其中,但我想有人一定已经实现了。最酷的就是 SproutCore 应用仅仅是由 HTML/JS/CSS 构成的。后端到底采用什么技术是无所谓的,因为 SproutCore 应用会通过 Ajax 与之交互。

能否在 SproutCore 应用中嵌入其他视图内容(比如视频、Flash 以及音频等等)呢?

当然了!大家可以通过 Safari 4 运行我们提供的视频示例(http://demo.sproutcore.com/video/)。该示例使用了 HTML5 的 video 标签。SproutCore 1.0 已经不再依赖 Prototype 了,相反我们开发了自己的 SproutCore JS-library。这意味着如果你现有的代码使用到了 jQuery、ExtJS、YUI 甚至是 Prototype,你都可以将其嵌入到 SproutCore 应用中。

SproutCore 1.1 的路线图确定下来了么?

还没有。我们现在把所有精力都放在了 SproutCore 1.0 上,力求做到极致。1.1 的开发方式与 1.0 将有很大不同,后者主要是凭借一家公司的一己之力完成的,而前者将要依靠社区的力量来实现,因此我期望 SproutCore 1.0 的发布能引起更多人的注意。

SproutCore 的目标是构建只依赖于浏览器的 Web 应用,然而,它并非一枝独秀,还有其他的选择也值得我们去探究,比如 Google 的GWTCappuccino

查看英文原文:SproutCore: An HTML 5 Application Framework