写点什么

SproutCore:一个 HTML 5 应用框架

  • 2009-09-07
  • 本文字数:2220 字

    阅读完需:约 7 分钟

此前 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 Intro)时会发现我们可以从三种不同的服务器端技术中进行选择。虽然 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 的 GWT Cappuccino

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

2009-09-07 22:306344
用户头像

发布了 88 篇内容, 共 266.6 次阅读, 收获喜欢 8 次。

关注

评论

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

技术创业,股权设置的常见“坑” | 视频号28天(24)

赵新龙

28天写作

Apache老母鸡又下蛋?一文俯瞰Apache Superset

王知无

大数据

区块链技术发展及应用:现状与挑战

CECBC

区块链

欢度春节|话题王者 VS 互动先锋(第二季)

InfoQ写作社区官方

话题讨论 热门活动

第十周 模块分解 作业 「架构师训练营 3 期」

胡云飞

webpack | 进阶用法1:多入口构建/资源内联/脚本分离等

梁龙先森

大前端 webpack 28天写作

Mybatis【17】-- Mybatis自关联查询一对多查询

秦怀杂货店

数据库 mybatis

区块链隐私保护、体系结构与智能合约研究

CECBC

区块链

架构师训练营 - 第五周作业

Mark

2021年,开发者的落日

王知无

大数据

2月日更挑战|达标抽奖季,更有暖春大满足礼包等你来

InfoQ写作社区官方

2月春节不断更 热门活动

图解类加载器和双亲委派机制,一看就懂

Java鱼仔

Java 程序员 面试 类加载

第十周课后练习

Binary

我看好数据湖的未来,但不看好数据湖的现在

王知无

大数据 数据湖

Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?

程序员小航

spring 源码

航运业“搭台” 区块链“唱戏”

CECBC

航运

95 后张勇:Apache Pulsar Committer 军团新生代力量

Apache Pulsar

大数据 开源 pulsar Apache Pulsar 消息系统

产品 0 期 - 第三周作业

Jxin

VS2019 + Qt Creator 4.11.1 导入Qt源码进行调试记录

Creep

c++ qt

数据结构和算法学习总结-复杂度分析

Nick

时间复杂度 数据结构与算法 复杂度

读2020年Javascript趋势报告展望ES2020

devpoint

大前端 ES2020 构建工具

Elasticsearch document routing 数据路由

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

企业是如何解决HDFS单点问题的?

大数据老哥

大数据 hadoop

用helm chart将chripstack部署到kubernetes之上

远鹏

Kubernetes IoT Helm ChirpStack LoraWan

VS +QT 手动添加Q_OBJECT 报错问题解决

Creep

c++ qt

批判性思维自修课(五)

石君

28天写作 批判性思维

架构入门感悟总结

笑春风

聊聊我的原创维权二三事

架构精进之路

自我思考 七日更 28天写作

《程序员修炼之道》- 解决问题,而不是去责备(6)

石云升

程序员 bug修复 28天写作

产品 0 期 - 第三周作业

vipyinzhiwei

关于微信8.0的一些社交小心思

静陌

微信 张小龙 社交

SproutCore:一个HTML 5应用框架_Java_Craig Wickesser_InfoQ精选文章