ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:21.90KB ,
资源ID:64019      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/64019.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JavaScript程序中英文对照外文翻译文献.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JavaScript程序中英文对照外文翻译文献.docx

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

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

3、还成为了许多办公应用、浏览器应用以及开发环境等的通用计算平台。它一直被誉为互联网界的“汇编语言”,和 Java 以及 Scheme 语言类似,JavaScript 需要代码生成工具的解释。由于这种成功,JavaScript 的已经赢得了学术界的重视和尊重,而研究人员也开始将目光都集中在三个主要问题:安全性,正确性和性能。安全性可以说是JavaScript 所要解决的最紧迫的问题:到目前为止,已经发生了一些利用语言的动态性能进行恶意攻击的案例(主要是能够利用JavaScript 访问和修改共享文件的特点,通过eval 函数植入恶意代码)。研究人员已经提出一些解决方法,比如将静态分析和实时监控结合

4、起来,以防御一些已知的攻击。另一个研究方向则致力于提供更好的检测工具,以帮助开发者尽早的发现程序中的漏洞。作为一种弱类型语言,JavaScript 没有类型声明,并且只有再被访问和调用时才进行实时监控,因此为 JavaScript 提供静态类型的系统也就成为了很自然的事情。最后,在被忽视了很长时间以后,JavaScript 实现很大的进步,目前最先进的即时编译技术得到了应用。2、动机及相关工作我们最初研究 JavaScript 的动力在于评估一个静态类型的系统是否能成功的验证现有的 JavaScript 程序。其他动态语言,如 Scheme 语言就成功的逐步应用到了类型系统中,但是其他方面的进

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

6、下文中继续列举一些被公开发表或约定俗成的假设,这些假设已经在参考文献和具体程序中得到了广泛的应用。1. prototype 对象的层次结构是不变的。在创建一个新对象时,Prototype 层次的结构不会改变的假设对于一个类型系统的运行是非常重要的,因此我们甚至不会选择给出 prototype 对象的模型。关于静态分析的研究很典型,通常它们不涉及到 prototype 的更新或变化,然而,任何关于 prototype 层次结构的改变都有可能影响到应用程序的控制流程,而那些受到影响的对象的类型也会出现变数。2. 在对象初始化时属性被添加。大家一般都认为,对于动态语言来说,存在一个类似于“初始化阶段

7、”的时段,大部分的动态行为在这个时段发生,而在这个时段后应用程序大多都是静态的。那么具体到 JavaScript 的情形,就是假设作用域和对象方法的大部分变化都是在初始化阶段完成的,因此在创建对象时就已经确定类型的大部分,只留有一小部分属性待定这样的方法就显得合情合理了。3. 属性很少被删除。在一个类型系统中删除方法或作用域是很难的,因为这样一来就等于它允许了类型的发展非单调,这会破坏现代类型语言中默认执行的子类型化保证。如果删除的是一个特殊的情况(一个可以预测的情况),人们可以对这些未来可能被删除的属性使用一些潜在的类型。但是,这样做会减少我们使用类型系统所带来的好处,这可能是为什么一些相关

8、的研究禁止这种做法的原因。静态分析方法通常更能接受这种不严密的做法,也可以对删除做出处理,但我们到目前还没有发现任何关于现有数据流分析技术的解释。4. 使用 eval 函数是罕见的而且不影响语义。Eval 函数通常被用来计算任意字符串,它有可能使静态分析或静态类型检查得到结果是无效的。因此,很多文献就直接忽视了它,而另一些文献则假定这些使用的影响是微不足道的,或者使用这些参考了 JSON 反序列化协议。5. 已声明函数的特征能够说明其类型。JavaScript 里的类型系统已经声明的函数的元数能够说明它在调用时所使用的方法,当然这种情况不是必须的,因为JavaScript 允许不同元数的调用。

9、6. 程序的大小是合适的。很多论文都花费大量笔墨明确指出,他们假定所研究的 JavaScript 程序是一些小型的程序,而且另一些则暗示了这一点,因为他们向大家介绍说现有的理论分析不能扩展到大型系统中去。7. 调用现场的动态行为很少。一些出色的 JavaScript 程序的完善和优化,如谷歌的 V8 ,需要依赖一些已经成名的实现技术,比如对象创建类(就像 Java 一样)和内联缓存。如果JavaScript 的行为大致类似于其它面向对象的语言,这些技术会带来良好的性能和使用效果。8. 执行时间主要由循环决定。一些基于跟踪的即时编译器,比如 TraceMonkey 等,它们工作的基础就建立在程序

10、的执行时间主要由小循环决定这个传统的假设上。9. 行业基准能够反映 JavaScript 的工作负荷。如 SunSpider,Dromaeo 和 V8 这样的基准测试平台是用来评价和比较 JavaScript 的实现性能和计算静态分析技术的准确性的。但是,从使用这些基准测试平台得到的结论只有在一种情况下是有意义的,那就是它们能够准确地反映出在现实世界中运行的JavaScript 程序的工作负荷区间。本文的目的是提供支持或否定以上假设的证据。我们不是要质疑以前的研究成果的准确性,即使上述假设的一部分是被证明毫无依据的,以前的研究成果仍然可以为我们研究 JavaScript 提供一个有用的基础和出

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

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

13、了非常详尽的研究,收到他们的鼓舞,我们决定争取为 JavaScript 也做出一个类似的概述,并为未来的研究留下一些详细的数据以供参考。最后,我们的工作得到了 Dufour 等人的启发, 他们就 Java 的运行指标进行了严格的框架讨论。3、跟踪和分析技术基础本文对基础结构和跟踪的研究是基于WebKit 的网页浏览器引擎的一个可以测量数据的版本,这个引擎现在被应用到了Apple 的 Safari 浏览器上。虽然有可用的独立解释程序,他们却无法处理目前在大部分支持JavaScript 的网站常见的DOM 和 AJAX 技术。为了提高实验的灵活性,我们的分析是在离线状态下进行的。我们的浏览器记录下

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

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

16、用假设。An Analysis of the Dynamic Behavior of JavaScript ProgramsAbstractThe JavaScript programming language is widely used for web programming and, increasingly, for general purpose computing.As such, improving the correctness, security and performance of JavaScript applications has been the driving force for research intype systems, static analysis and compiler technique

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1