目 录
一.Webkit 介 绍
二.Webkit 编译详 解
1. 依 赖库 及介 绍
2.X11+Gtk+WebKit 交叉 编译详 解
3. 编译 出 错 Q&A :
三.WebKit 分析
1. 体系 结构
2. 解析流程
3. 浏览 器系 统结构
四.各 种浏览 器比 较 分析
1. 网页浏览 器列表
2. 浏览参数 性能比 较
3. 浏览 器使用率分析
4.WebKit 的SWOT 分析
五.浏览器的未来
1. 微软的梦魇
2. 云端技术的发展
3. 浏览器的未来
一.Webkit 介 绍
WebKit 的前身是 KDE 小 组 的 KHTML 。Apple 将 KHTML 发扬 光大,推出了装 备 KHTML 改 进 型的 WebKit 引擎的 浏览 器 Safari , 获 得了非常好的反 响 。
WebKit 内 核在手机上的 应 用十分广泛,例如 Google 的手机 Gphone 、 Apple 的 iPhone, Nokia ’s Series 60 browser 等所使用的 Browser 内 核引擎,都是基于 WebKit 。
现 在 浏览 器的 内 核引擎,基本上是三分天下:
Trident: IE 以Trident 作 为 内 核引擎。
Gecko: Firefox 是基于 Gecko 开发 。
WebKit: Safari, Google Chrome 基于 Webkit 开发 。
WebKit 支持功能:
HTML4.0/5.0
CSS1&2
Dom1&2
ECMA262
JS1-6
HTTP/FILE
GIF/JPEG/PNG
XML
SSL3
JVM
FTP
SVG 可 缩 放矢量 图 形(Scalable Vector Graphics)
RSS2.0(RDF Site Summary )
浏览 器的 选 型:
1 。Geocko 功能强,但太 庞 大
2 。Opera 功能强,但要 钱
3 。Ipanel 功能一般,也要 钱
4 。Ants 功能一般, 还 是要 钱
5 。WebKit 功能强,不要 钱 ,呵呵就 这个 (有nokia,apple,google 为 例), 它属 于 LGPL and BSD licenses.
二.Webkit 编译详 解
1. 依 赖库 及介 绍
libicu-dev
ICU 是一 个 成熟,广泛使用的一套 为 C / C + + 和Java 库 提供Unicode 的 全球化支持 软 件。ICU 广 泛的 应 用在便携式 设备 上, 并给 出相同的 结 果在所有平台之 间 的C / C + + 和Java 软 件。
libxslt-dev
XSLT 的英文 标 准名 称为 eXtensible Stylesheet Language Transformation 。根据W3C 的 规 范 说 明 书 (http://www.w3.org/TR/xslt) ,最早 设计 XSLT 的用意是 帮 助XML 文 档 (document) 转换为 其 它 文 档 。但是 随 着 发 展,XSLT 已 不 仅仅 用于 将 XML 转换为 HTML 或其 它 文本格式,更全面的定 义应该 是: XSLT 是一 种 用 来转换 XML 文 档结构 的 语 言。
libcurl-dev
cURL 是一 个 利用URL 语 法的文件 传输 工具, 是 基于libcurl 的前端命令行工具。 它 支持很多 协议 :FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP 。 它 同 样 支持HTTPS 认证 ,HTTP POST 方法, HTTP PUT 方法, FTP 上 传 , kerberos 认证 , HTTP 上 传 , 代理服 务 器, cookies, 用 户 名/ 密 码认证 , 下 载 文件 断 点 续传 , 上 载 文件 断 点 续传 , http 代理服 务 器管道( proxy tunneling ), 甚至 它还 支持IPv6, socks5 代理服 务 器, 通 过 http 代理服 务 器上 传 文件到FTP 服 务 器等等,功能十分强大。
libsqlite3-dev
SQLite 是 实现 了SQL 92 标 准的一 个 大子集的嵌入式 数 据 库 . 其以在一 个库 中 组 合了 数 据 库 引擎和接口, 能 将 所有 数 据存 储 于 单个 文件中而著名. 功能一定程度上居于MySQL 和PostgreSQL 之 间 . 尽 管如此, 在性能上面,SQLite 常常快2-3 倍 ( 甚至更多). 这 利益于其高度 调 整了的 内 部架 构 , 因 为它 除去了服 务 器端到客 户 端和客 户 端到服 务 器端的通信.
libjpeg62-dev
libjpeg 软 件包包含 jpeg 库 . 这 些 库 使 图 形文件在 联 合 图 象 专 家 组 的 标 准上 压缩 . 它 是一 种 " 有 损 耗" 的 压缩 算法.
libpng12-dev
libpng 软 件包包含 libpng 库 . 这 些 库 被其他程序用于 读写 png 文件
gperf
'gperf' 是一 个 用C++ 编写 的完美的hash 函 数 生成器. 它 通 过 一 个 完美的hash 函 数 F 转换 一 个 含有N 元 素的用 户 特定 关键 字集合到集合W. F 唯一映射 关键 字到W 的0..K 范 围 , 其中K>=N 如果K=N 那 么 F 就是最小化的完美hash 函 数 .'gperf' 生成一 个 0..K 元素的 静态查
找表和一 对 C 函 数 . 这 些函 数决 定一 个给 定的字符串S 是否在集合W 中, 通 过 只多一次的 查 找.
'gperf' 普遍用于 为 多 个 商 业编译 器, 研 究型 编译 器, 语 言 处 理工具的 词 法分析器生成一 个关键 字 识别 器. 这 些 编译 器包括GNU C, GNU C++, GNU Pascal, GNU Modula 3, 和GNU indent. 完整的'gperf'C++ 源代 码 可以通 过 匿名ftp`ics.uci.edu' 和 `ftp.santafe.edu' 得到.'gperf' 已 经随 GNU libg++ 一起 发 布好几年了
flex
快速 词 法分析器 发 生器
Bison
GNU 项 目分析器
GUI
支持多 种 GUI, 包括gtk ,qt, mac, win 等.linux ,windows ,Mac 都能 运 行。
2.X11+Gtk+WebKit 交叉 编译详 解
编译 列表:
Name |
Version |
libpng |
1.2.10 |
pkg-config |
0.23 |
gperf |
3.0.3 |
Tiff |
3.8.2 |
libjpeg |
6b |
freetype |
2.1.10 |
libxml2 |
2.6.30 |
fontconfig |
2.4.2 |
XFree86 |
4.7.0 |
glib |
2.18.0 |
atk |
1.20.0 |
cairo |
1.2.0 |
pango |
1.20.0 |
gtk+ |
2.14.0 |
ICU |
4c-3_6 |
xslt |
1.1.22 |
curl |
7.19.2 |
sqlite |
3.5.6 |
WebKit |
r29711 |
The cross source:
export ARCH=arm
export CC= iwmmxt_le-gcc
export CXX=iwmmxt_le-gcc
export BUILD_ROOT=/uplatform
export PATH=/opt/montavista/cee/devkit/arm/iwmmxt_le/bin/:/opt/montavista/cee/host/bin/:$BUILD_ROOT/usr/bin:$PATH
export PKG_CONFIG_PATH=$BUILD_ROOT/usr/lib/pkgconfig:$BUILD_ROOT/usr/X11R6/lib/pkgconfig
说 明:CC 是c 的 编译 器 选项 ,CXX 是C++ 的 编译 器 选项 。BUILD_ROOT 是 要build 的路 径 。PKG_CONFIG_PATH , 现 在大多 数软 件,都是通 过 pkg-config 来检查 依 赖关 系的,所以要把 两 者都加到PKG_CONFIG_PATH 环 境 变 量中
Libpng
etho ac_cv_fnuc_malloc_O_nonull=yes>> $ARCH-linux.cache
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
pkg-config
./configure
make &&make install
应为 需要 较 高 级 的版本的pkg-config 才能 编译 glib 和gtk , 如果 编译 机上的版本 够 高就不需要在升 级 pkg-config 了
Gperf
./configure
make &&make install
企 业 版的/usr/bin 下有,可以直接使用,如 果 没 有需要 编译 一 个
Tiff
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
字体 读 取文件 库
Libjpeg
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
freetype
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
libxml2
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
fontconfig
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
make &&make install
XFree86
./configure --prefix=/$BUILD_ROOT/usr --host=$ARCH-linux
由于x11 的需求不同,在配置 选项 的 时 候要加特定的 参数 。所以需要知己configure –h 看所需要的 选项
Glib
ac_cv_type_long_long=yes
glib_cv_long_long_format=ll
glib_cv_stack_grows=no
glib_cv_uscore=no
ac_cv_func_posix_getpwuid_r=yes
./configure --host=arm-linux --prefix=$BUILD_ROOT/usr
make &&make install
以上 选项 加入到configure 里再configure, 应为 我 们 arm 上裁剪的是2.4 内 核,所以有些是不支持的,需要 屏 蔽
Atk
export CFLAGS="`pkg-config --cflags glib-2.0` -I$BUILD_ROOT/usr/include"
export LDFLAGS="-L$BUILD_ROOT/usr/lib,-rpath=$BUILD_ROOT/usr/lib"
./configure --host=arm-linux --prefix=$BUILD_ROOT/usr
make &&make install
因 为 atk 是依 赖 glib 的,所以需要指定glib
Cairo
Export CFLAGS="-I$BUILD_ROOT/usr/include -I$BUILD_ROOT/usr/X11R6/include"
Export LDFLAGS="-L$BUILD_ROOT/usr/lib -L$BUILD_ROOT/usr/X11R6/lib -lXft -lfreetype -lfontconfig -lXrender -lexpat -lXext -lX11"
./configure --host=arm-linux --disable-nls --with-x --prefix=$BUILD_ROOT/usr --x-includes=$BUILD_ROOT/usr/X11R6/include --x-libraries=$BUILD_ROOT/usr/X11R6/lib
make &&make install
由于我 们编译 的是1.2.0 所有不需要 编译 pixman
Pango
export
FREETYPE_CONFIG=$BUILD_ROOT/usr/bin/freetype-config
Export
LDFLAGS="-L$BUILD_ROOT/usr/lib -Wl,-rpath=$BUILD_ROOT/usr/lib"
export
CFLAGS="`pkg-config --cflags glib-2.0 cairo` -I$BUILD_ROOT/usr/include/freetype2"
./configure --host=arm-linux --disable-nls --with-x --prefix=$BUILD_ROOT/usr --x-includes=$BUILD_ROOT/usr/X11R6/include --x-libraries=$BUILD_ROOT/usr/X11R6/lib
make &&make install
因 为 pango 依 赖 GLib, freetype,cairo,x11 ,所以要指明其 连 接
gtk+
首先 屏 蔽config.h 里面的
HAVE_XFIXES 0
HAVE_CUPS_API_1_2
再configure
CFLAGS="`pkg-config --cflags pango pangoft2 pangocairo` -I$BUILD_ROOT/usr/include -I$BUILD_ROOT/usr/include/freetype2 -I$BUILD_ROOT/usr/X11R6/include/"
LDFLAGS="`pkg-config --libs pango pangoft2 pangocairo` -L$BUILD_ROOT/usr/lib -lintl -L$BUILD_ROOT/usr/X11R6/lib -lXft -lfreetype -lfontconfig -lXrender -lexpat -lXext -lX11" CC=iwmmxt_le-gcc
./configure --disable-cups --disable-nls --enable-xim=no --disable-xim-inst --with-xinput=no
make &&make install
ICU
./configure --enable-static --enable-shared --host=arm-linux --prefix=$BUILD_ROOT/usr/
Xslt
./configure --host=arm-linux --with-x --prefix=$BUILD_ROOT/usr --x-includes=$BUILD_ROOT/usr/X11R6/include --x-libraries=$BUILD_ROOT/usr/X11R6/lib
Curl
ac_cv_file___dev_urandom_=yes
./configure --host=arm-linux --prefix=$BUILD_ROOT/usr/ -without-ssl --without-ca-path --without-ca-bundle
在configure 文 件里加ac_cv_file___dev_urandom_=yes ,再configure
Sqlite
./configure --host=arm-linux --prefix=$BUILD_ROOT/usr
make &&make install
WebKit
首先 执 行
sh autogen.sh
执 行autogen 脚本, 会 生成configure , 再 执 行configure
CFLAGS=-I$BUILD_ROOT/usr/include LDFLAGS=-L$BUILD_ROOT/usr/lib ./configure --prefix=$BUILD_ROOT/usr --host=$ARCH-linux CFLAGS=-I$BUILD_ROOT/usr/include CPPFLAGS=-I$BUILD_ROOT/usr/include icu_config=$BUILD_ROOT/usr/
3. 编译 出 错 Q&A :
Q: 在configure 中 报 找不到某 个库 ,或某 个库 的版本太低。
A:1 确 认 是否有 该库 ,版本是否太低。如果 没 有 请编译该库
2 有 该库 文件, 证 明 没 有正确的 连 接到在CFLAGS 和LDFLAGS 两个环 境 变 量中指明 连 接的 头 文件和 库 。
3 只明了路 径为 什 么还 不行?有些要通 过 pkg-config 读 取.pc 文 件的形式才能正确。
Q: 在configure 中什 么 找不到,或一些莫名奇妙的 错误 。
A: 直接打 开 configure 文件,找到 报错 的地方,找到其判 断语 句 并将 起 屏 蔽。如2.4 的 内 核不支持stack_grows , 在 编译 glib 的 时 候就要加glib_cv_stack_grows=no , 让 其 屏 蔽 过 去。
Q: 在make 的 时 候包 语 法 错误
A: 找到 该 文件,直接修改其 语 法 错误 。 应为 是 开 源 软 件,有 语 法 错误 很正常。
Q :在make 的 时 候出 现 找不到某 库 文件
A: 直接在Makefile 的LDFLAGS 加其 库连 接 选项 ,如果本 来 就不要 该库 就直接 删 除。
Q: 在make 的 时 候找不到某函 数 。
A: 在config.h 里 屏 蔽其函 数对应 的宏。一般 来 宏 来 控制某 个编译选项 ,有些函 数 是通 过 宏 来 判 断 是否 执 行的。
Q: 其他 问题
A: 请 google 一下。哈哈!
三.WebKit 分 析
1. 体系 结构
WebKit 上 层组织应 用
WebCore
¨Page 与 外框相 关 的 内 容(Frame,Page,History,Focus,Window)
¨Loader 加 载资 源及Cache
¨HTML-DOM HTML 内 容及解析
¨DOM- DOM CORE 内 容
¨XML- XML 内 容及解析
¨Render- 排 版功能
¨CSS-DOM CSS 内 容
¨Binding-DOM 与 JavascriptCore 绑 定的功能
¨Editing- 所有 与编辑 相 关 的功能
JavascriptCore-javascript 引擎
¨API- 基本 javascript 功能
¨Binding 与 其 它 功能 绑 定的功能 , 如 :DOM,C,JNI
¨DerviedSource 自 动产 生的代 码
¨ForwordHeads 头 文件 , 无 实际 意 义
¨PCRE-Perl-Compatible Regular Expressions
¨KJS-Javascript Kernel
¨WTF-KDE 的 C++ 模板 库
Unicode unicode 库
Tools tools 库
CURL-url 客 户 端 传输库
PlatForm- 与 平台相 关 的功能 , 如 图 形 图 像 , 字体 ,Unicode, IO, 输 入法等 .
2. 解析流程
1. CURL 获 得 网 站的stream
2. 解析 划 分字符串
3. 通 过 Dom Builder 按合法 的html 规 范生成Dom 树
4. 如果有javascript ,JSEngine 就通 过 ECMA-262 标 准完善Dom 树
5. 把Dom 传给 LayoutEngine, 进 行布局,如果有CSS 样 式,就通 过 CSSParser 解析。
6. 最后Rendering out 出 来
3. 浏览 器系 统结构
浏览 器系 统结构图 分 为 四 层
第一 层为业务应 用 层 ,用 户 可在webkit 基 础 上 构 建各 种应 用。
第二 层为插 件及第三方 库 。
第三 层为 webkit 平台Porting 所 需的接口 层 。
第四 层为 平台和操作系 统 支持 层 ,提供webkit 平台所需的 软 硬件 资 源。
四.各 种浏览 器比 较 分析
1. 网页浏览 器列表
引擎 |
网页浏览 器 |
Trident |
Internet Explorer ,傲游,世界之窗 浏览 器,Avant , 腾讯 TT , Netscape ,NetCaptor ,Sleipnir ,GOSURF ,GreenBrowser ,KKman |
Gecko |
Fennec,Firefox, 网 景(6 至9 ), SeaMonkey,Camino,Flock, Galeon,K-Meleon,Minimo,Mozilla,Sleipnir,Songbird , XeroBank |
KHTML 或WebKit 框 架 |
Safari,Konqueror,Epiphany,Google Chrome,iCab,OmniWeb,Midori,Shiira |
Presto |
Opera, 任天堂DS 浏览 器 |
Java |
HotJava,Opera Mini,UCWEB |
Tasman |
Internet Explorer for Mac,MSN for Mac OS X |
文字界面 |
Lynx,Links,w3m |
嵌入式系 统 |
Internet Explorer Mobile, Minimo,Opera Mobile ,PSP 浏览 器 |
其 它 |
Amaya , Dillo ,Mosaic |
Trident
又 称为 MSHTML ,是微 软 的 视 窗操作系 统 (Windows ) 搭 载 的 网页浏览 器—Internet Explorer 的排版引擎的名 称 , 它 的第一 个 版本 随 着1997 年10 月Internet Explorer 第四版 释 出,之后不 断 的加入新的技 术并随 着新版本的Internet Explorer 释 出。在最新的Internet Explorer 第七版中,微 软将对 Trident 排版引擎做了的重大的 变动 ,除了加入新的技 术 之外, 并 增加 对网页标 准的支持。 尽 管 这 些 变动 已 经 在相 当 大的程度上落后了其 它 的排版引擎,如Gecko 、WebCore 、KHTML 及Presto 。
Gecko
是套 开 放源代 码 的、以C++ 编写 的 网页 排版引擎。目前 为 Mozilla 家族 网页浏览 器以及Netscape 6 以后版本 浏览 器所使用。 这软 件原本是由 网 景通 讯 公司 开发 的, 现 在 则 由Mozilla 基金 会维护 。 这 套排版引擎提供了一 个 丰富的程序界面以供互 联网 相 关 的 应 用程式使用,例如 网页浏览 器、HTML 编辑 器、客 户 端/ 服 务 器等等。 虽 然最初的主要 对 象是Mozilla 的 衍生 产 品,如Netscape 和Mozilla Firefox , 现 在已有很多其他 软 件 现 在利用 这个 排版引擎。Gecko 是跨平台的,能在Microsoft Windows 、Linux 和Mac OS X 等主要操作系 统 上 运 行。
KHTML
KDE 系 统 自KDE2 版起,在KDE 的新程式Konqueror 的 网页浏览 器使用了KHTML 引 擎。 该 引擎以C++ 编 程 语 言所 写 , 并 以LGPL 授 权 ,支援大多 数网页浏览标 准。由于微 软 的Internet Explorer 的占有率相 当 高,不少以FrontPage 制作的 网页 均包含只有IE 才 能 读 取的非 标 准 语 法, 为 了使KHTML 引 擎可呈 现 的 网页达 到最多,部分IE 专属 的 语 法也一 并 支援。KHTML 拥 有速度快捷的 优 点,但 对错误语 法的容忍度 则 比Mozilla 产 品所使用的Gecko 引 擎小。
Presto
是一 个 由Opera Software 开发 的 浏览 器排版引擎,供Opera 7.0~9.60 版使用。Presto 取代 了 旧 版Opera 4 至6 版本使用的Elektra 排 版引擎,包括加入 动态 功能,例如 网页 或其部分可 随 着DOM 及Script 语 法的事件而重新排版。Presto 在推出后不 断 有更新版本推出,使不少 错误 得以修正,以及 阅读 Javascript 效能得以最佳化。
Tasman
是微 软 的Internet Explorer for Mac 浏览 器所使用的排版引擎,也是 为尝试 支援W3C 所 制定的 网页标 准而 设计 的。在Tasman 推 出 时 ,一度是最切合HTML 及CSS 等 标 准的排版引擎。 现时 微 软 方面也停止 为 Internet Explorer for Mac 提供支援,但新版本的Tasman 引擎仍被 应 用在一些微 软产 品上
2. 浏览参数 性能比 较
2008 年ZDnet 用了7 页 的 报 告比 较 了世界上最流行的4 个浏览 器:IE ,Firefox ,Opera ,Safari 。 它 使用了iBench 和SunSpider 作性能基准 测试软 件。 这 里我 们 摘取其部分有用 数 据, 进 行比 较 。
iBench
是一款 应 用广泛、跨平台基准 测试 程序, 它 能 够检测 各 种 Web 客 户 端 应 用 网络 新技 术时 的所表 现 出 来 的性能 数 据。 这 里的Web 客 户 端是指任何用于 从网 上 获 取信息的硬件和 软 件,不 论 使用T1 连 接互 联网 Macintosh 电脑 、无 线 掌上 设备 、 运 行Linux 接 收Web TV 的台式机都在其中。程序 将对这 些 设备进 行一系列 测试 ,得出易用特性和 网 速 对应 用的影 响 程度。
SunSpider
一 个 JavaScript 的基准。 这个 基准 测试 核心的JavaScript 语 言, 并 非 测试 DOM 或其他 浏览 器的API 的 。 它 的目的是比 较 不同版本的同一 浏览 器,以及不同的 浏览 器之 间 的比 较 。是广泛使用的JavaScript 的基准。
iBench5.0 的XML/CSS 和HTML 的下 载结 果可以看出Safari 和Firefox 表 现 都不 错 ,IE 和Opera 表 现 其次。
iBench5.0 的JavaScript 的 测试 性能上看,Safari ,opera 和Firefox 都表 现 不 错 ,IE 明 显 落后。
以上 为 SunSpider 测试 出的 综 合指 标 ,越小越好。明 显 可以看出,Firefox 和Safari 表 现 比 较 好,Opera 其 实 ,IE 比 较 落后。一下是SunSpider 测试个参数详细列表:
3. 浏览 器使用率分析
全球 浏览 器使用分布
日期 |
Internet Explorer |
Firefox |
Opera |
Safari |
Q4 2008 |
70.53% |
20.35% |
0.73% |
6.84% |
Q3 2008 |
72.22% |
19.48% |
0.71% |
6.39% |
Q2 2008 |
73.81% |
18.43% |
0.71% |
6.14% |
Q1 2008 |
75.06% |
17.35% |
0.67% |
5.78% |
Q4 2007 |
77.37% |
15.84% |
0.62% |
5.24% |
Q3 2007 |
78.85% |
14.69% |
0.51% |
4.80% |
Q2 2007 |
78.76% |
14.92% |
0.46% |
4.66% |
Q1 2007 |
79.38% |
14.35% |
0.50% |
4.70% |
Q4 2006 |
80.69% |
13.50% |
0.56% |
4.06% |
Q3 2006 |
82.88% |
11.89% |
0.62% |
3.30% |
Q2 2006 |
84.03% |
10.67% |
0.57% |
3.25% |
Q1 2006 |
85.01% |
9.77% |
0.53% |
3.10% |
Q4 2005 |
85.88% |
9.00% |
0.54% |
2.80% |
Q3 2005 |
86.74% |
7.97% |
0.55% |
2.24% |
Q2 2005 |
87.24% |
8.08% |
0.52% |
1.89% |
Q1 2005 |
89.02% |
6.17% |
0.49% |
1.70% |
Q4 2004 |
91.35% |
3.66% |
0.51% |
1.50% |
增 长 率: |
-27.91% |
229.82% |
43.13% |
356% |
(由 TheCounter.com Global Statistics 所提供的 资 料)
4.WebKit 的SWOT 分 析
优势(Strengths )
通过测试结果WebKit 的 性能优越是其最大的优势,再加上其开源项目。性能优越加开源这两大优势,是目前很多嵌入式产品选择他的原因。
劣势(Weaknesses )
因为开源,代码并不是最新的,都是Apple 和KDE 的更新产品。代码有滞后性。开发周期 较长和人力投入比较大,毕竟代码量大,复杂度高。
机会(Opportunities )
随着通讯技术的发展,以后的手持设备基本都配有 上网功能。但目前嵌入式设备上的浏览器还是只有竞争时期,这是一个很好的机遇。如果在做出优秀的适应嵌入式的浏览器,将能成为这一浪潮的弄潮儿。
威胁( Threats )
大蛋糕大家都想要,腾讯,google 等 都开始推出自己的浏览器。
嵌入式方面Opera, Access 等公司都在努力扩张直接的市场,一些大公司也直 接晚上WebKit 推到直接的平台上,Apple,Android,NOKI 等 都在自己的手机上推出WebKit 的浏览器,可见其竞争是非常激烈度。
五.浏览器的未来
1. 微软的梦魇
基于WebKit 引 擎的Safari for Win 已经推出,我们可以发现Safari 除 了推广WebKit 引擎之外,实际上有着大得多的野心。
Safari ,如果只是为了推广WebKit 引擎的话,Win 平台上已经有了Swift 可用,Safari 只能说是加强推广力度罢 了,顶多算 是让Windows 用户尝尝正宗的苹果味。可我们看看Safari 安装文件将近30M 的夸张身材,就会意识到Apple 肯定搞了小动作。打开 Safari ,我们 很快就能发现它实现了很多非Win 的UI 特 性:动画卷轴菜单,Mac 风格的次像素字体渲染,网页对象或标签拖动时显示的半透明缩略图等等。再 进入它的安装目录,一切真相大白!
原来Safari 不 仅引入了WebKit 引擎,更是一举捆绑了Core Foundation(OS X 的系统级C 语言API) ,CFnetwork (OS X 的网络接口API ),Core Graphics( 就是Quartz 2D, 一个矢量构图框架,OS X 图 形界面的基石) ,当然还不忘对于Bonjour 更 完善的应用支持。
可以这样说,如果在iTunes 上Apple 还有所保留的话,在Safari 上它就表现 得相当咄咄逼人了,它几乎把OS X 一半的重要Framework 都 照搬到了Windows 上!!!目的我想应该是再明显不过了吧。你可以想象将来的Wintel 机器看起来跑的是Vista 但实际上OS X API 一个不缺吗?你可以想象将来程序员只需要使用Xcode 编 程就可以让程序原生运行在OS X/Linux/Windows 上吗?我们说的不是Java 虚拟机或者什么Sandbox ,我们说的是性能 无损的Objective-C Binary!
Safari 下一版即将引入本地SQLite 支持,不难想象iTunes 也开始采用WebKit 引擎并将目前是XML 格式的 Library 转用更强大的SQLite 存储,再下一 步呢?Core Animation 库取代Direct 3D 来支援CoverFlow? 再下一步呢? Cocoa Universal for Windows? Maybe? Why not? 这种环环相扣的应用带来了巨大的压迫感。渗透,渗透,再渗透!Apple 将会已浏览器为跳板,取代Windows 成为 真正的平台。
2. 云端技术的发展
云计算(cloud computing ),是分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多 部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息, 达到和“超级计算机”同样强大效能的网络服务。
最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱 等,使用者只要输入简单指令即能得到大量信息。未来如手机、GPS 等行动装置都可以透过云计算技 术,发展出更多的应用服务。
云端储存(cloud storage )是一种将数据保存在虚拟服务器上的数据类型,通常意义上,数据存储在第三方媒介,而非特定单一服务器上。
3. 浏览器的未来
浏览器未来可望取代目前的操作平台将成为趋势。随着计算机、手机及连网装 置也普及,未来终端运算都会在云端执行。目前计算机用户有9 成的行为是在网络或靠着浏览器就可以完 成,未来可能会再进一步提升到95 %或更高。人们拥有一个强大功能的浏览器,就能满足平时工作生活 的需要。在此情况下,浏览器就是未来的操作平台系统。