毕业论文外文翻译--JavaScript程序的动态行为分析

上传人:zhuma****mei1 文档编号:54099463 上传时间:2018-09-07 格式:DOC 页数:12 大小:49KB
返回 下载 相关 举报
毕业论文外文翻译--JavaScript程序的动态行为分析_第1页
第1页 / 共12页
毕业论文外文翻译--JavaScript程序的动态行为分析_第2页
第2页 / 共12页
毕业论文外文翻译--JavaScript程序的动态行为分析_第3页
第3页 / 共12页
毕业论文外文翻译--JavaScript程序的动态行为分析_第4页
第4页 / 共12页
毕业论文外文翻译--JavaScript程序的动态行为分析_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《毕业论文外文翻译--JavaScript程序的动态行为分析》由会员分享,可在线阅读,更多相关《毕业论文外文翻译--JavaScript程序的动态行为分析(12页珍藏版)》请在金锄头文库上搜索。

1、 中原工学院信息商务学院毕业设计(论文)译文专用纸 第 1 页JavaScript 程序的动态行为分析 摘要摘要JavaScript 编程语言是广泛用于 web 编程的语言,也越来越多地用于特定目的的计算。因此,如何提高正确性、安全性和 JavaScript 应用程序的性能就成为了推动类型系统分析,静态分析和编译技术研究等领域发展的动力之一。许多这些技术都旨在研究在一些最具有动态特性的语言,然而很少人会清楚的知道程序员是如何利用语言的这些特性。在本文中,我们将研究一些广泛使用JavaScript 程序的动态行为,并分析如何以及为什么使用这些动态特性。我们将根据这些 JavaScript 程序得

2、出具体的动态程度,并与目前参考文献中使用的假定数据和通用工业标准中的数据进行比较。关键词:关键词:动态行为;执行跟踪;动态指标;程序分析;JavaScript1、介绍、介绍 JavaScript 是一种面向对象的语言,它可以通过客户端的可执行代码让用户实现和网站的交互,它是在 1995 年由 Netscape 公司的 Brendan Eich 设计出的。它不同于 Java、C或 Smalltalk 这些传统语言,它不具有类,也不鼓励封装,甚至是结构化编程。与之对应的是,JavaScript 十分强调编程语言的灵活性。JavaScript 的成功是不可否认的。据相关数据显示,当前最流行的 100

3、 个网站中有 97 个都使用了它.同时,JavaScript 语言还成为了许多办公应用、浏览器应用以及开发环境等的通用计算平台。它一直被誉为互联网界的“汇编语言” ,和Java 以及 Scheme 语言类似,JavaScript 需要代码生成工具的解释。由于这种成功,JavaScript 的已经赢得了学术界的重视和尊重,而研究人员也开始将目光都集中在三个主要问题:安全性,正确性和性能。安全性可以说是 JavaScript 所中原工学院信息商务学院毕业设计(论文)译文专用纸 第 2 页要解决的最紧迫的问题:到目前为止,已经发生了一些利用语言的动态性能进行恶意攻击的案例(主要是能够利用 JavaS

4、cript 访问和修改共享文件的特点,通过 eval 函数植入恶意代码) 。研究人员已经提出一些解决方法,比如将静态分析和实时监控结合起来,以防御一些已知的攻击。另一个研究方向则致力于提供更好的检测工具,以帮助开发者尽早的发现程序中的漏洞。作为一种弱类型语言,JavaScript 没有类型声明,并且只有再被访问和调用时才进行实时监控,因此为 JavaScript 提供静态类型的系统也就成为了很自然的事情。最后,在被忽视了很长时间以后,JavaScript 实现很大的进步,目前最先进的即时编译技术得到了应用。2、动机及相关工作、动机及相关工作我们最初研究 JavaScript 的动力在于评估一个

5、静态类型的系统是否能成功的验证现有的 JavaScript 程序。其他动态语言,如 Scheme 语言就成功的逐步应用到了类型系统中,但是其他方面的进展就相对有些停滞,比如缺乏有关面向对象的扩展的类型检查(Scheme 中用宏来实现) 。对于 JavaScript,Anderson 等人提出了一种具有明确类型和潜在类型的类型系统,而 Heidegger 和 Thiemann等人则把他们之前的工作向前推进了一步,加入了一些最新的类型,Furr 等人则为 DRuby 提出了一种相关的系统。所有这些类型系统都可以接受目标语言的一些简单的简化,但是他们要依靠相当类似假设。举例来说,Thiemann 写

