




已阅读5页,还剩49页未读, 继续免费阅读
(计算机软件与理论专业论文)基于jvmti的实时性能剖析系统的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学硕士学位论文 摘要 随着j a v a 软件平台技术的不断发展,j a v a 软件的应用已经从桌面的应用延伸到企 业平台,大型信息系统,控制系统,嵌入式系统等各个方面。但由于j a v a 软件体系结构 的特点决定了j a v a 软件执行效率不如c c + + 软件,因此对j a v a 软件性能进行剖析是非 常有必要的。 当今的许多j a v a 应用程序都依赖于一组复杂的分布式依赖关系和移动部件。很多外 部因素都可能对应用程序的性能和可用性造成影响。这些影响基本上都无法完全消除或 解决,且难以在预生成环境中准确模拟。因此,有效地对j a v a 应用程序性能执行低级粒 度的剖析是明智的。剖析得到的数据可以很好的反映j a v a 应用程序的内在状态,并揭示 影响环境稳定性及性能的约束和因素。 j v m t i ( j a v av i r t u a lm a c h i n et o o li n t e r f a c e ) 是一套由j a v a 虚拟机提供的,为j a v a 虚 拟机相关工具提供的本地编程接口集合。j v m t i 提供了一套“代理 程序机制,可以支 持第三方工具程序以代理的方式连接和访问j a v a 虚拟机,并利用j v m t i 提供的丰富的 编程接口,完成许多与j a v a 虚拟机相关的功能。 本文研究了j v m t i 的代理程序机制,并在研究的基础上,设计与实现了一套性能 剖析接口,即j v m t i j a v a 接口。该接口提供给开发人员一个更高层次的j a v a 虚拟机剖 析编程接口,可以提高开发的效率。本文介绍了j v m t i j a v a 接口中使用的j n i 技术、剖 析代理本地库的设计与实现和j v m t i j a v a 接口的各功能子模块的划分,并详细介绍了 j v m t i j a v a 接口中内存快照子模块的具体实现。 最后本文从实际的企业需求出发设计并实现了一个实时性能剖析系统。该系统采用 b s 架构,客户可以通过w e b 浏览器查看j a v a 应用程序的运行状况。其中,系统利用 j v m t i j a v a 接口实现了对监视的j a v a 应用程序的虚拟机实例的性能剖析。另外,系统利 用了反向a j a x 的c o m e t 策略和f u s i o n c h a r t s 控件实现了在客户端中实时地显示剖析得 到的数据。最后进行了系统功能测试。 关键词:j a v a 虚拟机工具接口;性能剖析;反向a j a x 大连理工大学硕士学位论文 r e s e a r c ha n da p p l i c a t i o no fr e a lt i m ep e r f o r m a n c ep r o f i l i n gs y s t e m b a s e do nj v m l l a b s t r a c t w i t ht h ed e v e l o p i n go fj a v at e c h n o l o g y ,t h ea p p l i c a t i o n so fj a v as o f t w a r eh a v es p r e a d f r o md e s k t o pa p p l i c a t i o n st oe n t e r p r i s ep l a t f o r m s ,i n f o r m a t i o ns y s t e m s ,c o n t r o ls y s t e m sa n d e m b e d d e ds y s t e m s b u tt h ea r c h i t e c t u r eo f j a v as o f t w a r ed e t e r m i n e st h a tt h ej a v aa p p l i c a t i o n s a r en o t 嬲e f f e c t i v e 硒t h ea p p l i c a t i o n sd e v e l o p e db yc c + + s ot h ep e r f o r m a n c eo p t i m i z a t i o n o f j a v as o f t w a r ei sv e r yn e c e s s a r y m a n yc o n t e m p o r a r yj a v aa p p l i c a t i o n sr e l yo n ac o m p l e xs e to fd i s t r i b u t e dd e p e n d e n c i e s a n dm o v i n gp a r t s n u m e r o u se x t e r n a lf a c t o r sc a nh a v ea ni m p a c to ny o u ra p p l i c a t i o n s p e r f o r m a n c ea n da v a i l a b i l i t y t h e s e i n f l u e n c e sa r e v i r t u a l l yi m p o s s i b l e t oe l i m i n a t e c o m p l e t e l yo ra c c o u n tf o ra n da c c u r a t e l ye m u l a t ei nap r e p r o d u c t i o ne n v i r o n m e n t i ti sw i s e t od ol o w - l e v e lg r a n u l a rp r o f i l i n go f j a v ap e r f o r m a n c ee f f i c i e n t l y t h ed a t af r o mp r o f i l i n gc 锄 p r o v i d ev a l u a b l ei n s i g h t si n t os y s t e mo p e r a t i o na n dr e v e a lc o n s t r a i n t sa n di n f l u e n c e st h a t a f f e c ta ne n v i r o n m e n t ss t a b i l i t ya n dp e r f o r m a n c e t h ej v m t i ( j a v av i r t u a lm a c h i n et o o li n t e r f a c e ) i sap r o g r a m m i n gi n t e r f a c eu s e db y d e v e l o p m e n ta n dm o n i t o r i n gt o o l s i tp r o v i d e sb o t haw a y t oi n s p e c tt h es t a t ea n dt oc o n t r o l t h ee x e c u t i o no fa p p l i c a t i o n sr u n n i n gi nt h ej a v av i r t u a lm a c h i n e ( v m ) j v m t ii si n t e n d e dt o p r o v i d eav mi n t e r f a c ef o rt h ef u l lb r e a d t ho ft o o l st h a tn e e da c c e s st ov ms t a t e ,i n c l u d i n g b u tn o tl i m i t e dt o :p r o f i l i n g , d e b u g g i n g , m o n i t o r i n g , t h r e a da n a l y s i s ,a n dc o v e r a g ea n a l y s i s t o o l s t h i sp a p e rs t u d i e st h ej v m t ia g e n tm e c h a n i s m ,d e s i g n sa n di m p l e m e n t sj v m t i j a v a i n t e r f a c eb a s e do nt h es t u d y ,n a m e l yt h ej a v ap r o f i l i n gp r o g r a m m i n gi n t e r f a c eu s i n gj v m t i j v m t i j a v ai sah i g h e rl e v e li n t e r f a c ef o rp r o f i l i n gj a v av i r t u a lm a c h i n e w i t hj v m t i j a v a d e v e l o p e r sc a nw o r km o r ee f f i c i e n t l y t h i sp a p e ri n t r o d u c e st h ej n it e c h n o l o g yu s e di nt h e j v m t i j a v ai n t e r f a c e ,t h ed e s i g na n di m p l e m e n t a t i o no ft h en a t i v ep r o f i l i n ga g e n t ,t h e c l a s s i f i c a t i o na b o u tt h ej v m t i j a v ai n t e r f a c e ,a n dd e t a i l si l l u s t r a t e dt h ei m p l e m e n t a t i o no f m e m o r ys n a p s h o tf u n c t i o no ft h ej v m t i j a v ai n t e r f a c e f i n a l l yt h i sp a p e rd e s i g n sa n di m p l e m e n t sar e a l t i m ep e r f o r m a n c ep r o f i l i n gs y s t e m b a s e do nt h er e a ld e m a n do ft h ee n t e r p r i s e s t h i ss y s t e mu s e sb sf r a m e w o r k c u s t o m e r sc a n v i e wt h er u n n i n gs t a t u so fj a v aa p p l i c a t i o nv i aw e bb r o w s e r t h es y s t e ma c h i e v e st h e p e r f o r m a n c ep r o f i l i n ga b o u tt h ev i r t u a lm a c h i n ei n s t a n c eo fj a v aa p p l i c a t i o ni n s p e c t e db y i t s e l f f u r t h e r m o r e ,t h es y s t e mu s e sc o m e ts t r a t e g yo fr e v e r s ea j a xa n df u s i o n c h a r t s 基于j v m t i 的实时性能剖析系统的研究与应用 c o m p o n e n tt od i s p l a yt h er e a l t i m ep r o f i l i n gd a t ao b t a i n e df r o mt h es e v e r e n d a tl a s tat e s to f t h a ts y s t e mi sd o n e k e yw o r d s :j v m t i ;p e r f o r m a n c ep r o f i l i n g :r e v e r s ea j a x i v 大连理工大学学位论文独创性声明 作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究 工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外, 本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请 学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献 均已在论文中做了明确的说明并表示了谢意 若有不实之处,本人愿意承担相关法律责任。 学位论文题目: 作者签名: 基1j 叭t 1 钓寅时世畿言隔枣患瓣弓壶闻 大连理t 大学硕士研究生学位论文 大连理工大学学位论文版权使用授权书 本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间 论文工作的知识产权属于大连理工大学,允许论文被查阅和借阕。学校有 权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将 本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印、或扫描等复制手段保存和汇编本学位论文。 学位论文题目:孑j 洲t i 自舛藉寸- 世聚孛j 祈套统自b 新茏勺壶用 作者签名:! 鲣盟业 导师签名:整塾里 日期:2 q 9 3 年上月一日 日期:丛竺13 年l 月上日 大连理工大学硕士学位论文 1绪论 从世界上第一台计算机诞生开始算起,软件的存在已经有相当时间的历史了。仅仅 回忆一下十多年前,人们就会发现,在以前的d o s 时代,甚至是w i n d o w s9 5 的时代, 好像很少能听到对软件性能的抱怨,但在近几年,为什么对软件性能的关注突然变得强 烈起来了呢? 这种变化究竟是什么原因造成的昵? 在d o s 和w i n d o w s9 5 的时代,人们接触到的大量的应用都是单机的应用,对这类 单机应用来说,程序运行的速度基本上只与运行程序的本机相关,因此,只需要简单地 更换运行程序的设备就能很好地解决这个问题。而近年来,随着软件系统规模和复杂程 度的增加,人们接触到的系统都变得越来越巨大,在结构上,这些系统大多采用c s 或 b s 架构,大量的运算和处理都被放到服务端来实现,这种变化使得软件系统的性能影 响因素变得庞杂,很难通过简单的更换设备来解决。这时,采用类似单机时代的“更换 更好的设备 无论从经济性还是可实现性的角度来考虑,都完全不能满足需要;在这个 时候,人们对性能的关注才越来越多地集中在应用系统本身,而不仅仅是运行系统的设 备上【1 1 。 1 。1 课题背景 j a v a 是一个由s u n 公司开发而成的新一代编程语言。s u n 的j a v a 语言开发小组成立 于1 9 9 1 年,其目的是开拓消费类电子产品市场。该小组的领导人是j a m e sg o s l i n g ,他 为了使整个系统与平台无关,j a m e sg o s l i n g 首先从改写c 编译器着手。但是j a m e s g o s l i n g 在改写过程中感到仅c 是无法满足需要的,于是在1 9 9 1 年6 月份开始准备开发 一个新的语言,那么给它起一个什么名字呢? j a m e sg o s l i n g 回首向窗外望去,看见一棵 老橡树,于是建一个目录叫o a k ,这就是j a v a 语言的前身( 后来发现o a k 已是s u n 公司 另一个语言的注册商标,才改名为j a v a ,即太平洋上一个盛产咖啡的岛屿的名字) 。 1 9 9 5 年底,j a v a 程序设计语言在i n t e r a c t 舞台一亮相便名声大噪。其原因在于它有 望成为连接用户与信息的万能胶,而不论该信息来自w c b 服务器、数据库、信息提供 商,还是任何其他的信息源。事实上就发展前景而言,j a v a 的地位是独一无二的。它是 一种完全可信赖的程序设计语言,获得了除微软之外的所有主要厂商的认可。其固有的 可靠性与安全性不仅令j a v a 程序员放心,也令使用j a v a 程序的用户放心。j a v a 内建了 对网络编程、数据库连接、多线程等高级程序设计任务的支持。而随着j a v a 软件平台技 术的不断发展,j a v a 软件的应用也已经从简单桌面的应用延伸到企业平台,大型信息系 统,控制系统,嵌入式系统等各个方面i z j 。 基于j v m t i 的实时性能剖析系统的研究与应用 j a v a 编程语言的风格十分接近c + + 语言。j a v a 继承了c + + 语言面向对象技术的核心, 舍弃了c + + 语言中的指针( 以引用取代) 、运算符重载、多重继承( 以接1 3 取代) 等成分, 增加了自动垃圾收集功能用于回收不再被引用的对象所占据的内存空间p 】。 j a v a 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编 译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次 编译、到处执行 的跨平台特性,尽管这在一定程度上降低了j a v a 程序的运行效率。 j a v a 虚拟机是一个由软件实现的抽象的计算机硬件平台,它向下屏蔽了硬件的异质 和操作系统的异质,向上提供了统一的运行环境。因此,j a v a 编译器生成的目标代码可 以直接在j a v a 虚拟机上运行,无需考虑实际运行的硬件与操作系统环境。 j a v a 使得复杂应用的开发变得相对简单,毫无疑问,它的这种易用性对j a v a 的大 范围流行功不可没。然而,这种易用性实际上是一把双刃剑。一个设计良好的j a v a 程序, 性能表现往往不如一个同样设计良好的c + + 程序。因此,对j a v a 程序进行性能剖析就 显得十分的必要。通过对j a v a 程序性能的剖析,发现程序中的问题以及缺陷,对程序的 修改有很大的帮助。 1 2j a v a 性能剖析研究现状 当今,许多j a v a 应用程序都依赖于一组复杂的分布式依赖关系和移动部件。很多外 部因素都可能对应用程序的性能和可用性造成影响。这些影响基本上都无法完全消除或 解决,且难以在预生成环境中准确模拟。但是,开发人员可以创建并维护一个全面的系 统来监控应用程序的整个生态系统,从而显著降低这些事件的严重性和持续时间。 j a v a 应用程序运行时性能剖析对于实现和维护性能优异的系统至关重要。剖析得到 的j a v a 虚拟机数据可以很好的反映系统操作的内在状态,并揭示影响环境稳定性及性能 的约束和因素。 为了实现对j a v a 应用程序运行时性能剖析,s u n 公司提出了j a v a 平台调试架构( j a v a p l a t f o r md e b u g g e ra r c h i t e c t u r e ) ,它能够对一个运行中的j a v a 应用程序进行全方位调试 提供极大的帮助1 4 。j p d a 包括三层a p i : j d i ( j a v ad e b u gi n t e r f a c e ) 是一种支持远程调试的高级别编程语言接1 3 。 j d w p i ( j a v ad e b u gw i r ep r o t o c 0 1 ) 定义在调试过程和调试器前端之间传输的信息和 请求的格式。 j v m d l ( j a v av i r t u a lm a c h i n ed e b u gi n t e r f a c e ) 是低级别本地接1 3 ,定义了调试时j a v a 虚拟机必须提供的服务。 j a v as e 自1 2 2 版就开始推出j a v a 平台调试体系结构( j p d a ) 工具集,而从j d k1 3 x 大连理工大学硕士学位论文 开始,j a v as d k 就提供了对j a v a 平台调试体系结构的直接支持。顾名思义,这个体系 为开发人员提供了一整套用于调试j a v a 程序的a p i ,是一套用于开发j a v a 调试工具的 接口和协议。从本质上说,它是开发人员通向虚拟机,考察虚拟机运行态的一个通道, 一套工具。 j a v a 虚拟机工具接口提供了一种编程接口,允许软件开发人员创建软件代理以监视 和控制j a v a 应用程序。j v m t i 是j a v a2s o f t w a r ed e v e l o p m e n tk i t ( s d k ) ,s t a n d a r de d i t i o n , 版本1 5 0 中的一种新增功能。它取代了j a v av i r t u a lm a c h i n ep r o f i l i n gi n t e r f a e e ( j v m p i ) , 从版本1 1 起即作为j a v a2s d k 的一种实验功能包括在内。j v m t i 在多个方面改进了 j v m p i 的功能和性能i 孓。例如: j v m t i 依赖于每个事件的回调。这比j v m p i 设计使用需要编组和取消编组的事件 结构更有效。 j v m t i 包含四倍于j v m p i 的函数。 j v m t i 比j v m p i 提供更多类型的事件通知。 有些从未被充分利用的j v m p i 事件。 j v m t i 是基于功能的,而j v m p i 对于相应性能影响却是“要么全有,要么全无 。 j v m t i 增加堆功能的可伸缩性。 j v m l l 增加错误返回信息。 总之,j v m t i 技术的出现使得开发人员实现对j a v a 应用程序的性能执行低级粒度 的剖析成为可能。 自从s u n 公司发布j v m t i 技术以来,目前市场上出现了很多基于j v m t i 技术的j a v a 性能剖析软件,但是这些软件对于用户来说不够透明,扩展性不是很强。其次这些工具 都是国外公司开发的,国内尚未有相关产品。这些工具的核心技术如果都被国外软件厂 商所垄断,不利于国内软件的健康发展。另外功能全面的软件工具大多价格昂贵,不为 普通用户能够承受。而且这些软件都是以单机版的形式架构的,没有提供分布式实时显 示的功能。 虽然s u n 公司现在j a v as e5 中也发布了j m x ( j a v am a n a g e m e n te x t e n s i o n s ) 规范, 它是基于j a v a 平台的软件和网络管理提供统一的管理框架。j m x 规范是一套标准的代 理和服务,实际上,用户可以在任何j a v a 应用程序中使用这些代理和服务实现管理。它 可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集 成的系统、网络和服务管理应用1 8 捌。j m x 致力于解决分布式系统管理的问题,能够适 合于各种不同的环境。它使得分布式性能剖析变得简单,但对于没有采用j m x 架构的 系统,它就显得束手无策了。 基于j v m t i 的实时性能剖析系统的研究与应用 1 。3 本文的主要工作 本文详细阐述了基于j v m t i 以及a j a x 技术的实时j a v a 性能剖析系统整体设计与部 分实现。实现部分主要包括三个方面:实时数据的显示、对j a v a 虚拟机实例的剖析与 c o m e t 策略的部署和实现。值得一提的是,在性能剖析模块的设计中,本文利用j v m t i 提供的功能实现了一个可以从运行中j a v a 虚拟机实例中提取信息和数据的剖析代理本 地库( n a t i v el i b r a r y ) ,并利用j n i 技术对本地库中的函数进行包装,从而实现了一套j a v a 应用程序性能剖析的j a v aa p i ( 即j v m t i j a v a 接口) 。 1 4 论文内容的组织 本文首先介绍了近年来j a v a 平台的发展情况和应用领域,指出j a v a 应用程序运行 时性能剖析对于实现和维护性能优异的系统至关重要。讨论了j a v a 性能剖析的研究现 状,并介绍了本文的主要工作。 其次介绍了本系统开发过程中使用的主要技术,如a j a x 、d o m 、j n i 、j v m t i ,并 介绍了j a v a 虚拟机的体系结构。 然后提出了j v m t u a v a 的接口的概念,介绍了j v m t i j a v a 接口的具体实现中使用 的j n i 技术,讲解了j v m t i j a v a 接口中各子功能模块的作用,并详细介绍了j v m t l i a v a 接口中内存快照子模块的具体实现。 然后阐述了实时性能剖析系统的总体设计以及介绍了系统功能模块的划分。然后分 析了系统的流程。之后对系统功能的主要部分的实现进行了详细介绍,如异步操作模块 的部署、实时数据的显示、数据封装模块的实现等。最后进行了系统功能测试。 最后对全文工作进行总结并指出下一步的研究方向。 一4 一 大连理工大学硕士学位论文 2 系统开发相关技术 2 1 a j a x 2 1 1 a j a x 概述 匀强的全称是a s y n c h r o n o u sj a v a s c r i p ta n dx m l ,它不是一项新技术,而是很多成 熟技术的集合。然而a j a x 能作为一个新名词出现,而且吸引来了众多程序员的关注, 是其独特的魅力和w c b 开发中扮演的崭新角色决定的。和a p p l e t ,f l a s h 相比,a j a x 则 是一种轻量级的解决方案。因为它操作的基础是h t m l 或者是x h t m l ,使用的脚本语 言是j a v a s c r i p t ,这可以保证它的纯文本性质,它具有更好的搜索引擎友好性;设计出 色的a j a x 应用还可以很好地工作在1 日版本的设备上;利用x m l ,a j a x 可以和其他应用 程序方便地进行通信【埘。 a j a x 的主要部分有4 部分: ( 1 ) j a v a s c r i p t ,它可以编排页面元素,从而获得最佳a j a x 用户体验。 ( 2 ) c a s c a d i n gs t y l es h e e t s ( c s s ) ,它可以定义页面元素的可视样式。 ( 3 ) 文档对象模型( d o m ) ,它将网页结构作为一组可以使用j a v a s c r i p t 操作的可编 程对象提供。 ( 4 ) x m l h t t p r e q u e s t 对象,它支持以后台活动的形式从w e b 资源检索数据。 x m l h t t p r e q u e s t 对象是关键部分。x m l h t t p r e q u e s t 对象是a j a x 用于进行异步请 求的基础。它是浏览器中提供的j a v a s c r i p t 对象( m i c r o s o f t 和m o z i l l a 浏览器各有自已的 版本) 。图2 1 说明了该流程a j a x 利用x m l h t t p r e q u e s t 对象进行异步请求的流程图。该 流程如下: ( 1 ) 页面调用某个j a v a s c r i p t 。 ( 2 ) j a v a s c r i p t 函数创建x m l h t t p r e q u e s t 对象。这包括设置要调用的u r l 和唧 请求参数。 ( 3 ) j a v a s c r i p t 函数注册回调处理程序。唧响应调用此回调处理程序。 ( 4 ) j a v a s c r i p t 函数调用x m l h t t p r e q u e s t 对象上的s e n d 方法,该方法接着将帅 请求发送到服务器。 ( 5 ) x m l h t t p r e q u e s t 对象立即将控制返回到j a v a s c r i p t 方法。此时,用户可以继续 使用该页面。 ( 6 ) 稍后,h 1 曙服务器通过调用回调处理程序返回哪响应。 ( 7 ) 回调处理程序可以访问h t m ld o m 对象。它可以动态更新页面元素,而无需 基3 - j v m t i 的寅时性能剖析系统的研究与庸川 中断用户( 除非更新的是其他用户正在使用的d o m 对象1 陶2l a j a x 异步啸求“【程h e g21 f l o wc h a no l 撕a x ”一盈 212a j a x 框架总览 口前已经存在的a i a x 框架发展非常迅速,己经达到数十种之多,并且还在不断增 加。这些框架可以代替开发人员完成很多基础工作,使开发人员更加注于应用层面的 开发,以便将精力集中于满足用户需求与提高用户体验这一目标中米【1 “。每种a i a x 框 架都有各自的特点,同时也存在着优点与缺陷,丌发者们也都在努力不断地完善这些框 架。这些框架从总体上町以划分为基于浏览器端的框架和基于服务器端的框架两种类 型。洲览器端框架的特点是不需要由服务器端动恕生成j a v a s c r i p t 代码,而足通过页面 直接调用j a v a s c r i p t 库束完成相应的任务,冈而这种框架重点是基十客户端的浏览器。 服务器端框架通常以f - 面的两种方式工作: n 1 牛成h t m l 和j a v a s c f i p t :在服务器端生成h t m l 和j a v a s c r i p t 代码,然后再 发送到浏览器由其直接解析执行。 r 2 1 远程交互:浏览器端的j a v a s c r i p t 通过某种预定义的形式阔用服务器端的接口, 将回调旬柄返叫给浏览器端的j a v a s c r i p t 进行调用,或者只与服务器堂h 数据信且,例 如状态盎咖、数据库更新等。 213 d o j o 框架 d o j o 足一个强大的基于浏览嚣端的面向对象j a v a s c r i p t 框架。它的外发始十2 0 0 4 大连理工大学硕士学位论文 年9 月,在a j a x 众多框架中算是元老级的框架了。这一框架经过不断地开发与完善, 到目前为止,已经发展成为一个具有在各方面都较完善的j a v a s c r i p t 库,其功能涉及到 范围包括封装d o m 操作的j a v a s c r i p t 代码、x m l h t t p r e q u e s t 连接管理、视觉效果以及 具有丰富功能的u i 组件等。现在d o j o 正被越来越多地应用在实际的项目中,其优点是 代码库完善,文档较丰富,发展时间长,相对较成熟稳定,但同时也存在着文件体积大 的缺点【1 2 1 3 l 。图2 2 表示的是d o j o 的总体框架图。 图2 2d o j o 总体框架图 f i g 2 2a r c h i t e c t u r eo fd o j o d o j o 的相关功能按层次可以分为5 层: 最底层是d o j o 的打包系统,它是加载其他d o j o 模块的基础; 第2 层是j a v a s c r i p t 语言库,其中包括字符串处理、j a v a s c r i p t 语言的相关扩展函数 等: 第3 层是与运行环境相关的脚本库( j a v a s c r i p t 语言并不只能在浏览器中运行,它的 宿主可以是操作系统或者w e b 应用的服务器端,d o j o 的第1 、2 层实现是跟宿主运行环 堇丁j v m t l 的实时性能剖析系统的研究与麻川 境无关的1 ,包括d o m 、h t m l 相关函数等i 第4 层称为应用支持库,它可以帮助丌发人员通过更简单的方式丌发w e b 应用所 i 需的帽关特性,第4 层包含的内容很多,拖拽效果、远程调用、f o 操作、动画效果以 披存储接口等功能都是在第4 层卜实现的; 第5 层是w i d g e t 工具包它足实现各类页面w i d g e t 的基础。 214c w r 框架 d w r ( d i r e c t w e br e m o t i n g ) 是个基于服务器端的a j a x 开源框架,它对a i a x 进行 了封装,提供了种简单的方式柬使用a j a x 和x m l h t l p r e q u e s t 。d w r 包台服务器端 j a v a 库、一个d w rs e r v l e t 以及l a v a s c r l p t 库,它可以让浏览器上的j a v a s c r i p t 方法调用 运行在w e b 服务器上的j a v a 类的方法。d w r 很好的解决了j a v a 方法调用的同步特征 与a j a x 异步特性之问的矛盾,它把回调函数作为参数传递给j a v a 方法,处理完成后自 动谰用回啊哺数i ”】。 d w r 圈23d 眦的作机制 f i g2 3w o r k i n g m e c h a n i s m o f d w r d w r 允许将定义在胀务器端的对象上的方法直接暴露给a x 请求,从而可以直接 调用服务器l 的遵循ra j a x 原则的s e r v l e l 井获取处理结果。而通过反转技术动忐把 服务器端的j a v a 类7 p 成为j a v a s c r i p t 对强,泼机制将服务器端事件推送给浏览器,浏览 器端w e b 页面只颈结合到生成的j a v a s c r i p t 对象,就实现丁a j a x 技术的功能。这样w e b 月发人员就r 以在j a v a s c r i p t 瞿使用j a v a 代码就像它们足浏览器的本地代码f 客户端代码 大连理工大学硕士学位论文 一样,但是j a v a 代码是运行在w e b 服务器端而且可以自由访问w e b 服务器的资源这就 使广大j a v a 开发者从繁杂的j a v a s c r i p t 代码中解脱出来,可以专注于服务器端j a v a 代码 的开发,而由d w r 来动态生成基于j a v a 类的j a v a s c r i p t 代码,并推送给浏览器。 d w r 引擎包含两个主要部分,一个是在服务器端的运行的s e r v l e t ,它主要的工作 是处理请求并发送相应的信息给客户端。另一个是运行在客户端的j a v a s c r i p t 代码,它 负责发送请求并动态的改变页面。图2 3 表示了这个图片显示了d w r 如何选择一个下 拉列表的内容作为j a v a s c r i p t 的o n c l i c k 事件的结果。 2 2d o g d h t m l 是产生d o m 技术的开始。从n e t s c a p e 浏览器开始就引进了d o c u m e n t 对象、 f o r m 对象、t e x t 对象等元素,从而能在客户端对页面的内容做一些改动,这就是最初的 d h t m l 模型。到了n e t s c a p e 3 ,又增加了i m a g e 对象,并得到包括i e 3 浏览器在内的其 他浏览器的支持。 随着n e t s c a p e 4 浏览器和i e 4 浏览器的推出,两家浏览器开始设计自己的对象规范。 比如n e t s c a p e 4 浏览器中增加了l a y e r 标记和相应的层对象。而i e 4 浏览器则为自己的 d h t m l 模型增加了i n n e r h t m l 属性和s t y l e 对象。i n n e r h t m l 和s t y l c 已经成为a j a x 开发中必不可少的工具。 在前面两个d h t m l 出现之后,万维网联盟( w 3 c ) 指定了l 级文档对象模型,即 d o m l ,从而统一了标准。在d o m l 模型出现之后,d o m 2 、d o m 3 模型相继出现。 d o m l 主要针对h t m l 文档,而d o m 2 和d o m 3 完整定义了对x m l 文档对象的操作。 d o m 的全称是d o c u m e n to b j e c tm o d u l e ,及文档对象模型,它定义了操作文档对象 的接口。在这个模型中,一个文档被看成结构化的数据,对于x m l 就像一棵树的结构, 树中的每个结点对应一个x m l 标记,都是一个对象。例如w e b 页面的h t m l 文档, d o c u m e n t 就是根节点,其他的子对象,如链接、图片、表单等都是树叶。图2 4 显示了 一个表格在d o m 模型中的结构。 事实上,d o m 模型更多的是一个对象模型,并不依赖于结构,树状结构只是该模 型的一个实现。既然它是对象模型,也就规定了每个对象具有哪些接口,例如添加节点、 删除节点等。在a j a x 应用中,就通过这些接口来改变文档的状态,从而达到页面动态 显示的目的。 d o m 模型主要包括3 个部分,分别是:核心、h t m l 和x m l 。其中核心部分包括 了最底层的文档操作接口,适用于h t m l 和x m l ;h t m l 部分包括了针对h t m l 的操 作接口;x m l 部分定义了针对x m l 的操作接口。在1 9 9 8 年指定的d o m l 标准中,仅 一9 一 基于j v m t i 的实时性能剖析系统的研究与应用 包含了h t m l 的操作接口。 在a j a x 中,d o m 模型其实是最核心的结构,是所有a j a x 开发的基础架构。如果 没有d o m 模型,就没有办法在客户端改变页面的内容,所有的局部刷新、异步请求也 就无从实现熟练掌握d o m 模型的相关技术,才算真正掌握了a j a x 开发的精髓【l o l 。 图2 4 表格在d o m 中的结构 f i g 2 4 s t r u c t u r eo ft a b l ei nd o m 2 3j a v a 虚拟机 j a v a 虚拟机是一台抽象的计算机,其规范定义了每个j a v a 虚拟机都必须实现的特 性,但是为每个特定实现都留下了很多选择1 1 7 1 。j a v a 虚拟机的主要任务是装载c l a s s 文 件并且执行其中的字节码。在图2 5 中可以看到,j a v a 虚拟机包含一个类装载- 器( c l a s s l o a d e r ) ,它可以从程序和a p i 中装载c l a s s 文件。j a v aa p i 中只有程序执行时需要的那些 类才会被装载。字节码由执行引擎来执行。 不同的j a v a 虚拟机中,执行引擎可能实现得非常不同。由软件实现的虚拟机中,最 简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫 做“即时编译器”( j u s t i n t i m ec o m p i l e r ) 。在这种情况下,第一次被执行的字节码会被编 译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重 用。第三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码, 但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚 拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用的并不很频繁, 继续保留字节码由虚拟机继续解释它们。一个自适应的优化器可以使得j a v a 虚拟机 大连理工大学硕士学位论文 在8 0 - 9 0 的时间里执行被优化过的本地代码,而只需要编译1 0 一2 0 对性能有影响 的代码。最后一种虚拟机由硬件芯片构成,它用本地方法执行j a v a 字节码,这种执行引 擎实际上是内嵌在芯片里的【1 剐。 j a v a 虚拟帆 巴到 类装载器 巴判 1r 执行引擎 图2 5j a v a 虚拟机的基本结构 f i g 2 5 b a s i cd i a g r a mo f j a v av i r t u a lm a c h i n e 在j a v a 虚拟机规范中,一个j a v a 虚拟机实例的行为是分别按照子系统、内存区、 数据类型以及指令这几个术语来描述的旧。这些组成部分一起展示了抽象的虚拟机的内 部抽象体系结构。图2 6 表示了j a v a 虚拟机的内部体系结构,包括了规范中描述的主要 子系统和内存区。之前提到过,每个j a v a 虚拟机都有一个类装载器子系统,它根据给定 的全限定名来装入类型( 类或接口) 。同样,每个j a v a 虚拟机都有一个执行引擎,它负责 执行那些包含在被装载类的方法中的指令。 当j a v a 虚拟机运行一个程序时,它需要内存来存储许多东西,例如,字节码,从已 装载的c l a s s 文件中得到的其他信息,程序创建的对象,传递给方法的参数,返回值, 局部变量,以及运算的中间结果等等。j a v a 虚拟机把这些东西都组织到几个“运行时数 据区 中,以便于管理。 某些运行时数据区是由程序中所有线程共享的,还有一些则只能由一个线程拥有。 每个j a v a 虚拟机实例都有一个方法区以及一个堆,它们是由该虚拟机实例中所有线程共 享的。当虚拟机装载一个c l a s s 文件时,它会从这个c l a s s 文件包含的二进制数据中解析 类型信息。然后,它把这些类型信息放到方法区中。当程序运行时,虚拟机会把所有该 程序在运行时创建的对象都放到堆中。 基于n 仆f n 的实时性能剖析系统的研究与应用 当每一个新线程被创建时,它都是得到它自己的p c 寄存器( 程序计数器) 以及一个 j a v a 栈。如果线程正在执行的是一个j a v a 方法( 非本地方法) ,那么p c 寄存器的值将总 是指示下一条将被执行的指令,而它的j a v a 栈则总是存储该线程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影视版权收益转让合同范本
- 医疗废水排放监测与环境保护措施
- 工程信息化进度控制措施
- 2022年度企业税务合规风险评估报告
- 内部安全题库及答案解析
- 武安铸造安全培训试题及答案解析
- 医疗年度工作计划制定指南
- 大学英语听力高频词汇及练习
- 基金从业考试 估分及答案解析
- 安全管理员a7考试题库及答案解析
- 部编版小学道德与法治五年级上册复习提纲及知识点总结(全册)
- 《最后一片叶子》课件 2024年高教版(2023)中职语文基础模块上册
- 预防校园欺凌二年级主题班会
- 英语四级700核心词汇【含音标】
- 近场光学显微技术原理及应用
- 机械类外文文献翻译(中英文翻译)
- 液压支架修理的工艺流程图
- 支局一点一策
- 麻风病防治知识课件
- 工程项目管理(第五版)丛培经 第一章
- 中药制剂检验的程序
评论
0/150
提交评论