五千年(敝帚自珍)

主题:【原创】漫谈浏览器大战 -- (构架篇) -- Highway

共:💬46 🌺488
全看分页树展 · 主题 跟帖
家园 【原创】乱弹浏览器大战(1.2.3......)

乱弹浏览器大战(1.2.3......)

1.如果说“最火爆的两个战场就是手机OS和新一代的浏览器了(楼主语)”,那么最最火爆的是什么?

没错,新一代的手机浏览器。这么说吧,如果手机(包括平板电脑)厂商没有一个TEAM(可大可小)专攻移动浏览器,这个手机相关厂商在业内的位置都算不上十分重要。这个名单包括:

A.浏览器技术公司:

Apple(Webkit项目拥有者,Safari浏览器和移动浏览器)

Google(Chromium项目拥有者, Chrome浏览器和Android移动浏览器),

MS(Trident引擎, IE浏览器和移动浏览器)

Mozila(Gecko项目拥有者, Firefox浏览器和Fennec移动浏览器)

Opera(Presto引擎,Opera浏览器,Opera Mini浏览器,Opera Mobile浏览器)

至于国内,有UCWEB和Maxthon。

B.手机厂商

HP(WebOS浏览器基于Webkit引擎)

RIM(基于Webkit引擎的浏览器,IRIS Team来自于收购的Torch Mobile company公司)

Nokia(Webkit On QT.另外收购过Novarra)

Motorola,HTC,Barnes & Noble(Nook Color),Amazon

C.手机芯片厂商

Qualcomm,MTK。(这些厂商的信息可以从他们的招聘广告推断,全是基于Webkit)。

2.由于开源项目,特别是Webkit项目和Chromium项目,发布一个商业浏览器或者拥有一个浏览器团队已经不再需要十分昂贵的成本。关键是拥有这样一个团队的目的和商业价值。从技术的角度看,除名单A中前5个公司拥有完整的浏览器技术,其它公司仅仅是利用名单A中前4个公司的技术方案,其技术难度按Apple ---》 Mozila ---》 MS ---》 Google的次序递减。因为Apple就是一个Webkit渲染引擎,浏览器开发团队必须自己实现浏览器框架,Mozila有完整的浏览器源码框架,MS有完整的浏览器及Trident引擎运行框架(shdovvw.dll与mshtml.dll,楼主的“浏览器”不过是通过COM调用了一下shdovvw.dll)。Chromium也是完整的浏览器源码,但是与Mozila比非常容易入门。使用Chromium或者Mozila项目都有有大量繁琐的文档替换工作,否则这个浏览器只能在私下里跑着玩。

处于二,三线的浏览器公司全面倒戈到Chromium已是潮流。北美有Flock(开始用Mozila方案),国内有Maxthon(开始用MS的shdovvw.dll后来用mshtml.dll)。至于新来的开始就拿Chromium上手,北美有Rockmelt,国内有搜狐。

3.Webkit是渲染引擎的总体名称,也是这个渲染引擎与“浏览器”之间的API接口的名称。在C++的命名空间,渲染引擎用WebCore,API才用Webkit。

如果设计一个基于Webkit的浏览器,有下列问题必须考虑(简单起见,不包括PLUGIN, ADDON问题)。

a.虚拟图形屏幕的实现,供Webkit画网页。

b.向Webkit提供用户输入的鼠标与键盘事件。

c.提供Webkit请求的网络资源.(HTTP与https请求,HTM, CSS, JS, COOKIE...等资源)

d.不同OS上物理/虚拟图形屏幕的转换,物理设备与Webkit鼠标与键盘事件的转换。

e.Webkit请求到网络SOCKET的转换,网络资源本地缓存管理。

f.浏览器GUI的设计,菜单,TAB。

g.浏览器的进程与线程模型。

h.JS引擎的替换(可以不做,Webkit有预置JS引擎)。

4.Chromium的设计优先策略第一是安全,第二是UX(用户体验).其多进程模型主要保证其安全性,其多线程模型才是保证用户体验的关键。多进程模型不仅耗用更多的内存,也耗用更多的CPU计算,比如一个鼠标/键盘事件要穿越4个线程,2个进程。

Chromium多线程模型保证了关键线程(如UI,网络,数据库,文件I/O)不被阻塞。很多地方不是Chromium真的快,而是Chromium显得快。

5.有名管道是Chromium进程交换数据最频繁的渠道(KB级别),但不是Chromium进程交换数据量最多的渠道。Chromium用进程共享内存交换屏幕图形数据(MB级别)。Chromium不用COM的原因主要是Chromium的设计目标是绿色安装(拷目录结构就可以了)。

6.Chromium并非喜欢PLUGIN运行在单独的进程,而是为了兼容旧的PLUGIN。Chromium喜欢PLUGIN运行在RENDER进程的沙箱内,不过目前的PLUGIN很多都做不到。

通宝推:ustcat,捷克,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河