6、道:“通常情况下,在初始化后几不会再定义其他的类型了,而且对象的类型也基本不会发生变化。 ”常见的关于常见的关于 JavaScript 的动态行为的假设。的动态行为的假设。我们将在下文中继续列举一些被公开发表或约定俗成的假设,这些假设已经在参考文献和具体程序中得到了中原工学院信息商务学院毕业设计(论文)译文专用纸 第 3 页广泛的应用。1.prototype 对象的层次结构是不变的。对象的层次结构是不变的。在创建一个新对象时,Prototype 层次的结构不会改变的假设对于一个类型系统的运行是非常重要的,因此我们甚至不会选择给出 prototype 对象的模型。关于静态分析的研究很典型,通常它

7、们不涉及到 prototype 的更新或变化,然而,任何关于 prototype 层次结构的改变都有可能影响到应用程序的控制流程,而那些受到影响的对象的类型也会出现变数。2.在对象初始化时属性被添加。在对象初始化时属性被添加。大家一般都认为,对于动态语言来说,存在一个类似于“初始化阶段”的时段,大部分的动态行为在这个时段发生,而在这个时段后应用程序大多都是静态的。那么具体到 JavaScript 的情形,就是假设作用域和对象方法的大部分变化都是在初始化阶段完成的,因此在创建对象时就已经确定类型的大部分,只留有一小部分属性待定这样的方法就显得合情合理了。3.属性很少被删除。属性很少被删除。在一个

8、类型系统中删除方法或作用域是很难的,因为这样一来就等于它允许了类型的发展非单调,这会破坏现代类型语言中默认执行的子类型化保证。如果删除的是一个特殊的情况(一个可以预测的情况) ,人们可以对这些未来可能被删除的属性使用一些潜在的类型。但是,这样做会减少我们使用类型系统所带来的好处,这可能是为什么一些相关的研究禁止这种做法的原因。静态分析方法通常更能接受这种不严密的做法,也可以对删除做出处理,但我们到目前还没有发现任何关于现有数据流分析技术的解释。4.使用使用 eval 函数是罕见的而且不影响语义。函数是罕见的而且不影响语义。Eval 函数通常被用来计算任意字符串,它有可能使静态分析或静态类型检查

9、得到结果是无效的。因此,很多中原工学院信息商务学院毕业设计(论文)译文专用纸 第 4 页文献就直接忽视了它,而另一些文献则假定这些使用的影响是微不足道的,或者使用这些参考了 JSON 反序列化协议。5.已声明函数的特征能够说明其类型。已声明函数的特征能够说明其类型。JavaScript 里的类型系统已经声明的函数的元数能够说明它在调用时所使用的方法,当然这种情况不是必须的,因为 JavaScript 允许不同元数的调用。6.程序的大小是合适的。程序的大小是合适的。很多论文都花费大量笔墨明确指出,他们假定所研究的 JavaScript 程序是一些小型的程序,而且另一些则暗示了这一点,因为他们向大

10、家介绍说现有的理论分析不能扩展到大型系统中去。7.调用现场的动态行为很少。调用现场的动态行为很少。一些出色的 JavaScript 程序的完善和优化,如谷歌的 V8 ,需要依赖一些已经成名的实现技术,比如对象创建类(就像 Java一样)和内联缓存。如果 JavaScript 的行为大致类似于其它面向对象的语言,这些技术会带来良好的性能和使用效果。8.执行时间主要由循环决定。执行时间主要由循环决定。一些基于跟踪的即时编译器,比如TraceMonkey 等,它们工作的基础就建立在程序的执行时间主要由小循环决定这个传统的假设上。9.行业基准能够反映行业基准能够反映 JavaScript 的工作负荷。

11、的工作负荷。如 SunSpider,Dromaeo 和V8 这样的基准测试平台是用来评价和比较 JavaScript 的实现性能和计算静态分析技术的准确性的。但是,从使用这些基准测试平台得到的结论只有在一种情况下是有意义的,那就是它们能够准确地反映出在现实世界中运行的 JavaScript程序的工作负荷区间。本文的目的是提供支持或否定以上假设的证据。我们不是要质疑以前的研究成果的准确性,即使上述假设的一部分是被证明毫无依据的,以前的研究成中原工学院信息商务学院毕业设计(论文)译文专用纸 第 5 页果仍然可以为我们研究 JavaScript 提供一个有用的基础和出发点。但是我们想要强调这些已经广

