新发布的 TraceMonkey 是一个基于于跟踪(trace-based)的即时(JIT)编译器,将由 Firefox 的下一版本引入,借此提升 JavaScript 的性能。InfoQ 采访了 Mozilla JavaScript 传道者及 jQuery 的创建者 John Resig,以了解该激动人心的开发及其对基于 JavaScript 的 RIA 未来的影响。
InfoQ:你认为该开发将对 RIAs 产生何种影响?你认为这会为更加丰富的应用敞开大门么?这看起来是什么样的?
完全没问题。有一些应用领域是很难实现的,目前在 JavaScript 领域来说就是那些计算密集型应用。实现任何一种复杂的游戏或者图形仿真应用都是极具挑战性的。借助于 Tracemonkey(及其他 ECMAScript 引擎性能的改进),这些挑战现在变得可行了——这真令人感到兴奋。
InfoQ:Dion Almaer 在 Twitter 上提出这样的疑问——“****你在 JIT 代码中借助 Firebug 来调试代码有多困难?"。你如何看待这一问题?
坦诚地说,区别不会很大(对于前端的 Web 开发者来说)。大多数改变发生在引擎的内核下,这使得最终的结果对于大多数 Web 用户来说都是无缝的。
现存的一种情况(现在还不清楚这能否在 Firefox 3.1 中得以解决)就是,进行跟踪的同时 Mozilla 内部的 JavaScript 调试器(允许你设置断点的工具——同时也令 Firebug 变得强大)无法运行。相对于上面提到的,这完全是另外一码事,因为一旦用户打开调试器,他们仍然可以开心地调试其 JavaScript 代码(仅仅无法调试 JIT 代码)。
InfoQ:其他厂商有没有仿效 Mozilla,即时编译本地代码呢?
当然了。很大程度上要依赖于其他 ECMAScript 引擎实现的细节了。我非常期望看到其他引擎能够做到与 Tracemonkey 类似的改进。
InfoQ:除了 TraceMonkey,在不久的将来客户端脚本还有什么值得期待的突破呢?
下一件重要的事情就是线程了。Google、Apple 和 Mozilla 在 W3C 的赞助下正在进行 Web Worker 提案的工作。不久我们就会在浏览器中看到这一点(Firefox 3.1 就会出现一些),同时这也将对 web 应用的一些传统进行彻底的变革。
InfoQ:你看到诸如 jQuery 的 JavaScript 库被打包到浏览器软件中么?你能预见到它们会提供哪些现在由本地浏览器 APIs 所提供的功能么?
打包到浏览器?我很怀疑。打包有用的 APIs?当然了。我们已经看到 Selectors API 规范的实现在所有浏览器(IE 8、Firefox 3.1、Safari 3、Opera 10)中都做到了这一点。一旦所有这些浏览器的市场都饱和时,我们就能从大多数 JavaScript 库中移除大量代码。
期待在接下来的几年中能看到在浏览器中增加更多的改进。
查看英文原文: John Resig on TraceMonkey and the future of JavaScript-based RIAs
评论