随着 Web 逐渐成为默认的开发平台,大家都注意到浏览器技术上的不断 创新。在时代精神的感召下,Opera 宣布了代号为 Carakan 的计划,该计划旨在开发“市面上最快的JavaScript 引擎”,与此同时Apple 也发布了 Safari 4 beta 版,提供了不少新特性和改进。
相比于 Opera 之前的引擎 Futhark,Caracan VM 最重要的一个技术上的改进就是字节码指令集不再基于栈而是基于寄存器了:
在新的引擎中,我们使用了基于寄存器的字节码指令集。在基于寄存器的机器中栈的大小不是动态变化而是固定的,我们称之为“寄存器”,这样就不用只在栈顶寻找值了,每个指令都可以访问任何寄存器。由于无需在栈顶将值拷来拷去 ,因此所需执行的指令就会变少,同时需要拷贝的数据也减少了。
Caracan 还支持本地代码生成:
尽管新引擎的字节码指令集实现了更快的字节码执行引擎,但对于简单的 ECMAScript 代码的执行来说还是有些不尽如人意,比如字节码解释器所执行的整数循环计算。为了提高效率,我们将全部或部分 ECMAScript 程序和函数编译成了本地代码。
另一个改进就是 JavaScript 对象的表示上:
在新引擎中,每个对象都有一个类与之对应,该类用于保存对象的各种信息,如其原型以及部分或全部属性的顺序和名字。类的指定是动态的,因为 ECMAScript 本身就是个动态的语言,但拥有相同原型和属性集的对象具有相同的类。这种表示方式可以紧凑的存储每个对象,因为代表对象属性的大部分复杂结构都放到了类中,这样具有相同类的其他对象就可以共享这些属性了。在现实应用中,一个类可以有多个对象,因此这种方式能节省大量内存。
Opera 说借助于这些增强,现在的 Caracan 要比 Opera 10 Alpha 中的引擎快 2.5 倍。目前 Caracan 的发布日期尚未确定,那么这些增强能否让 Opera 浏览器流行起来呢,让我们拭目以待吧。根据 NetApplications 的调查,今年 1 月份 Opera 浏览器的市场占有率仅为 0.70% 。
与此同时,Apple 发布了 Safari 4 beta 版,值得关注的是它带有一个名为 Nitro 的新 JavaScript 引擎:
借助于新的 Nitro 引擎,Safari 执行 JavaScript 的速度要比 Internet Explorer 7 快 30 倍,比 Firefox 3 快 3 倍,这是根据业界主要的基准测试:iBench 和 SunSpider 得到的结果。
新版的 Safari支持几种新的高级技术,如:
- CSS 动画
- CSS 特效
- CSS 3 Web 字体
- CSS Canvas
- HTML 5 媒体支持
- HTML 5 离线支持
- 兼容于 Acid 3(唯一一个通过测试的浏览器)
- 猜测载入(Speculative Loading)
Safari 还带有几个新特性及 UI 改进,如:
- 标签栏置顶
- Cover Flow(使搜索网页历史或书签就像在 iTunes 中翻阅专辑图案一样有趣和简单——译者注)
- 完全的历史搜索
- Windows 的本地感官
- 智能地址栏
- 全页面缩放
- 智能搜索栏
- 网络钓鱼与恶意软件防护
你可以访问 Apple 的 Safari 开发者中心来了解如何将这些新特性用于桌面和移动版本的 Safari 开发上。
Paul Stamatiou试用过该 beta 版并与我们分享了其想法:
如果让我说的话,我会给 Safari 4 beta 打个 6.5-7 分(满分为 10 分),其稳定性和速度确实不错。那么 Safari 4 到底好在哪里呢?仅仅是浏览 Web 而已。不要忘记 Safari 最近才成为私有浏览模式 *wink wink*…之王, Firefox 3.1 也对其提供了本地化支持。 如果你正在使用 Safari 4,那么请看看一些隐藏选项吧(只针对 OS X),比如将标签栏放回到原处。
所有主要的浏览器供应商都在闷头改进其引擎, Dion Almaer 想知道将他们联合起来会不会更好:
这些浏览器并没有(或是根本没法)共享其 VM 的研究成果。每个浏览器都有一个新的 VM 实现。如果他们能联合起来岂不更好?
Iliad回答了 Dion 的问题:
共享 VM 引擎就没有竞争了,也没有动力再去推进更好、更快的实现。像现在这样,彼此都在暗自较劲——这很好。
可以在 InfoQ 上找到关于浏览器、 JavaScript和 RIA的更多内容。
查看英文原文: Browser Wars Reignite with Opera announcing Caracan and Apple releasing Safari 4 Beta
评论