12、泛采用的现有技术的限制,并且指出在今后的研究中要面临的挑战。相关工作。相关工作。到目前为止,据我们所知,还没有可以在深度和广度上具有相当规模的 JavaScript 程序的动态行为的研究。Ratanaworabhan 等人已经进行过和我们类似的研究,其最终结果也是和我们相似的。以前在 javascript 应用到安全领域时也确实有一些关于其动态行为的研究,但是那些研究只侧重于和安全性紧密相关的部分。我们也曾进行过一些小规模的 JavaScript 研究,并得出了一些初步结果 Harland,这些结果与这里提出的最新研究结果也是相吻合的。Holkner 和也曾就 Python 语言动态特性的应用

13、进行过研究(添加和删除作用域和方法) ,它们的研究重点集中在一系列小的程序上面,并得出了它们之间存在明确区别的结论。他们的研究表明,动态特性中的大部分都出现在程序的初始化阶段,而在程序的主要运算阶段,动态行为就逐渐减少了。我们的研究结果表明,在应用方面,JavaScript 比 Python 更加动态化。关于面向对象语言在实时运行中的特性研究也有很多,比如 Garret 等人研究了 Self 语言中信息发送的动态程度,Calder 等人则分析了 C 和 C+程序运行中的差异,Temporo 等人研究了 Java 中继承的应用等。之前的这些研究都对某种特定语言的某个特殊方面进行了非常详尽的研究,

14、收到他们的鼓舞,我们决定争取为 JavaScript 也做出一个类似的概述,并为未来的研究留下一些详细的数据以供参考。最后,我们的工作得到了 Dufour 等人的启发,他们就 Java 的运行指标进行了严格的框架讨论。3、跟踪和分析技术基础、跟踪和分析技术基础中原工学院信息商务学院毕业设计(论文)译文专用纸 第 6 页本文对基础结构和跟踪的研究是基于 WebKit 的网页浏览器引擎的一个可以测量数据的版本,这个引擎现在被应用到了 Apple 的 Safari 浏览器上。虽然有可用的独立解释程序,他们却无法处理目前在大部分支持 JavaScript 的网站常见的 DOM 和 AJAX 技术。为了

15、提高实验的灵活性,我们的分析是在离线状态下进行的。我们的浏览器记录下由解释程序带来的大部分操作(读,写,删除,调用,定义等) ,同样作为垃圾收集和源文件加载的事件也会被跟踪。Eval函数触发一个特定事件的情形和源文件加载的情形是相似的,而经过计算的字符串也将被保存,并像程序执行时的其他部分一样被追踪分析。已经追踪到的痕迹被压缩并存储到磁盘中。虽然它在执行时有一些额外的开销,但是我们用来测试的工具在运行交互应用时的速度并没有受到影响,并且我们的用户也没有对性能有任何的抱怨。然后我们在离线状态下分析了这些数据,并将结果存储在一个数据库中进行数据挖掘。离线痕迹分析组件实质上是对抽象流的解释。它是能够

16、重现这些痕迹的,并为相应的 JavaScript 程序得出一个关于堆状态的抽象解释。痕迹分析仪中把包括了关于程序动态行为的丰富的和可定制的历史信息,比如访问每个对象的历史,调用现场和分配网站等等。最后,一些静态分析(EVAL 分类,代码大小的度量)是基于被恢复的源文件运行的,它使用了 Rhino 的 JavaScript 编译器的框架解析技术。4、结论、结论本文提供了第一个大规模的研究 JavaScript 程序在运行时的行为。我们已经识别出一组字节代表实际的程序,这组字节的大小范围为数百千字节到兆字节,我们对每个网站都记录了很多痕迹,然后使用相应的编译仪器与离线分析工具从痕迹中提取了行为信息。我们使用此信息来评估清单中的 9 个关于 JavaScript中原工学院信息商务学院毕业设计(论文)译文专用纸 第 7 页程序的常用假设。原文出处:http:/ Analy

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号