(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf_第1页
(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf_第2页
(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf_第3页
(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf_第4页
(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机应用技术专业论文)基于嵌入式浏览器的js引擎移植的研究与应用开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 近年来,随着嵌入式技术的飞速发展,嵌入式浏览器逐渐成为最重要的嵌入 式软件之一。嵌入式设备具有多样性,硬件配置低,存储空间有限等特点,所以 良好的运行性能对嵌入式浏览器至关重要,而j a v a s c r i p t 引擎的性能逐渐成为 制约浏览器性能的瓶颈。 本文在研究嵌入式浏览器特性和相关技术的基础上,讨论了l i n u x 平台下嵌 入式浏览器j a v a s c r i p t 引擎移植的技术和整体方案设计。首先,本文分析了某 嵌入式浏览器的代码和运行性能,并针对其性能缺陷介绍了改进的办法,进而提 出替换j a v a s c r i p t 引擎的设计方案。其次,在设计方案中,结合当前浏览器的 流行框架,详细介绍了浏览器中b o m ( b r o w s e ro b j e c tm o d e l ,浏览器对象模型) , d o m ( d o c u m e n to b j e c tm o d e l ) 和2 s ( j a v a s c r i p t ) 引擎的绑定技术,并选取代表 性很强的对象加以设计和实现。然后,在浏览器框架结构下,对j s 引擎的核心 工作流程( 如,引擎初始化,对象实现,对象注册等) ,移植过程中所涉及的关键 技术( 如,对象实现,d o m 绑定,内存管理等) ,关键数据结构,及接口加以介绍 和重点阐述。最后,对优化前后的浏览器进行了分析和对比。数据显示,改进后 的浏览器性能有了大幅的提升。 本文在研究j s 引擎移植的基础上,完成了在嵌入式浏览器中j s 引擎的移植 和开发,使其在实际应用中性能有了大幅的提升。随着嵌入式研究的深入,相关 的应用将会更加广泛,如增加邮件客户端,完善对x m l 的支持等等。 关键词:嵌入式浏览器j s 引擎移植 a b s t r a c t i nt h e s ey e a r s ,w i t ht h er a p i dd e v e l o p m e n to fe m b e d d e dt e c h n o l o g y ,e m b e d d e d b r o w s e rh a sg r a d u a l l yb e c o m eo n eo ft h em o s ti m p o r t a n te m b e d d e ds o f t w a r e t h e r e a r es o m ec h a r a c t e r i s t i c sa b o u te m b e d d e de q u i p m e n t ,s u c ha st h ed i v e r s i t y ,l o w h a r d w a r ec o n f i g u r a t i o n , l i m i t e ds t o r a g es p a c e ,a n ds o o i l t h e r e f o r e ,g o o d p e r f o r m a n c ei se s s e n t i a lf o r t h ee m b e d d e db r o w s e r ,h o w e v e rt h ej a v a s c r i p te n g i n e s p e r f o r m a n c e h a s g r a d u a l l y b e c o m et h e b o t t l e n e c ko fe m b e d d e db r o v s e r s p e r f o r m a n c e i nt h i sp a p e r , i ts t u d i e st h ec h a r a c t e r i s t i c sa n dr e l a t i v et e c h n o l o g yo fe m b e d d e d b r o w s e r sa f t e rt h a t d i s c u s s e st h et r a n s p l a n t a t i o nt e c h n o l o g ya n do v e r a l lp r o g r a m d e s i g no ft h ee m b e d d e db r o w s e r sj a v a s c r i p te n g i n eu n d e rt h el i n u xp l a t f o r m f i r s t o fa l l ,i ta n a l y s i st h ec o d ea n dp e r f o r m a n c ei na ne m b e d d e db r o w s e r ,a n di n t r o d u c e s a ni m p r o v e da p p r o a c hb e c a u s eo ft h ep e r f o r m a n c e sl i m i t a t i o n ,w h i c hp r o p o s e dt h e d e s i g no fr e p l a c i n gj a v a s c r i p te n g i n eo ft h ee m b e d d e db r o w s e r s s e c o n d l y ,i nt h e d e s i g n ,c o m b i n e dw i t ht h ec u r r e n tp o p u l a rf r a m eo ft h eb r o w s e r s ,d e t a i l i n gt h eb o m ( b r o w s e ro b j e c tm o d e l ,t h eb r o w s e ro b j e c tm o d e l ) ,d o m ( d o c u m e n t0 b j e c tm o d e l ) a n dj s ( j a v a s c r i p t ) b i n d i n ge n g i n et e c h n o l o g y ,a n dc h o o s es o m eo fi m p o r t a n to b j e c t t 0b ed e s i g n e da n dr e a l i z e d t h e n , c o m b i n e dw i t ht h eb r o w s e r sf r a m es t r u c t u r e i t i n t r o d u c e st h ec o r eo fj sw o r k f l o we n g i n e ( f o re x a m p l e ,t h ee n g i n ei n i t i a l i z a t i o n , o b j e c tr e a l i z a t i o n , o b j e c tr e g i s t r a t i o n , e t c ) ,t h ep r o c e s so ft r a n s p l a n t a t i o no ft h ek e y t e c h n o l o g i e si n v o l v e d ( f o re x a m p l e ,o b j e c tr e a l i z a t i o n , d o mb i n d i n g ,m e m o r y m a n a g e m e n t ,e t c ) ,t h ek e yd a t as t r u c t u r e ,a n dt h ek e yi n t e r f a c e f i n a l l y ,i ta n a l y s e s a n dc o m p a r e st h eb r o w s e rb e f o r ea n da f t e ro p t i m i z a t i o n d a t as h o w st h a tt h e i m p r o v e db r o w s e rh a sas i g n i f i c a n tp e r f o r m a n c eu p g r a d e i nt h i sp a p e r , i tc o m p l e t e st h ec o m b i n a t i o nw i t ht h et h e o r e t i c a lk n o w l e d g ea n d p r a c t i c a lp r o j e c lg e t sa ni n - d e p t hs t u d i e so ne m b e d d e db r o w s e r , p a r t i c u l a r l yi n j a v a s c r i p te n g i n e sp a r t s w i t ht h ee m b e d d e db r o w s e r s f u r t h e rr e s e a r c h t h e a p p l i c a t i o nw i l lb em o r ee x t e n s i v ea n dm o r ei n d e p t h , s u c ha st h ei n c e n s e m e n t i nm a i l c l i e n t ,a n di m p r o v i n gt h es u p p o r tf o rx m la n ds oo n k e y w o r d s :e m b e d d e d , b r o w s e r , j se n g i n e ,t r a n s p l a n t a t i o n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得苤注叁鲎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位做储躲弘砷签字嗍l 弦办日 学位论文版权使用授权书 本学位论文作者完全了解墨鲞盘堂有关保留、使用学位论文的规定。 特授权丕盗盘堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 签字日期凇7 年 导师签名: 许碌 撕飙彳年月7 日 矽日 厶吖 , 乙踢 红,月 乙说 第一章绪论 1 1 课题背景 第一章绪论 1 1 1 嵌入式浏览器的特点 在当今的信息社会里,嵌入式软件,这种为特定功能而设计的计算机硬件和 软件的集合体,逐渐变得无处不在,并且需求越来越大,所以针对嵌入式系统的 浏览器便应运而生。嵌入式浏览器从功能上,技术上来说,和桌面系统中使用的 浏览器没什么太大的区别,但由于它处于嵌入式的特殊环境中,拥有了一些独特 之处: 1 嵌入式浏览器具有多样性 嵌入式软件是是面向具体的应用,是针对各种具体设备而设计的。设备的多 样性决定了系统的多样性,从而也就决定了嵌入式浏览器的多样性。根据具体应 用的需求,对嵌入式浏览器进行定制是必不可少的。 2 嵌入式浏览器在系统中的重要地位 在嵌入式系统中,嵌入式浏览器已逐渐成为嵌入式操作系统中最重要的应用 软件,甚至可能成为唯一直接支持的应用软件。其他的应用如:m p 3 播放器, m p e g 视频,交互式游戏,i p 电话,i c q 股票,接收分析,甚至远程教育办公 软件等等,都可以通过p l u g i n 接1 :3 或者直接用h t m lj a v a s c r i p t 及其扩展语言 来实现。 3 嵌入式浏览器在硬件上的限制 任何软件的实现,都离不开硬件系统的有力支持,嵌入式系统更是对对硬件 有一些特殊要求。首先,为节约成本,保证比较低廉的价格,从而在市场竞争中 占据优势,必须十分注意性价比。选择核心处理芯片r a m ,f l a s h 存储器等硬件 时,都要注意节约成本。其次,为满足非p c 上网设备对系统功耗的限制,要选 择省电,低散热量的器件,一般采用较低主频的c p u n l 。 1 1 2 嵌入式浏览器在国内外的发展状况 近几年嵌入式市场迅速崛起,许多大大小小的公司都相继投入其中,出现了 一些己经商业化的嵌入式浏览器产品。但没有任何一个产品,能够像m i c r o s o f t 的i n t e r n e te x p l o r e r 和m o z i l l a 的f i r e f o x 在桌面p c 市场中一样占垄断地位。市 场上的嵌入式浏览器产品已经很多了,目前出现的嵌入式浏览器产品主要有 s p y g l a s sd e v i c em o s a i c ,p l a n e tw e b ,t h r i v e ip a n e l ,中科院的c a s s ,t e k n e m a 第一章绪论 b r o w s e , a c c e s sn e tf r o n t , e b sn e tm i c r ob r o w s e r , e nr e a c he b r o w s c r , g h to f a d a m 嬲,i c eb r o w s e r ,e s p i a le s c a p e 等等,当然还有微软在w i n d o w sc e 中内 嵌的简化版的i e 。 纵观目前市场上的嵌入式浏览器产品,大多尚不够成熟,实用化程度不高。 有些没有针对特定设备的显示进行优化,有些不容易进行系统移植或修改,有些 只支持英文不支持包括中文在内的两字节语言的显示,还有些嵌入式浏览器代码 过大,占用资源过多,比如一些嵌入式浏览器使用j a v a 语言来进行开发,像e s p i a l e s c a p e ,虽然基于j a v a 语言易于进行程序开发并且具有较好的系统可移植性, 但这样开发出来的系统对硬件资源要求就会比较高,需要占用较多的系统资源, 运行时效率低,速度慢。 在嵌入式的世界里,完美的页面显示不是必须的,好的技术应该是能够像显 示老的文本格式一样,简洁的显示现在的网页,例如,在蜂窝电话或者i n t e m e t 设备中,用户需要访问股票报价,体育比赛结果,全球定位数据等等。嵌入式浏 览器要能够灵活的根据具体应用而进行定制,这样商家就可以根据各自不同的侧 重点,来发展自己的产品。 1 2 选题背景和主要工作 嵌入式浏览器的可移植性和运行性能决定了它的价值和前景。好的运行性能 可以削弱硬件配置带来的影响,让浏览器能够良好的运行,从而拥有更多的客户。 本文课题是针对国外一款商用嵌入式浏览器在国内推广时遇到的性能问题 而提出的( 因为论文会涉及到该浏览器的结构及实现,考虑到商业保密问题,文 中省去真实品牌名,用m e r i t 代替) 。 论文主要完成了以下工作: 1 对m e r i t 的性能瓶颈_ j s 引擎进行了替换。 2 在浏览器与j s 引擎的作用部分,d o m ,b o m ,e c m a s c r i p t 等部分进行 了重新设计和实现。 3 对j s 引擎替换后的浏览器性能进行了测试。数据显示,改进后的浏览器 性能有了大幅的提升。 1 3 论文的组织结构 本文的组织结构安排如下: 第一章绪论,主要介绍了论文的研究背景,分析了嵌入式浏览器的发展、现 状和自身的一些特点,并提出了研究背景等。 第一章绪论 第二章相关技术,对论文涉及的基本知识进行简单介绍,包括j s 的基本知 识,b o m ,d o m 的相关知识,以及它们与j a v a s c r i p t 的关系,j s 引擎的基本功 能,以及j s 引擎和应用程序作用部分的简单介绍。 第三章m e r i t 中j s 引擎移植的总体设计,主要结合原有框架结构进行重新 设计,同时介绍b o m 和d o m 部分的相关设计。 第四章j s 引擎替换方案中涉及到的关键流程,关键技术,重要数据接口和 数据结构的介绍。 第五章m e r i t 的j s 引擎替换前后的测试及其对比和分析。 第六章总结与展望,对论文的主要工作进行总结,并对嵌入式浏览器在未 来的发展趋势做了展望。 3 第二章相关技术 第二章相关技术 2 1j a v a s c r i p t 2 1 1j a v a s c r i p t 定义 j a v a s c r i p t 是一种小型的,轻量级的,面向对象的,跨平台的脚本语言,是 目前最流行的网页客户端编程语言。j a v a s c r i p t 用于控制网页内容,实现网页浏 览者与网页内容之间的交互,实现动态网页效果。例如对表单数据有效性的验证, 动态显示内容,动态改变文本格式,动态改变元素位置等,并且,这种交互的实 现直接发生在客户端,并不要需要与w e b 服务器之间进行数据通信,因此可以 获得极高的响应速度。 随着互联网技术的不断发展,网页内容越来越丰富,功能越来越强大,基于 浏览器的应用已成为应用程序发展的趋势,用户与网页的内容之间的交互已经成 为w e b 应用中最基本的元素,而提高交互的响应效率,提高用户的易用性已经 成为关注的焦点。j a v a s c r i p t 脚本程序是作为h t m l 网页的部分存在的,是由 浏览器直接进行解释执行的,所以j a v a s c r i p t 具有平台无关性。只要客户端的浏 览器支持j a v a s c r i p t ,j a v a s c r i p t 程序就能正确运行【2 】。 2 1 2j a v a s c r i p t 的特点 j a v a s c r i p t 是一种基于对象( o n e c t ) 和事件驱动( e v e n td r i v e n ) ,并具有安全性 能的脚本语言。使用它的目的是与h t m l 超文本标记语言,j a v a 脚本语言( j a v a 小程序) 一起实现在一个w e b 页面中链接多个对象,与w e b 客户交互,从而可 以开发客户端的应用程序等等。它是通过在标准的h t m l 页面中嵌入或调用来 实现的,它的出现弥补了h t m l 语言的缺陷,是j a v a 与h t m l 折衷的选择,具 有以下几个基本特点: 1 是一种脚本编写语言 j a v a s c n p t 是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本 语言一样,j a v a s c r i p t 同样也是一种解释性语言,它提供了一个简易的开发过程。它 的基本结构形式与c ,c + + ,v b ,d e l p h i 十分类似,但它不像这些语言一样,需 要先编译,而是在程序运行过程中被逐行地解释。 2 基于对象的语言 j a v a s c r i p t 是一种基于对象的语言,同时也可以看作一种部分面向对象的语 言。这意味着它能运用自己已经创建的对象,因此许多功能可以通过与脚本环境 中对象的方法与脚本的相互作用来实现。 3 简单性 4 第二章相关技术 j a v a s c r i p t 的简单性主要体现在:首先它是一种基于j a v a 基本语句和控制流 之上的简单而紧凑的设计,从而对于有c 语系开发经验的人员学习j a v a s c r i p t 十分 容易。其次它的变量类型是采用弱类型,并未使用严格的数据类型。 4 安全性 j a v a s c r i p t 是一种安全性语言,它不允许访问本地的硬盘,并且不能将数据 存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息 浏览或动态交互,从而有效地防止数据的丢失。 5 动态性 j a v a s c r i p t 是动态的,它可以直接对用户或客户输入做出响应,无须经过 w e b 服务程序。它对用户的响应,是采用以事件驱动的方式进行的,就是指在 主页( h o m ep a g e ) q i 执行了某种操作所产生的动作后,可能会引起相应的事件响 应。 6 跨平台性 j a v a s c r i p t 依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算 机,并支持j a v a s c r i p t 的浏览器就可以正确执行,从而实现了编写一次,走遍天下 的梦想。 实际上j a v a s c r i p t 最杰出之处在于可以用很小的程序做大量的事。无须有高 性能的电脑,软件仅需一个字处理软件及一个浏览器,无须w e b 服务器通道, 通过自己的电脑即可完成所有的事情。 综合所述,j a v a s c r i p t 是一种新的描述语言,它可以被嵌入到h t m l 的页面 之中,响应使用者的需求事件( 如f o r m 的输入) ,而不用任何的网络来回传输资 料,所以当一位使用者输入一些资料时,不用再经过传递给服务器端( s e r v e r ) 处 理,再传回来的过程,而直接可以被客户端( c l i e n t ) 的应用程序所处理。 2 2b o m 2 2 1b o m 定义 b o m ( b r o w s e ro b j e c tm o d e l ) 即浏览器对象模型,是将文件,样式,代码 都作为标签并对象化,通过j a v a s c r i p t 可以轻松的对这些对象进行动态操作的一 种模型。它提供了独立于内容而与浏览器窗口进行交互的对象。例如,w i n d o w 对象对应浏览器窗口,d o c u m e n t 对应整个页面文档,f o r m 对象对应网页中的一 个表单等等。b o m 由一系列相关的对象构成,而这些对象之间具有一定的层次 关系。图2 1 展示了基本的b o m 体系结构。 第二章相关技术 w i n d ( ) w 0 0 c u m e n th i s t o r yl o c a t i o nn a vi g a t o rs c r e e nf r a m e s 图2 - 1b o m 的对象层次 可以看到,w i n d o w 对象是整个b o m 的核心,所有对象和集合都以某种方 式回接到w i n d o w 对象。w i n d o w 对象是脚本中的全局对象,可以在任何地方进 行调用,脚本中任何对象的使用都要追溯到w i n d o w 对象的访问,对于脚本中出 现的任何未明确定义的标志符,解释器总是尝试在w i n d o w 对象中寻找。 2 2 2b o m 与j a v a s c r i p t 的关系 在网页中,所有涉及到与浏览器交互的属性或动作,都是通过b o m 对象实 现的。然而,实际上这些b o m 对象都是j a v a s c r i p t 的自定义对象,所有这些b o m 对象及其操作,实质上都是j a v a s c r i p t 的操作而已。不过由于没有统一的标准, 所以在实际的操作中,都是由浏览器厂商自己去定义和实现,对应的属性和窗口。 2 3d o m 2 3 1d o m 定义 d o m ( d o c u m e n to b j e c tm o d e l ) 即文档对象模型,它是由w 3 c 在1 9 9 8 年 1 0 月1 日发布的标准,它定义了文档的逻辑结构,以及对文档进行访问与操作 的接口和方法,是h t m l 文档以及x m l 文档的应用程序接口。 w 3 c 提供了精确的语言无关的d o m 接口规范,可以用任何语言来实现 d o m 接口作为w 3 c 的规范。d o m 提供了一种可以应用于不同平台和不同编 程语言中的标准的程序接口。它把一个文档看成一棵树,文档中的每个部分都是 树上的一个结点( n o d e ) ,对结点可以进行各种遍历查询删减修改操作,并 提供了对结点进行访问和操作的方法。 通过利用d o m ,开发人员就可以动态的创建文档,遍历文档结构,添加, 修改,删除文档内容,改变文档的显示方式,等等。可以这样说,文档代表了文 档中的数据,而d o m 则代表了如何去管理这些数据。 d o m 实际上就是一种平台无关,语言无关的应用程序接口。它用对象模型 来描述文档的结构。d o m 可以跟j a v a s c r i p t 一起实现绑定,让j a v a s c r i p t 通过 第二章相关技术 它实现对文档的各种操作。现代的浏览器核心大多是基于d o m 来实现复杂的网 页功能与技术。 2 3 2d o m 与d a v a s c r i p t 的关系 在网页中用j a v a s c r i p t 写脚本程序,其实用的是d o m 来访问网页元素。如 果没有d o m ,j a v a s c r i p t 就完全不能对网页有任何操作,是d o m 让j a v a s c r i p t 拥有了对页面元素的操作方法和依据。 2 3 3d o m 在嵌入式浏览器中实现的困难 在嵌入式浏览器中实现对d o m 的支持,其困难在于嵌入式系统硬件本身的 限制c p u 主频不高内存容量少,等等。这些客观原因都制约着d o m 在嵌入式浏 览器中的实现,因为d o m 文档对象模型是以层次结构组织起来的节点或信息片 段的集合。这种层次结构允许开发者通过浏览树来查找特定信息,通常分析结构 需要在完成其他工作之前装入整个文档,并且装入层次结构。对于一些比较大的 h t m l 文档,装入整个文档,并对该文档进行解析会很慢而且占用大量资源, 所以要解决d o m 在资源有限的嵌入式系统中实现的问题,主要靠优化代码,以 及从实际的浏览器的需要出发,有选择地对d o m 的实现内容做出裁剪简化( 例 如,不必要在嵌入式浏览器中实现所有的d o m 规范的对象) 。 2 4j s 引擎s p i d e r m o n k e y 2 4 1 s p i d e r m o n k e y 介绍 s p i d e r m o n k e y 是由m o z i l l a 开发小组利用c 语言编写的j a v a s c f i p t 引擎,它 支持j s i 4 和e c m a s c f i p t 2 6 2 规范。该引擎可以分析、编译和执行脚本,根据 j s 数据类型和对象的需要,进行内存分配及释放等操作,利用该引擎可以让应 用程序具有解释j a v a s c r i p t 脚本的能力。目前已有若干个项目都采用了j s 引擎, 像k - 3 d 、w e bc r o s s i n g 、w e bm e r g e r 等。k 3 d 是用c + + 实现的3 d 建模与仿真 系统,该系统内嵌j s 引擎来提供自定义脚本( 用户创建脚本生成像齿轮一样具 有重复特性的复杂形体) ,也可用来驱动交互式的教学系统( 用户可以使用一段 j s 脚本程序记录其交互过程,如移动鼠标、选择菜单、点击鼠标等) 。w e bc r o s s i n g 利用j s 实现了服务器端的脚本环境,提供了完全的w e b $ e l - v c r 脚本环境,这样 即可根据需要扩展服务器环境p j 。 2 4 2 如何使用j s 引擎 j s 引擎一般作为共享库使用,应用程序通过调用引擎提供的a p i 函数实现。 引擎a p i 函数大致分为以下几种:数据类型操作、r u n t i m e 控制、类与对象的创 7 第二章相关技术 建和维护、函数与脚本执行、字符串操作、错误处理、安全控制、d e b u g 支持。 一般情况下,在应用程序中只需使用某几类函数。例如,在进行j s 调用之前必 须调用j sn e w r u n t i m e 函数来创建并初始化j s 引擎。 从概念上讲,j s 引擎是系统上的一个共享资源。通过将引擎a p i 调用嵌入 到应用程序中( 包含j s a p i h 文件) ,可以请求j s 引擎进行操作。接下来,引擎 处理请求,并将结果或状态信息返回给应用程序。 例如,假定在使用j s 引擎自动化应用程序,脚本应用程序鉴别用户并设置 权限。首先,应用程序创建j s 对象,该对象描述用户信息,包括姓名、i d 、权 限和可用的函数列表。在这种情况下,应用程序首先调用j s 创建对newobject 象。当j s 引擎创建对象后,返回一个指针给应用程序,应用程序再调用j s 引擎 执行脚本。在创建用户对象后,应用程序即刻传递脚本j se v a l u a t e s c r i p t 以便编 译和运行。脚本或许取得并效验用户信息,然后建立用户存取的权利。 j s 引擎收到初始化请求后,给j sr u n t i m e 分配内存,应用程序使用的变量、 对象和上下文( 上下文) 都保存在r u n t i m e 中。一个上下文是脚本的执行状态( j s 引擎使用的) ,每个同时存在的脚本或线程都必须有自己的上下文,单个的j s r u n t i m e 可以包含多个上下文、对象和变量。几乎所有的j s 引擎调用都需要一 个上下文变量,应用程序在创建r u n t i m e 后,首先应调用至少一次j sn e w c o n t e x t 来创建一个上下文。上下文的实际数量依赖于程序中同时使用的脚本数,程序中 每个同时存在的脚本都需要一个上下文,另一方面,如果某个时刻只有一个脚本 编译和运行,那么只需一个上下文给每个脚本重复使用即可。 在创建上下文后,要调用j si n i t s t a n d a r d c l a s s e s 初始化引擎中的内置j s 对 象,包括a r r a y 、b o o l e a n 、d a t e 、m a t h 、n u m b e r 和s t r i n g 。即使在创建对象时 传递一个特定的上下文给j s 引擎,这个对象在r u n t i m e 中也是独立于上下文的。 任意脚本能与任意上下文建立联系以便存取任意对象。脚本、上下文相互之间完 全独立,即使它们存取同样的对象,在给定的r u n t i m e 中,应用程序能用未指定 的上下文存取任意对象,可以创建独立的r u n t i m e ,一个用于共享上下文和对象, 其余的用于私有上下文和对象。但某个时刻只有一个线程能存取特定的上下文。 要让应用程序能识别j s ,嵌入适当的引擎调用到程序中。大致有以下几个方面: 1 程序中包含i s a p i h 。 2 程序中提供结构和变量声明。例如,如果计划传递一个脚本给j s 引 擎,提供一个脚本字符串变量,用j s a p i h 中定义的j s 数据类型来声明变量。 3 使用j a v a s c r i p t 的脚本应用对象。通常这些对象与c 程序中的结构和方 法相对应。 4 将j s 引擎a p i 函数调用和变量引用插入到程序中,包括初始化内置j s 8 第二章相关技术 对象、创建并配置用户自定义对象。 5 大多数j s 引擎调用都会返回一个值。如果该值是n u l l ,一般表示错误 发生,如果非n u l l ,表示成功。返回值一般是指针,程序需要使用或留到将来 使用,应用程序应检查j s 引擎调用的返回值。 2 4 3 引擎和应用程序之间的联系 从概念上来讲,j s 引擎在系统上是一个共享资源。通过在应用程序中嵌入 引擎a p i ,就可以向j s 引擎传递处理的请求。这个引擎反过来处理请求,并把 返回值或者状态信息返回给应用程序。图2 2 描述了它们一般的关系: 图2 2j s 引擎和引用程序之间的联系 例如,假设正在使用j s 引擎来使应用程序能通过j s 脚本自动运行,应用程 序运行一个脚本来对一个用户进行身份验证,并且设置一个用户对这个应用程序 的访问权限。首先,应用程序可能新建一个代表用户的自定义j s 对象,包括了 用户的名字、i d 、访问权限和一个可能的用户拥有权限在应用程序中使用的函数 的列表。在这种情况下,应用程序给j s 引擎发送的第一个请求可能是对 j sn e w o b j e c t 的调用来新建一个自定义对象。当j s 引擎新建了这个对象后,返 回一个指针给应用程序。应用程序可以再次调用j s 引擎来执行使用这个对象的 脚本。例如,在建立了用户对象之后,应用程序会立刻给j se v a l u a t e s c r i p t 传递 一个脚本来编译执行。那个脚本可以获得并验证用户信息,然后建立用户对其他 应用程序特性的访问权限。 事实上,应用程序和j s 引擎之间的关系远比图2 2 中显示的要复杂的多。 例如,假设已经为平台构建了j s 引擎。应用程序包含了j s a p i h ,应用程序对引 擎进行的第一个调用已经初始化了j s 运行时。当j s 引擎接受到了一个初始化的 请求时,它会为j s 运行时分配内存。图2 。3 描述了这个过程: 图2 - 3j s 引擎初始化的过程 9 第二章相关技术 这个运行时是一个内存空间,在其中可以维护应用程序所使用的变量、对象 和上下文。一个上下文是指针对j s 引擎所使用的线程的脚本执行状态,每个同 时存在的脚本或者线程都必须有它自己的上下文。一个单独的j s 运行时可以包 含很多上下文、对象和变量。几乎所有的j s 引擎调用都要求有一个上下文的参 数,所以在创建了运行时之后,应用程序首先要做的是调用j sn e w c o n t e x t 来至 少创建一个上下文。实际需要的上下文数量由应用程序中所期望同时运行的脚本 的数量决定。从另一方面说,如果同一时间只有一个脚本被编译执行,那么就需 要建立单独的一个上下文,可以对每个脚本重复使用它。在新建了上下文之后, 通常通过调用j si n i t s t a n d a r d c l a s s e s 来实现初始化引擎内置的j s 对象。内置的 对象有a r r a y ,b o o l e a n ,d a t e ,m a t h , n u m b e r , s t r i n g 对象,大多数脚本都会用到。 大多数应用程序也要用到自定义j s 对象,这些对象是特定于应用程序的,他们 通常代表了数据结构和应用程序中脚本使用的方法。要新建一个自定义对象,就 要新建一个j s 类来生成这个类,调用j si n i t c l a s s 来在运行时新建这个类,然后 调用j sn e w o b j e c t 来在引擎中新建这个自定义对象的实例。最后,如果对象有 一些属性,要通过调用j ss e t p r o p e r t y 来设置它们的默认值。即使创建个对象 的时候给j s 引擎传递了一个特定的上下文,最后这个对象还是独立于这个上下 文存在的。任何脚本都可以和任意上下文相关联来访问任何对象。图2 4 描述了 脚本和运行时、上下文以及对象之间的关系。 图2 - 4j s 引擎中脚本,运行时和对象之间的关系 1 0 第二章相关技术 如图2 - 4 所示,脚本和上下文完全是互相独立存在的,即使他们可以访问相 同的对象。在给定的运行时中,一个应用程序可以通过任意的未分配的上下文来 访问任何对象。 2 5 开发工具与开发环境 m e r i t 浏览器同其它同类产品一样运用c c + + 编写。主要工作都是在l i n u x 操作系统下进行,设计实现部分和性能分析部分的运行环境及编译工具不同: 1 设计与实现部分 采用g c c 和g + + 进行编译,浏览器运行在l i n u x 下的仿真器中。 2 性能分析部分 采用a r m l i n u x g c c 和a r m l i n u x g + + 在主机平台编译。编译后的浏览 器运行在目标板中,用m i n c o m 在主机上进行终端控制。目标板的配置如表2 1 所示。 表2 - 1 浏览器开发中目标板采用的配置 配件项目配件名称 设备名称 微处理器 处理频率 内存容量 车载g p s x s c a l e p x a 2 7 0 5 2 0 m i p s 6 2 4 4 4k b 1 1 第三章j s 引擎移植的总体设计 第三章j s 引擎移植的总体设计 3 1 浏览器j s 部分的流程及框架 3 1 1j s 框架 w e b 开发领域中与j a v a s c r i p t 相关的技术可以分为6 个方面:j a v a s c f i p t 核 心( 即e c m a s c r i p t ) ,浏览器对象模型( b o m ) ,事件,文档对象模型( d o m ) , c s s 变更和数据获取。而在浏览器开发中,主要包括j a v a s c r i p t 引擎,d o m , b o m ,e c m a s c r i p t ,事件,以及j s 环境的搭建,即上下文环境,运行时等。 它们之间的相互关系可以用图3 1 表示。 t o k e n iz e r p a r s e r 上 d o mb u il d e r 模块 jj上 h t 皿解析模块 c s s 解析模块 e c m a s c r i p t 模块 上 d o m 树,c s s 链表,j s 链表 1 l 页面布局 图3 - 1 浏览器框架的一个通用模型 首先通过h t t p 模块得到h t m l 页面,将得到的h t m l 网页经由词法语法 解析模块解析成一个个的h t m l 元素,然后d o m 创建模块利用得到的h t m l 元素,生成一个个的对象并将其挂在d o m 树上,此时生成的d o m 树可以被j s 引擎访问。排版引擎根据d o m 树和一定的排版算法生成显示树( r e n d e rt r e e ) , 并显示。不过有一点需要说明的是浏览器中的d o m 与j a v a s c r i p t 中的d o m 有 所不同。从概念上讲,所谓d o m 就是w 3 c 制定的一套可以访问和操作h t m l 第三章j s 引擎移植的总体设计 元素的标准接1 2 1 ,在这一点上两者是相同的,浏览器提供了一套c 实现接1 2 1 , 任何c 程序都可以通过调用这套接1 3 来访问和操作h t m l 元素,j a v a s c r i p t 也提 供了一套这样的j a v a s c r i p t 接1 3 。但从实现上讲,两者是不同的,前者是后者实 现的基础,后者是通过调用前者提供的接口而实现的。例如,我们可以通过 d o c u m e n t g e t e l e m e n t b y l d ( p l ) 这样的脚本语句来访问h t m l 元素。 3 1 2j s 部分流程 在m e r i t 各框架中,根据各部分各模块的关系以及整体流程看来,各部分的 关系可以用图3 2 表示。 t r u e i 终止下载 i 卸载j s 模块 j r r结束 一 图3 - 2 浏览器中j s 模块运行流程 1 3 第三章j s 引擎移植的总体设计 j s 部分的大体流程如图3 2 所示:当打开浏览器,进行初始化的时候,浏览器 通过调用j s 部分提供的外部接口进行j s 模块的初始化操作。处理流程如下: 1 打开浏览器时,调用j s 引擎外部接口进行j a v a s c r i p t 解释器引擎的初始 化过程,以及一些全局资源的初始化过程。 2 打开一个新的网页时,创建并初始化一个w i n d o w 对象及其各级子对象的 属性和方法。 3 当h t m l 词法语法分析器解析出j s 代码段时,调用j s 引擎解释并执行 该j s 代码段。 4 当j s 引擎解析出j s 引擎所支持的浏览器客户端对象中包含的对象时,创 建相应的j s 浏览器客户端对象,并完成初始化和注册的过程。 5 当有j s 引擎所支持的事件发生时,调用相应的事件处理函数,并进行相 应的事件处理,做出响应。 6 当用户进行前进后退等操作时,调用相应的a p i 接口进行j a v a s c r i p t 上下 文旬柄的切换。 7 关闭页面时释放该页面对应的w i n d o w 对象及其各级子对象空间,并释放 该页面所占用的还未被释放的资源。 8 打开新页面时进入第二步。 9 退出浏览器时,卸载j a v a s e r i p t 解释器引擎部分,并释放动态分配的全局 资源及其所占的内存空间。 3 2 总体目标及设计思路 3 2 1 总体目标 m e r i t 是国外某公司开发的一款嵌入式浏览器,主要用于机顶盒,车载g p s ( g l o b a l p o s i t i o n i n gs y s t e m ,全球定位系统) ,智能手机等嵌入式设备等,它 提供了对h t m l 4 0 1 、x h t m l l 0 、c s s l 、c s s 2 ( 部分) 、j a v a s e r i p t l 5 等标准 和协议的良好支持。 m e r i t 的厂商专门进行嵌入式浏览器研发,作为其主打产品,m e r i t 必须有较 好的性能,能够比较优秀的显示网页,界面良好,并显示快捷。然而,在实际使 用中,却发现虽然该浏览器能够比较良好的显示网页,但在速度方面却有所不足。 经过调查发现,该浏览器的核心j s 引擎m 1 在速度方面有些欠缺。因此,决定 采用更好的一个开源j s 引擎s p i d e r m o n k e y 来替换原来的m 1 。 综合以上因素,我们提出了设计的总目标,即代码尺寸小,响应时间短,易 移植性强,便于剪裁,灵活配置,准确且高度稳定。 j s 引擎部分的功能特点及实现策略如下: 1 4 第三章j s 引擎移植的总体设计 1 功能灵活配置。用户可以手动配置是否支持弹出窗口,是否支持延后编 译等功能选项。 2 易于裁减。首先可以实现一个微内核,支持规范中规定的必须实现的j s 本地对象,j s 客户端对象,事件以及相应的事件处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论