浏览器开发(编辑修改稿)内容摘要:

„„„„„„„„„„„„„„„„„„„„12 算法 „„„„„„„„„„„„„„„„„„„„„„13 词法分析结果示意 „„„„„„„„„„„„„„„„„15 HTML 词法分析的应用 „„„„„„„„„„„„„„„15 第三章 浏 览 器 J a v a S c r i p t 支持的实现 „ „ „ „ „ „ „ 1 8 JavaScript 开发环境 „„„„„„„„„„„„18 JavaScript Engine „„„„„„„„„„„„„„„„18 JavaScript 与浏览器 接合 „„„„„„„„„„„„„ 19 浏览器消息响应 „„„„„„„„„„„„„„„„„ 21 第四章 Linux 程序开发技术及 GTK 图形程序开发 „„ 23 Linux下的程序开发环境 „„„„„„„„„„„„„„23 GTK图形程序开发 „„„„„„„„„„„„„„„„„29 4 第五章 Netbit浏览器开发与分析 „„„„„„„„„ 31 Netbit 浏览器简介 „„„„„„„„„„„„„„„„ 31 Netbit Browser 浏览器各部份的功能 „„„ „„„„„ 31 界面模块 „„„„„ „„„ „„„ „„„ „„„ „„„ „32 控制模块 „„„„„ „„„ „„„ „„„ „„„ „„„ „34 词法分析模块 „ „„„„„„„„„„„„„„„„„„34 PIXMAP的画图模块 „„„„„„„„„„„„„„„35 5 . 7 文 本 文 件 的 显 示 模块 „„„„„„„„„„„„„„„„36 HTML 文件的显示模块 „„„„„„„„„„„„„„„ 37 Netbit 实际应用效果及比较 „„„„„„„„„„„„ 40 Netbit Browser 的缺点分析及改进办法 „„„„„„„44 Netbit Browser 未来的展望 „„„„„„„„„„„„48 第六章 其它浏览器分析 „„„„„„„„„„„„„„ 50 Dillo(Gzilla)浏览器分析 „„„„„„„„„„„„ 50 Thunder 浏览器分析 „„„„„„„„„„„„„„„„55 Mozilla 浏览器分析 „„„„„„„„„„„„„„„„56 ZEN 浏览器分析 „„„„„„„„„„„„„„„„„„57 6 . 5 浏 览 器 分 析 工 作 的 总结 „ „„„„„„„„„„„„„„58 致 谢 „„„„„„„„„„„„„„„„„„„„„„„ 60 参考文献表 „„„„„„„„„„„„„„„„„„„„„61 5 引 言 随着计算机、网络技术的迅猛发展,新型的高科技含量的电子产品层出不穷,遍及家电、生产、军事等各个领域。 嵌入式系统因其体积小,速度快而受到重视。 在掌上电脑、 PDA、手机、导航设备、信息家电领域嵌入式系统被广泛采用,这也是近期产品研发的热点。 嵌入式浏览器作为重要的嵌入式系统应用软件,是不可或缺的。 但目前,嵌入式浏览器产品的市场被少数国外大公司垄断 ,众多的小型嵌入式浏览器也尚处于发展期,而国内的自主技术的嵌入式浏览器更屈指可数,刚刚进入实用阶段。 迫切需要更多的人来关注嵌入式浏览器技术,开发中国自主知识产权的浏览器产品。 本文阐述了嵌入式浏览器开发的关键技术,并详细说明Netbit Browser 的实际开发过程,技术细节。 并以网站的方式公布了其源代码,为国内嵌入式浏览器的发展做了有益的尝试。 6 第一章 嵌入式浏览器设计概述 桌面浏览器简介及其与嵌入式浏览器的区别: 常见的桌面浏览器有微软的 Inter Explorer,网景的Netscape,开放源码的 Mozilla,以及 opera, mosaic, Hotjava,字符模式的 lynx 等。 其中 IE, Opera 已有嵌入式版本,以上的大多数浏览器均有跨多平台的版本。 这些桌面型浏览器功能参差不齐,但大多能实现基本的浏览功能。 其中 IE与 Netscape 对 HTML页面的显示效果均堪称完美(对于 XML, WML 等标准的网页浏览,本文不予讨论)。 与完美的浏览效果,功能丰富,支持多种媒体格式和视音频插件等优点形成对立的是,这些浏览器庞大的体积和对机器配置的高要求。 这也是桌面浏览器和嵌入式浏览器最大的区别。 另外,桌面型浏览器通常是基于通用的操作系统,用于桌面电脑如 PC机、 MAC 机等。 而嵌入式浏览器通常基于专用系统。 需要指出的是,我们在网上常看到的一些所谓的优秀浏览器,如 Netcaptor,魔装网神,腾讯,飓风, Fantasia,金山 WPS office的浏览器等等,均为使用 IE内核的浏览器,使用了多页面多线程的方式,降低了系统资源的耗费,方便了浏览,但软件本身没有多少技术可言,可以用 Delphi, VB 等工具轻易开发出来(如果不要求完善的功能,只需简单到拖一个 IE控件过去就行了),这也体现了微软的 COM+及 ActiveX 技术的强大。 常见嵌入式浏览器 (1)Inter Explorer for WinCE,是 IE 的 Windows CE 版,这也意味着用户为了使用它,必须选用基于 WinCE 平台的产品,随着微软势力在掌上终端领域的蔓延, WinCE 版的 IE 必将大行其道。 (2)Access Netfront, Access 是日本的浏览器大厂,占据了大部份的日本浏览器市场,其产品广泛应用于手持设备、机顶盒、 7 游戏机等产品。 其新推出的 Netfront Linux 版本可以免费 下载,网址是: 用,发现 Netfront 浏览效果非常好,对中文的支持和表格的显示效果,甚至超过 Netscape for Linux。 而且支持键盘操作。 可以使用箭头键来选择网址进行跳转。 但显然为了简化设计, Netfront 使用了一定的权宜手段。 比如它不支持使用 font标记来设置字体,也不支持样式表,所有字体的大小是固定的,但一般情况不易发现,不过由于 Linux 版本不是商业性版本,无法就此推断其他版本的特性。 Netfront Linux版大小为 ,如再加以简化(比如去掉一些图片按钮)可以做的更小。 (3)Gzilla,现名 Dillo,是基于 Linux,使用 GTK 作为 GUI 平台开发的浏览器,其开发目的也包含嵌入式的应用。 是开放源码项目。 我们在设计 Netbit Browser 时主要参考了该浏览器的界面设计。 该浏览器的缺点是不支持表格,布局过于简单,不支持中文,浏览效果比较差,优点是网络功能完善,支持 cache缓冲,能够支持多种图片格式。 网址是: (4)Viewml, 使用 FLTK 作为 GUI 平台开发的浏览器,主要面向嵌入式的应用。 是开放源码项目。 使用 C++面向对象的设计。 因为使用 FLTK,所以可以在嵌入式的 Micro Window 平台运行,该浏览器支持简单的表格,界面还没有做(只有一个主窗口),不支持中文,由于 FLTK 的 BUG 比较多,我们在实际编译时经常出错,即使编译通过,也常常是还没运行就 core dump 了,但曾经由某人编译成功,基本可用,网址是: (5)ZEN,一个并不知名的嵌入式浏览器,但却十分优秀,开放源码项目,不仅支持表格,支持多种图像格式,而且在设计上很有特色,将涉及到 GUI 平台的部分独立出来,用户可以指定不同的 GUI 平台运行,内置了对字符, SVGA 和 GTK 的支持,开发这只需按照相应规范编写该软件的涉及 GUI 的部份,就可以将其移植到其它 GUI 平台,而无须对整个软件进行修改。 缺点是网络功能比较弱,不支持多线程,另外其必须等到所有图片下载完毕才开始布局,若某文件传输失败则会导致死锁,需用户中 断。 网址是: 8 以上主要介绍了开放源码的嵌入式浏览器,因为其对本项目具有实际的参考价值。 嵌入式浏览器的应用领域 嵌入式浏览器主要应用于手持终端和信息家电,例如掌上电脑、 3G 手机、网络机顶盒、具有网络功能的其它家电,如可上网的电冰箱等,另外,在军事等领域也有一定的应用需求。 下面简介主要的组成部份,其设计原理后面将进行专门论述。 词法分析 主要是针对 HTML进行词法分析,该词法分析器实际是通用的,还可用于 XML、 WML 的词法分析,只需替换元素名称即可。 HTML 词法分析是浏览器设计的基础环节之一,也是整个设计过程中重要的前端工作,其数据结构的拟定与接下来的语法分析和布局算法密切相关,词法分析的效率与准确性、容错性也关系到整个浏览器设计的质量。 语法分析 在大型的浏览器中,语法分析通常是独立的模块,但在嵌入式浏览器中,语法分析通常是与布局混合在一起的, 即一边进行语法分析,一边布局,不设立相应的数据结构来存储语法分析的结果。 语法分析对布局的算法有直接的指导意义。 布局 本文中的布局应理解为界面输出前的预演和处理位置等信息的算法,而不是具体的画图和界面输出。 布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据 GUI 所能实现的输出效果来设计的,所以, GUI 往往成为系统的瓶颈,如果 GUI 提供的支持有限,即使有再好的布局算法,也是纸上谈兵,无用武之地。 GUI 及软件界面 GUI 是指图形用户界面,浏览器无疑是一个图形函数库的大需 9 求 者,选择好的 GUI 环境实属不易,为了能够实现专有的功能,浏览器开发者往往还要对基础的 GUI 库进行包装、改写,甚至写自己的控件。 所有这些,是需要有专业的 GUI 库开发经验的专职人员来完成。 GUI 的功劳第一在于软件的操作界面,如窗口、菜单、工具条、滚动条等。 第二在于主浏览窗体中的图形元素的输出(通常以自画控件的方式)。 前者通常直接使用 GUI 库中的已有控件,编程难度很小,后者主要利用基本的点线函数,编程难度比较大。 JavaScript 支持 实际上 JavaScript的编译器是开放源码的,而且全世界通用,包括 IE、 Mozilla、 Netscape 等浏览器都使用相同的 JavaScript的编译器,但为何其对 JavaScript 的支持不尽相同呢,这是因为JavaScript 在浏览器里主要是用于操纵界面元素和与浏览器内部命令进行结合。 这实际上是程序员努力的结果,而不是JavaScript 编译器的功劳。 这其中的机制将在后面专门介绍。 IO 主要是指通过 HTTP 协议或文件系统来读取网页内容,网络部份超出了本论文的讨论范围,不予详述,后面将介绍与网络部份的接口。 以上主要按工作的性质进行分类,介绍了浏览器设计的主要几个 部份,但与实际开发工作的人员划分不同,实际工作要考虑人员的实际能力和经验,结合要实现的目标,对各部份的投入也有轻重缓急之分,比如,如果没有词法分析的先行实现,语法分析与布局都是纸上谈兵。 GUI 平台不确定,布局工作也无法展开。 我们也可以看到,要设计效果较好的浏览器产品,决不是三五个人、两三条枪就能办到的,参与工作的人员不仅需要有相关经验,还需要有一定的投入,一方面对程序员艰苦的工作给予鼓励,另一方面也可能需要购买一些成熟的开发包,在基础的开发平台、测试平台上也要有一定的投资,总的来说, 开发自主技术的浏览器产品是有一定的风险的,这也是国内目前相关产品为数 10 不多的原因。 国外大公司在相关领域的科研与实践已很成熟,在大量投入之后,其产品已为广大用户所接受,国内的企业若从零做起,也很难追赶。 因而买断技术,加以改进也可以成为快速成长的一条道路。 以下的工作均是建立在大量的调查基础上的。 是浏览器开发前期准备工作所解决的问题。 平台的选取 目前的商业化嵌入式操作系统功能完善,但使用费用高昂,使用 Linux 内核的嵌入式操作系统不仅功能强大,便于开发移植,而且费用低廉,基于 Linux 的嵌入式系统已日渐成熟,也有相应的窗口系统可以使用,我们使用 PC上的 Linux来进行浏览器开发,是再好不过的了,软件从 PC 移植到嵌入式设备只需重新编译一下就可以了(前提是使用的函数库、开发包同时具有 PC和嵌入式的版本)。 GUI 的选取 GUI 的选取是颇费脑筋的问题,一方面要考虑嵌入式系统是否有对应的版本,一方面要考虑该 GUI 的功能是否足够实用。 目前常见的基于 Linux 的 GUI 开发包主要有 GTK、 FLTK、 QT、KDE 等,其中 FLTK 有 Micro Window 的版本,是比较好的选择,但使用 FLTK 开发的 软件还比较少,对于初学者进入的难度更大,而且目前 BUG 较多,而 GTK 比较成熟,使用 GTK 的软件比比皆是,资料也很丰富,我们的参考对象 Gzilla 也使用 GTK,也就是说如果使用 GTK,将有很好的原型进行参考,这使得 GTK 对于目前毫无 GUI 开发经验的浏览器开发组而言,充满了巨大的诱惑。 考虑到 GUI 是可以成为独立。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。