浏览器设计与实现论文Word文件下载.docx
- 文档编号:5904702
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:57
- 大小:290.57KB
浏览器设计与实现论文Word文件下载.docx
《浏览器设计与实现论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《浏览器设计与实现论文Word文件下载.docx(57页珍藏版)》请在冰点文库上搜索。
第二章HTML词法分析器的设计及其应用……………12
2.1BitToken的组成及其功能………………………………12
2.2数据结构……………………………………………………12
2.3算法…………………………………………………………13
2.4词法分析结果示意……………………………………………15
2.5HTML词法分析的应用………………………………………15
第三章浏览器JavaScript支持的实现…………………18
3.1基本的JavaScript开发环境………………………………18
3.2JavaScriptEngine…………………………………………18
3.3JavaScript与浏览器接合…………………………………19
3.4浏览器消息响应……………………………………………21
第四章Linux程序开发技术及GTK图形程序开发……23
4.1Linux下的程序开发环境……………………………………23
4.2GTK图形程序开发……………………………………………29
第五章Netbit浏览器开发与分析………………………31
5.1Netbit浏览器简介…………………………………………31
5.2NetbitBrowser浏览器各部份的功能……………………31
5.3界面模块………………………………………………………32
5.4控制模块………………………………………………………34
5.5词法分析模块…………………………………………………34
5.6使用PIXMAP的画图模块………………………………………35
5.7文本文件的显示模块…………………………………………36
5.8HTML文件的显示模块………………………………………37
5.9Netbit实际应用效果及比较………………………………40
5.10NetbitBrowser的缺点分析及改进办法…………………44
5.11NetbitBrowser未来的展望………………………………48
第六章其它浏览器分析……………………………………50
6.1Dillo(Gzilla)浏览器分析………………………………50
6.2Thunder浏览器分析…………………………………………55
6.3Mozilla浏览器分析…………………………………………56
6.4ZEN浏览器分析………………………………………………57
6.5浏览器分析工作的总结………………………………………58
致谢……………………………………………………………60
参考文献表………………………………………………………61
引言
随着计算机、网络技术的迅猛发展,新型的高科技含量的电子产品层出不穷,遍及家电、生产、军事等各个领域。
嵌入式系统因其体积小,速度快而受到重视。
在掌上电脑、PDA、手机、导航设备、信息家电领域嵌入式系统被广泛采用,这也是近期产品研发的热点。
嵌入式浏览器作为重要的嵌入式系统应用软件,是不可或缺的。
但目前,嵌入式浏览器产品的市场被少数国外大公司垄断,众多的小型嵌入式浏览器也尚处于发展期,而国内的自主技术的嵌入式浏览器更屈指可数,刚刚进入实用阶段。
迫切需要更多的人来关注嵌入式浏览器技术,开发中国自主知识产权的浏览器产品。
本文阐述了嵌入式浏览器开发的关键技术,并详细说明NetbitBrowser的实际开发过程,技术细节。
并以网站的方式公布了其源代码,为国内嵌入式浏览器的发展做了有益的尝试。
第一章嵌入式浏览器设计概述
1.1目前嵌入式浏览器产品的发展现状
1.1.1桌面浏览器简介及其与嵌入式浏览器的区别:
常见的桌面浏览器有微软的InternetExplorer,网景的Netscape,开放源码的Mozilla,以及opera,mosaic,Hotjava,字符模式的lynx等。
其中IE,Opera已有嵌入式版本,以上的大多数浏览器均有跨多平台的版本。
这些桌面型浏览器功能参差不齐,但大多能实现基本的浏览功能。
其中IE与Netscape对HTML页面的显示效果均堪称完美(对于XML,WML等标准的网页浏览,本文不予讨论)。
与完美的浏览效果,功能丰富,支持多种媒体格式和视音频插件等优点形成对立的是,这些浏览器庞大的体积和对机器配置的高要求。
这也是桌面浏览器和嵌入式浏览器最大的区别。
另外,桌面型浏览器通常是基于通用的操作系统,用于桌面电脑如PC机、MAC机等。
而嵌入式浏览器通常基于专用系统。
需要指出的是,我们在网上常看到的一些所谓的优秀浏览器,如Netcaptor,魔装网神,腾讯,飓风,Fantasia,金山WPSoffice的浏览器等等,均为使用IE内核的浏览器,使用了多页面多线程的方式,降低了系统资源的耗费,方便了浏览,但软件本身没有多少技术可言,可以用Delphi,VB等工具轻易开发出来(如果不要求完善的功能,只需简单到拖一个IE控件过去就行了),这也体现了微软的COM+及ActiveX技术的强大。
1.1.2常见嵌入式浏览器
(1)InternetExplorerforWinCE,是IE的WindowsCE版,这也意味着用户为了使用它,必须选用基于WinCE平台的产品,随着微软势力在掌上终端领域的蔓延,WinCE版的IE必将大行其道。
(2)AccessNetfront,Access是日本的浏览器大厂,占据了大部份的日本浏览器市场,其产品广泛应用于手持设备、机顶盒、游戏机等产品。
其新推出的NetfrontLinux版本可以免费下载,网址是:
http:
//www.access.co.jp/product/develop。
经试用,发现Netfront浏览效果非常好,对中文的支持和表格的显示效果,甚至超过Netscape4.6forLinux。
而且支持键盘操作。
可以使用箭头键来选择网址进行跳转。
但显然为了简化设计,Netfront使用了一定的权宜手段。
比如它不支持使用<
font>
标记来设置字体,也不支持样式表,所有字体的大小是固定的,但一般情况不易发现,不过由于Linux版本不是商业性版本,无法就此推断其他版本的特性。
NetfrontLinux版大小为1.9M,如再加以简化(比如去掉一些图片按钮)可以做的更小。
(3)Gzilla,现名Dillo,是基于Linux,使用GTK作为GUI平台开发的浏览器,其开发目的也包含嵌入式的应用。
是开放源码项目。
我们在设计NetbitBrowser时主要参考了该浏览器的界面设计。
该浏览器的缺点是不支持表格,布局过于简单,不支持中文,浏览效果比较差,优点是网络功能完善,支持cache缓冲,能够支持多种图片格式。
网址是:
。
(4)Viewml,使用FLTK作为GUI平台开发的浏览器,主要面向嵌入式的应用。
使用C++面向对象的设计。
因为使用FLTK,所以可以在嵌入式的MicroWindow平台运行,该浏览器支持简单的表格,界面还没有做(只有一个主窗口),不支持中文,由于FLTK的BUG比较多,我们在实际编译时经常出错,即使编译通过,也常常是还没运行就coredump了,但曾经由某人编译成功,基本可用,网址是:
(5)ZEN,一个并不知名的嵌入式浏览器,但却十分优秀,开放源码项目,不仅支持表格,支持多种图像格式,而且在设计上很有特色,将涉及到GUI平台的部分独立出来,用户可以指定不同的GUI平台运行,内置了对字符,SVGA和GTK的支持,开发这只需按照相应规范编写该软件的涉及GUI的部份,就可以将其移植到其它GUI平台,而无须对整个软件进行修改。
缺点是网络功能比较弱,不支持多线程,另外其必须等到所有图片下载完毕才开始布局,若某文件传输失败则会导致死锁,需用户中断。
//www.nocrew.org/software/zen/。
以上主要介绍了开放源码的嵌入式浏览器,因为其对本项目具有实际的参考价值。
1.1.3嵌入式浏览器的应用领域
嵌入式浏览器主要应用于手持终端和信息家电,例如掌上电脑、3G手机、网络机顶盒、具有网络功能的其它家电,如可上网的电冰箱等,另外,在军事等领域也有一定的应用需求。
1.2嵌入式浏览器的组成和各部份功能说明
下面简介主要的组成部份,其设计原理后面将进行专门论述。
1.2.1词法分析
主要是针对HTML进行词法分析,该词法分析器实际是通用的,还可用于XML、WML的词法分析,只需替换元素名称即可。
HTML词法分析是浏览器设计的基础环节之一,也是整个设计过程中重要的前端工作,其数据结构的拟定与接下来的语法分析和布局算法密切相关,词法分析的效率与准确性、容错性也关系到整个浏览器设计的质量。
1.2.2语法分析
在大型的浏览器中,语法分析通常是独立的模块,但在嵌入式浏览器中,语法分析通常是与布局混合在一起的,即一边进行语法分析,一边布局,不设立相应的数据结构来存储语法分析的结果。
语法分析对布局的算法有直接的指导意义。
1.2.3布局
本文中的布局应理解为界面输出前的预演和处理位置等信息的算法,而不是具体的画图和界面输出。
布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据GUI所能实现的输出效果来设计的,所以,GUI往往成为系统的瓶颈,如果GUI提供的支持有限,即使有再好的布局算法,也是纸上谈兵,无用武之地。
1.2.4GUI及软件界面
GUI是指图形用户界面,浏览器无疑是一个图形函数库的大需求者,选择好的GUI环境实属不易,为了能够实现专有的功能,浏览器开发者往往还要对基础的GUI库进行包装、改写,甚至写自己的控件。
所有这些,是需要有专业的GUI库开发经验的专职人员来完成。
GUI的功劳第一在于软件的操作界面,如窗口、菜单、工具条、滚动条等。
第二在于主浏览窗体中的图形元素的输出(通常以自画控件的方式)。
前者通常直接使用GUI库中的已有控件,编程难度很小,后者主要利用基本的点线函数,编程难度比较大。
1.2.5JavaScript支持
实际上JavaScript的编译器是开放源码的,而且全世界通用,包括IE、Mozilla、Netscape等浏览器都使用相同的JavaScript的编译器,但为何其对JavaScript的支持不尽相同呢,这是因为JavaScript在浏览器里主要是用于操纵界面元素和与浏览器内部命令进行结合。
这实际上是程序员努力的结果,而不是JavaScript编译器的功劳。
这其中的机制将在后面专门介绍。
1.2.6IO
主要是指通过HTTP协议或文件系统来读取网页内容,网络部份超出了本论文的讨论范围,不予详述,后面将介绍与网络部份的接口。
以上主要按工作的性质进行分类,介绍了浏览器设计的主要几个部份,但与实际开发工作的人员划分不同,实际工作要考虑人员的实际能力和经验,结合要实现的目标,对各部份的投入也有轻重缓急之分,比如,如果没有词法分析的先行实现,语法分析与布局都是纸上谈兵。
GUI平台不确定,布局工作也无法展开。
1.3开发难度分析
我们也可以看到,要设计效果较好的浏览器产品,决不是三五个人、两三条枪就能办到的,参与工作的人员不仅需要有相关经验,还需要有一定的投入,一方面对程序员艰苦的工作给予鼓励,另一方面也可能需要购买一些成熟的开发包,在基础的开发平台、测试平台上也要有一定的投资,总的来说,开发自主技术的浏览器产品是有一定的风险的,这也是国内目前相关产品为数不多的原因。
国外大公司在相关领域的科研与实践已很成熟,在大量投入之后,其产品已为广大用户所接受,国内的企业若从零做起,也很难追赶。
因而买断技术,加以改进也可以成为快速成长的一条道路。
1.4开发的前期策划
以下的工作均是建立在大量的调查基础上的。
是浏览器开发前期准备工作所解决的问题。
1.4.1平台的选取
目前的商业化嵌入式操作系统功能完善,但使用费用高昂,使用Linux内核的嵌入式操作系统不仅功能强大,便于开发移植,而且费用低廉,基于Linux的嵌入式系统已日渐成熟,也有相应的窗口系统可以使用,我们使用PC上的Linux来进行浏览器开发,是再好不过的了,软件从PC移植到嵌入式设备只需重新编译一下就可以了(前提是使用的函数库、开发包同时具有PC和嵌入式的版本)。
1.4.2GUI的选取
GUI的选取是颇费脑筋的问题,一方面要考虑嵌入式系统是否有对应的版本,一方面要考虑该GUI的功能是否足够实用。
目前常见的基于Linux的GUI开发包主要有GTK、FLTK、QT、KDE等,其中FLTK有MicroWindow的版本,是比较好的选择,但使用FLTK开发的软件还比较少,对于初学者进入的难度更大,而且目前BUG较多,而GTK比较成熟,使用GTK的软件比比皆是,资料也很丰富,我们的参考对象Gzilla也使用GTK,也就是说如果使用GTK,将有很好的原型进行参考,这使得GTK对于目前毫无GUI开发经验的浏览器开发组而言,充满了巨大的诱惑。
考虑到GUI是可以成为独立模块的,如浏览器ZEN的设计,我们决定使用GTK,待时机成熟可换用其它平台,也并非难事。
在前期,我们也对FLTK加以了研究,还尝试了以FLTK为基础构建GUI中间层的办法,但由于工作量巨大,初步估算需2万行程序,而不得不暂缓该计划。
建立GUI中间层在理论上是可行的,这样,在必要时可以釜底抽薪,替换掉基础的GUI平台,应用软件完全不需修改,但中间层与基础层的接口要重写,其工作量也很大,未必是核算的买卖。
1.4.3确定要实现的基本功能
鉴于对浏览器开发难度的充分考虑,以及现有人员的水平,拟定实现以下功能,以及需要考虑但暂不予实现的功能。
需要实现的包括:
(1)界面:
包括窗口,菜单,输入框,工具条,滚动条等的支持。
(2)词法分析:
必须实现实用的HTML词法分析,支持HTML4.0全部元素。
(3)实现简单网页的布局:
实现对简单网页的查看。
(4)支持基本IO,支持采用线程的网络传输。
需要考虑的功能:
(1)JavaScript支持
(2)汉字支持
(3)图片格式支持
(4)表单支持
(5)页面元素的消息响应
1.4.4人员分工
由于情况的变动,造成了人员比较紧张,在前期准备工作中,人力充沛,使得收集的资料比较完备,打下了较好的基础。
在后期简化了目标,虽然人员减少,但也能够实现主要的工作。
考虑到网络是比较独立的部份,把它分出去由专人负责。
第二章HTML词法分析器的设计及其应用
下面将介绍一个HTML词法分析器——BitToken的设计思路。
BitToken是NetbitBrowser的HTML词法分析器,使用标准C编程,NetbitBrowser是基于Linux/Gtk的浏览器,开放源码项目,网址是http:
//netbit_。
2.1BitToken的组成及其功能
BitToken作为NetbitBrowser的词法分析部份,负责对接收的HTML代码进行词法分析,主要的目的是提取网页中元素的名称及其属性,并以恰当的形式(即按一定的数据结构)加以保存,也就是完成了将数据流离散化、结构化的过程。
主要由以下几个部分组成:
1、初始化:
完成对数据结构的初始化,主要是分配内存,变量赋初值。
2、主体的数据流分析:
逐字符的进行判断,确定数据的归属类型。
3、元素的分析:
提取元素的名称、属性和值域。
4、释放:
主要是对内存的释放。
2.2数据结构
typedefstructBitTokenContext
{char*strBuffer;
//当前正在处理的HTML代码
intbufferLength;
intcurPosition;
char*global_strBuffer;
//全局HTML代码
intglobal_bufferLength;
intglobal_curPosition;
BitTokenList*tokenList;
//元素节点链表
BitTokenList*tokenList_tail;
BitPTagListpTagList;
//元素名称表,指向静态数据
}BitTokenContext,*BitPTokenContext;
BitTokenContext是用于存储当前待分析网页全局属性的数据结构,其中TokenList是核心的元素节点链表。
词法分析的目的就是生成这样一个链表。
下面给出该链表的数据结构,是很简单的双向链表。
typedefstructTokenList
{BitToken*token;
//元素节点
structTokenList*priou;
structTokenList*next;
}BitTokenList,*BitPTokenList;
以下是元素节点的数据结构:
typedefstructBitToken
{inttype;
//节点类型,如定义的HTML_BODY,HTML_TXT等。
char*pData;
//如果是HTML_TXT型元素,则为其内容,否则为空
BOOLend;
//是否是结束元素,如<
/body>
BitTokenAttrList*attrList;
//元素属性链表,因为可能有多个属性,所以使用链表存储
BitTokenAttrList*attrList_tail;
}BitToken,*BitPToken;
请注意,以上出现tail标记的指针变量,如BitTokenList*tokenList_tail等,其作用是用于保存链表结尾节点指针,便于在释放内存时,直接找到链尾,提高了算法的效率。
2.3算法
2.3.1基本算法:
首先介绍基本的算法:
(1)从存储网页的字符串中,顺序读入一个字符
(2)如果遇到<
,认为遇到TAG(元素),处理该元素,使用函数Token_ConsumTag(),处理完毕后,指针移到该元素尾。
(3)如果遇到回车、空格,则跳过。
(4)如果遇到>
,则跳过(不应该出现此情况,为了容错)。
(5)如果非以上情况,则认为遇到文字,处理这段文字,使用函数Token_Consum_PlainText()。
处理完毕,指针指向下一个元素首。
(6)循环以上操作,直到该网页分析完毕。
由此看来,主算法十分简单而清晰,主要是Token_ConsumTag()和Token_Consum_PlainText()这两个函数起关键作用,由于其中涉及到许多细节问题,此处不予详述。
2.3.2算法效率与改进:
采用以上的基本算法,是可用的,但当网页比较大的时候,比如600K,该算法的效率成倍下降,这主要是由于要处理的字符串太大,在内存中完成查找、替换、复制、移动等操作,响应时间明显下降。
对此的改进办法就是分段进行词法分析,不仅极大的提高了效率(在某些情况下约提高30倍),也有利于浏览器整体设计,因为当网页较大时,若等待全部内容传输完毕,再一次性完成词法分析和布局,用户会感到等待时间过长,一般现在成熟的浏览器都采用边传输,边分析,边显示。
分段进行词法分析的算法复杂度明显增加,比如,当每段定为1024字节,在第1024字节处,可能正好将一个完整元素截断,按常规分析方法会造成错误。
解决的办法是,采用回溯,确认要分析的部份至少包含1个完整元素。
具体做法是:
判断1024字节处是否为元素结束字符‘>
’,如果不是,则判断前一个字节,直到找到元素结束字符为止,这样可保证至少包含一个元素。
采用分段进行词法分析,实际每次分析的代码会不足1024字节,余下的部份汇入到下一段的分析过程即可,直到所有内容被分析完毕。
2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浏览器 设计 实现 论文