内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第1页WebKitWebKitWebKitWebKit研研研研究究究究报报报报告告告告侯侯侯侯炯炯炯炯二零零八年十二月二十六二零零八年十二月二十六二零零八年十二月二十六二零零八年十二月二十六内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第2页目目目目录录录录一.Webkit介绍..............................3二.Webkit编译详解..........................51.依赖库及介绍............................52.X11+Gtk+WebKit交叉编译详解..............73.编译出错Q&A:..........................12三.WebKit分析.............................141.体系结构...............................142.解析流程...............................163.浏览器系统结构.........................17四.各种浏览器比较分析......................181.网页浏览器列表.........................182.浏览参数性能比较.......................203.浏览器使用率分析.......................254.WebKit的SWOT分析......................26五.浏览器的未来............................271.微软的梦魇.............................272.云端技术的发展.........................283.浏览器的未来...........................29内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第3页一一一一....WebkitWebkitWebkitWebkit介介介介绍绍绍绍WebKit的前身是KDE小组的KHTML。Apple将KHTML发扬光大,推出了装备KHTML改进型的WebKit引擎的浏览器Safari,获得了非常好的反响。WebKit内核在手机上的应用十分广泛,例如Google的手机Gphone、Apple的iPhone,Nokia’sSeries60browser等所使用的Browser内核引擎,都是基于WebKit。现在浏览器的内核引擎,基本上是三分天下:Trident:IE以Trident作为内核引擎。Gecko:Firefox是基于Gecko开发。WebKit:Safari,GoogleChrome基于Webkit开发。WebKit支持功能:HTML4.0/5.0CSS1&2Dom1&2ECMA262JS1-6HTTP/FILEGIF/JPEG/PNG内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第4页XMLSSL3JVMFTPSVG可缩放矢量图形(ScalableVectorGraphics)RSS2.0(RDFSiteSummary)浏览器的选型:1。Geocko功能强,但太庞大2。Opera功能强,但要钱3。Ipanel功能一般,也要钱4。Ants功能一般,还是要钱5。WebKit功能强,不要钱,呵呵就这个(有nokia,apple,google为例),它属于LGPLandBSDlicenses.内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第5页二二二二....WebkitWebkitWebkitWebkit编译详编译详编译详编译详解解解解1.1.1.1.依依依依赖库赖库赖库赖库及介及介及介及介绍绍绍绍libiculibiculibiculibicu----devdevdevdevICU是一个成熟,广泛使用的一套为C/C++和Java库提供Unicode的全球化支持软件。ICU广泛的应用在便携式设备上,并给出相同的结果在所有平台之间的C/C++和Java软件。libxsltlibxsltlibxsltlibxslt----devdevdevdevXSLT的英文标准名称为eXtensibleStylesheetLanguageTransformation。根据W3C的规范说明书(),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:XSLT是一种用来转换XML文档结构的语言。libcurllibcurllibcurllibcurl----devdevdevdevcURL是一个利用URL语法的文件传输工具,是基于libcurl的前端命令行工具。它支持很多协议:FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE以及LDAP。它同样支持HTTPS认证,HTTPPOST方法,HTTPPUT方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(proxytunneling),甚至它还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第6页libsqlite3libsqlite3libsqlite3libsqlite3----devdevdevdevSQLite是实现了SQL92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.功能一定程度上居于MySQL和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍(甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信.libjpeg62libjpeg62libjpeg62libjpeg62----devdevdevdevlibjpeg软件包包含jpeg库.这些库使图形文件在联合图象专家组的标准上压缩.它是一种有损耗的压缩算法.libpng12-devlibpng软件包包含libpng库.这些库被其他程序用于读写png文件gperfgperfgperfgperf'gperf'是一个用C++编写的完美的hash函数生成器.它通过一个完美的hash函数F转换一个含有N元素的用户特定关键字集合到集合W.F唯一映射关键字到W的0..K范围,其中K=N如果K=N那么F就是最小化的完美hash函数.'gperf'生成一个0..K元素的静态查找表和一对C函数.这些函数决定一个给定的字符串S是否在集合W中,通过只多一次的查找.'gperf'普遍用于为多个商业编译器,研究型编译器,语言处理工具的词法分析器生成一个关键字识别器.这些编译器包括GNUC,GNU内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第7页C++,GNUPascal,GNUModula3,和GNUindent.完整的'gperf'C++源代码可以通过匿名ftp`ics.uci.edu'和`ftp.santafe.edu'得到.'gperf'已经随GNUlibg++一起发布好几年了flexflexflexflex快速词法分析器发生器BisonBisonBisonBisonGNU项目分析器GUIGUIGUIGUI支持多种GUI,包括gtk,qt,mac,win等.linux,windows,Mac都能运行。2.X11+Gtk+WebKit2.X11+Gtk+WebKit2.X11+Gtk+WebKit2.X11+Gtk+WebKit交叉交叉交叉交叉编译详编译详编译详编译详解解解解编译列表:NameVersionlibpng1.2.10pkg-config0.23gperf3.0.3Tiff3.8.2libjpeg6bfreetype2.1.10libxml22.6.30fontconfig2.4.2内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第8页XFree864.7.0glib2.18.0atk1.20.0cairo1.2.0pango1.20.0gtk+2.14.0ICU4c-3_6xslt1.1.22curl7.19.2sqlite3.5.6WebKitr29711ThecrosssourceThecrosssourceThecrosssourceThecrosssource::::exportARCH=armexportCC=iwmmxt_le-gccexportCXX=iwmmxt_le-gccexportBUILD_ROOT=/uplatformexportPATH=/opt/montavista/cee/devkit/arm/iwmmxt_le/bin/:/opt/montavista/cee/host/bin/:$BUILD_ROOT/usr/bin:$PATHexportPKG_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环境变量中内部公开InternalUseOnly▲以上所有信息均为中兴通讯股份有限公司所有,不得外传AllRightsreserved,NoSpreadingabroadwithoutPermissionofZTE第9页LLLLibpngibpngibpngibpngethoac_cv_fnuc_malloc_O_nonull=yes$ARCH-linux.cache./configure--prefix=/$BUILD_ROOT/usr--host=$ARCH-linuxmake&&makeinstallpkgpkgpkgpkg----configconfigconfigconfig./configuremake&&makeinstall应为需