教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 高等教育> 其它> JavaScript程序的动态行为分析毕业论文外文文献翻译及原文

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

  毕 业 设 计(论文)

  外 文 文 献 翻 译

  文献、资料中文题目:JavaScript程序的动态行为分析 文献、资料英文题目:

  文献、资料来源:

  文献、资料发表(出版)日期:

  院 (部):

  专 业:

  班 级:

  姓 名:

  学 号:

  指导教师:

  翻译日期: 2017.02.14

  JavaScript程序的动态行为分析

  摘要

  JavaScript编程语言是广泛用于web编程的语言,也越来越多地用于特定目的的计算。因此,如何提高正确性、安全性和JavaScript应用程序的性能就成为了推动类型系统分析,静态分析和编译技术研究等领域发展的动力之一。许多这些技术都旨在研究在一些最具有动态特性的语言,然而很少人会清楚的知道程序员是如何利用语言的这些特性。在本文中,我们将研究一些广泛使用JavaScript程序的动态行为,并分析如何以及为什么使用这些动态特性。我们将根据这些JavaScript程序得出具体的动态程度,并与目前参考文献中使用的假定数据和通用工业标准中的数据进行比较。

  关键词:动态行为;执行跟踪;动态指标;程序分析;JavaScript

  1、介绍

  JavaScript是一种面向对象的语言,它可以通过客户端的可执行代码让用户实现和网站的交互,它是在1995年由Netscape公司的Brendan Eich设计出的。它不同于Java、C#或Smalltalk这些传统语言,它不具有类,也不鼓励封装,甚至是结构化编程。与之对应的是,JavaScript十分强调编程语言的灵活性。JavaScript的成功是不可否认的。据相关数据显示,当前最流行的100个网站中有97个都使用了它.同时,JavaScript语言还成为了许多办公应用、浏览器应用以及开发环境等的通用计算平台。它一直被誉为互联网界的“汇编语言”,和Java以及Scheme语言类似,JavaScript需要代码生成工具的解释。由于这种成功,JavaScript的已经赢得了学术界的重视和尊重,而研究人员也开始将目光都集中在三个主要问题:安全性,正确性和性能。安全性可以说是JavaScript所要解决

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

  2、动机及相关工作

  我们最初研究JavaScript的动力在于评估一个静态类型的系统是否能成功的验证现有的JavaScript程序。其他动态语言,如Scheme语言就成功的逐步应用到了类型系统中,但是其他方面的进展就相对有些停滞,比如缺乏有关面向对象的扩展的类型检查(Scheme中用宏来实现)。对于JavaScript,Anderson等人提出了一种具有明确类型和潜在类型的类型系统,而Heidegger和Thiemann等人则把他们之前的工作向前推进了一步,加入了一些最新的类型,Furr等人则为DRuby提出了一种相关的系统。所有这些类型系统都可以接受目标语言的一些简单的简化,但是他们要依靠相当类似假设。举例来说,Thiemann写道:“通常情况下,在初始化后几不会再定义其他的类型了,而且对象的类型也基本不会发生变化。”

  常见的关于JavaScript的动态行为的假设。我们将在下文中继续列举一些被公开发表或约定俗成的假设,这些假设已经在参考文献和具体程序中得到了广泛的应用。

  1.prototype对象的层次结构是不变的。在创建一个新对象时,Prototype层次的结构不会改变的假设对于一个类型系统的运行是非常重要的,因此我们甚至不会选择给出prototype对象的模型。关于静态分析的研究很典型,通常它们不涉及到prototype的更新或变化,然而,任何关于prototype层次结构的改变都有可能影响到应用程序的控制流程,而那些受到影响的对象的类型也会出现变数。

  2.在对象初始化时属性被添加。大家一般都认为,对于动态语言来说,存在一个类似于“初始化阶段”的时段,大部分的动态行为在这个时段发生,而在这个时段后应用程序大多都是静态的。那么具体到JavaScript的情形,就是假设作用域和对象方法的大部分变化都是在初始化阶段完成的,因此在创建对象时就已经确定类型的大部分,只留有一小部分属性待定这样的方法就显得合情合理了。

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

  4.使用eval函数是罕见的而且不影响语义。Eval函数通常被用来计算任意字符串,它有可能使静态分析或静态类型检查得到结果是无效的。因此,很多文献就直接忽视了它,而另一些文献则假定这些使用的影响是微不足道的,或者使用这些参考了JSON反序列化协议。

  5.已声明函数的特征能够说明其类型。JavaScript 里的类型系统已经声明的

  函数的元数能够说明它在调用时所使用的方法,当然这种情况不是必须的,因为JavaScript允许不同元数的调用。

  6.程序的大小是合适的。很多论文都花费大量笔墨明确指出,他们假定所研究的JavaScript程序是一些小型的程序,而且另一些则暗示了这一点,因为他们向大家介绍说现有的理论分析不能扩展到大型系统中去。

  7.调用现场的动态行为很少。一些出色的JavaScript程序的完善和优化,如谷歌的V8 ,需要依赖一些已经成名的实现技术,比如对象创建类(就像Java一样)和内联缓存。如果JavaScript的行为大致类似于其它面向对象的语言,这些技术会带来良好的性能和使用效果。

  8.执行时间主要由循环决定。一些基于跟踪的即时编译器,比如TraceMonkey等,它们工作的基础就建立在程序的执行时间主要由小循环决定这个传统的假设上。

  9.行业基准能够反映JavaScript的工作负荷。如SunSpider,Dromaeo和V8这样的基准测试平台是用来评价和比较JavaScript的实现性能和计算静态分析技术的准确性的。但是,从使用这些基准测试平台得到的结论只有在一种情况下是有意义的,那就是它们能够准确地反映出在现实世界中运行的JavaScript程序的工作负荷区间。

  本文的目的是提供支持或否定以上假设的证据。我们不是要质疑以前的研究成果的准确性,即使上述假设的一部分是被证明毫无依据的,以前的研究成果仍然可以为我们研究JavaScript提供一个有用的基础和出发点。但是我们想要强调这些已经广泛采用的现有技术的限制,并且指出在今后的研究中要面临的挑战。

  相关工作。到目前为止,据我们所知,还没有可以在深度和广度上具有相当

  规模的JavaScript程序的动态行为的研究。Ratanaworabhan等人已经进行过和我们类似的研究,其最终结果也是和我们相似的。以前在javascript应用到安全领域时也确实有一些关于其动态行为的研究,但是那些研究只侧重于和安全性紧密相关的部分。我们也曾进行过一些小规模的JavaScript研究,并得出了一些初步结果Harland,这些结果与这里提出的最新研究结果也是相吻合的。Holkner和也曾就Python语言动态特性的应用进行过研究(添加和删除作用域和方法),它们的研究重点集中在一系列小的程序上面,并得出了它们之间存在明确区别的结论。他们的研究表明,动态特性中的大部分都出现在程序的初始化阶段,而在程序的主要运算阶段,动态行为就逐渐减少了。我们的研究结果表明,在应用方面,JavaScript比Python更加动态化。关于面向对象语言在实时运行中的特性研究也有很多,比如Garret等人研究了Self语言中信息发送的动态程度,Calder等人则分析了C和C++程序运行中的差异,Temporo等人研究了Java中继承的应用等。之前的这些研究都对某种特定语言的某个特殊方面进行了非常详尽的研究,收到他们的鼓舞,我们决定争取为JavaScript也做出一个类似的概述,并为未来的研究留下一些详细的数据以供参考。最后,我们的工作得到了Dufour等人的启发,他们就Java的运行指标进行了严格的框架讨论。

  3、跟踪和分析技术基础

  本文对基础结构和跟踪的研究是基于WebKit的网页浏览器引擎的一个可以测量数据的版本,这个引擎现在被应用到了Apple的Safari浏览器上。虽然有可用的独立解释程序,他们却无法处理目前在大部分支持JavaScript的网站常见的DOM和AJAX技术。为了提高实验的灵活性,我们的分析是在离线状态下进行的。我们的浏览器记录下由解释程序带来的大部分操作(读,写,删除,调用,

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

外研版英语七年级下册module3 unit2第二课时
三年级英语单词记忆下册(沪教版)第一二单元复习
【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
冀教版小学数学二年级下册第二单元《租船问题》
《空中课堂》二年级下册 数学第一单元第1课时
外研版英语三起6年级下册(14版)Module3 Unit1
沪教版八年级下册数学练习册21.3(2)分式方程P15
沪教版牛津小学英语(深圳用) 六年级下册 Unit 7
沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
外研版英语三起5年级下册(14版)Module3 Unit2
8.练习八_第一课时(特等奖)(苏教版三年级上册)_T142692
外研版英语七年级下册module1unit3名词性物主代词讲解
30.3 由不共线三点的坐标确定二次函数_第一课时(市一等奖)(冀教版九年级下册)_T144342
化学九年级下册全册同步 人教版 第25集 生活中常见的盐(二)
精品·同步课程 历史 八年级 上册 第15集 近代科学技术与思想文化
8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
北师大版数学四年级下册第三单元第四节街心广场
沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
苏教版二年级下册数学《认识东、南、西、北》
飞翔英语—冀教版(三起)英语三年级下册Lesson 2 Cats and Dogs
冀教版小学英语五年级下册lesson2教学视频(2)
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,广东省
北师大版八年级物理下册 第六章 常见的光学仪器(二)探究凸透镜成像的规律
化学九年级下册全册同步 人教版 第22集 酸和碱的中和反应(一)
8 随形想象_第一课时(二等奖)(沪教版二年级上册)_T3786594
第8课 对称剪纸_第一课时(二等奖)(沪书画版二年级上册)_T3784187
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
3.2 数学二年级下册第二单元 表内除法(一)整理和复习 李菲菲