版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计外文资料翻译学 院: 专业班级: 学生姓名: 学 号: 指导教师: 附 件:外文资料翻译译文; 2.外文原文 指导老师评语: 工作态度认真,英文资料选择合理,与毕业论文相关度高。能在规定的时间内完成翻译任务,工作量饱满;语言较为通顺,专业术语表述较为准确。 签名:张德成 2015年10 月14 日1.外文资料翻译译文JVM - Java虚拟机在ActionScript3.0中实现摘要: 本文介绍AJVM的概念和实现细节 - 在ActionScript 3.0中实现国家的最先进的Java虚拟机(JVM)。动作脚本是支持编译为Java字节码客观的编程语言。在所提出的解决方案出现了利用一个新
2、的想法 - 已选择使用其他虚拟机的执行环境(行动为脚本虚拟机)来构建Java的由AJVM支持JVM规范第2节规定的功能虚拟Machine.The集的方式使所述机器在许多实际应用中都在商业方面,以及在科学中使用。作为AJVM的结构是模块化的,它的特点在未来的扩展不会造成任何困难。 AJVM ActionScript 3.0中它是由ActionScript虚拟机(AVM)执行实施使得有可能在ActionScript 3.0编写的应用程序中使用Java代码。它产生了许多新的机会,考虑到AVM是flash播放器的一部分 - 常用的插件为广大现代Web浏览器,包括移动版本的形式提供的多媒体播放器。关键词
3、:JVM,动作,字节码简介规范的传统商业实现的目的是增加一个虚拟机JVM(VM)的性能。因此虚拟机在低级语言通常紧密地与操作系统(OS)和硬件结合实现(只是在这种编译成字节码硬件平台的本地代码编译器时)集成AJVM的.The目标是执行Java应用程序各种主要搭载了Web浏览器的计算机,通过它可以使用Java库中的Flash应用程序,并为最终用户方便的平台来观察和理解其背后的JVM概念,以增加代码的重用。最重要的是该解决方案扩展Flash平台的新功能:多线程,阻塞操作,泛型类以及执行字节码的一个新概念。环境介绍主要有两种类型的虚拟机:仿真器和解释器9,该模拟器是一个允许执行(在一个孤立的环境中)
4、的整个操作系统和其他软件,旨在为特定平台由于硬件虚拟化。解释器能够执行的二进制的,预编译代码,这是一个内置的编译器的一个输出定义它自己的结构作为virtualdevice7的软件。在本文的进一步部分术语虚拟机将被用来表示解释。Flash平台和ActionScript 3.0Adobe Flash技术(以前称为Macromedia Flash的)是一个多媒体平台,使网页中的新功能:动画,视频流,互动常用来实现游戏,广告,以及更复杂,更复杂的应用。Flash应用程序发布为SWF文件(冲击波Flash对象)。通常有每个应用程序,即使它可能包含许多库和多媒体资源的单个文件。在Flash 5 Flash
5、 4中引入了行动的概念扩大,并首次,在编程语言10,11,闪光灯7与ActionScript编程的第二个版本一起发布的背景下使用的动作脚本术语语言:这样的功能类型控制(编译期间)和基于类的继承进行了介绍。 Flash播放器9发布使用ActionScript 3.0 - 语言是显著重新设计,以支持降级的兼容性,也有玩家两个虚拟机:AVM1(支持行动为脚本1.0和2.0)和AVM2(支持动作脚本3.0 )14,新功能的数量已被引入的球员,包括性能优化(硬件加速支持DirectX和OpenGL),型控制(代码编译和执行过程中),基于类和prototypebased继承,使用包分离,命名空间和正则表达
6、式,新的字节码格式,E4X格式和其他支持。综上所述:ActionScript 3.0中是基于对象的,具有很强的类型,控制指令式编程语言,编译成字节码AVM2虚拟机上执行,单线程(由Flash播放器触发的事件驱动),所以不支持封锁方式,具有自动内存管理(垃圾收集器),不支持泛型类,不支持匿名类。在本文的另一部分来动作的任何引用将指向ActionScript 3.0中。相关工作还有我们的工作所作出的贡献两大方面:Java虚拟机在非standardenvironment实施Flash播放器里面的Java平台的仿真。在作者的意见,有没有比AJVM其他的解决方案,同时处理:动作脚本和JVM。这使JVM能
7、够模拟Flash播放器内的Java平台的一个独特的系统。有非标准的JVM包括以下提到的那些的主体的出版物编号:Jamiga - 该项目的目标是在Amiga的计算机16执行Java应用程序。JC - JVM的属性是一种新的方法来执行的字节码。所有的Java类转换上即时对源代码用C语言,然后编译从而使类似于传统只是在时间编译器即时编译器性能的本机代码)17。Squawk - 为嵌入式系统和小型移动设备实现JVM对Java ME微型版)。所有元素,除了低级别的模块支持I / O操作和操作系统的特定代码,在Java中实施了包括垃圾收集器)15。GNU Classpath的 - Java标准库在GNU许
8、可证分发提供了极大的基地打造自己的JVM20JOP - Java的优化的处理器是硬件实现JVM与预测的执行时间为嵌入式实时系统。由于所使用的处理器的尺寸小,它可以在低成本FPGA现场可编程门阵列)来实现。对于低容量系统,一个FPGA的灵活性可以更为重要虽然比传统处理器稍贵。该处理器被设计在VHDL编程语言超高速硬件描述语言)。处理器直接执行字节码,没有必要在编译时也不来分析/解释类文件。利用FPGA允许JOP动态申报堆栈大小这是基于-stack-VM JVM一致的,而不是基于寄存器)21。Sable VM - 是一个高度便携和高效的Java虚拟机,采用先进设备,最先进的解释技术。它的目标是要相
9、当小,速度快,兼容各种规格JVM规范,JNI,调用接口等)18,关于在Flash中实现的其他平台的模拟器尽管ActionScript 3.0中是比较新的语言已经出现了迄今为止实施了一些仿真器:FC64 - 闪光的Commodore64模拟器 - FC64是一种低层次的,64代的全功能仿真器允许用户执行设计的Commodore64,以及在BASIC编程语言22编写代码的应用程序。FlashX频谱48K - 辛克莱ZX光谱模拟器) - FlashX频谱48K类似于FC64的解决方案。不同的是,它模拟辛克莱ZX光谱平台。AminNes - 闪光NES模拟器 - 闪光NES模拟器是任天堂娱乐系统仿真器
10、 - 8位游戏配备了2KB RAM和2KB显存控制台。该仿真器支持MOS6502,保证渲染的视频质量最高。Flip8 - CHIP-8闪光灯模拟器 - Flip8是CHIP-8的模拟器。 CHIP-8是一种虚拟机中所用解释称为CHIP-8的编程语言70设计的。它曾经被上的图形计算器安装。 FIip8能够执行的字节码,包括35个不同的操作19的仿真器。在ActionScript3.0的JVM3.实现动作Java虚拟机AJVM)在动作脚本13来实现。它实现了在JVM2.0版的说明书中描述的特征的子集。该部分包括下面的架构和实现问题这篇文章的作者必须解决目前更多的信息。 3.1.虚拟机VS标准库 任
11、何Java虚拟机的实现的关键部分是一个标准库 - 由JVM规范描述的核心Java类的实现4,即使是最简单的Hello Word中的Java应用程序的执行需要数百个核心的Java类是存在和加载到VM。在论文中描述的解决方案包含在一个标准库而言以下要素:AJVM库 - 包含AJVM的可执行文件,准备的ActionScript3.0库中的任何Flash或Flex项目中使用。 Flex是一套允许开发人员编写RIA应用组件。它是被比较的技术,例如XUL,JavaFX的或Silverlight12。ART标准库 - Java标准库的等效包含在任何JVM分布如JRE系统库的JavaSE中)。一个标准库是特定
12、于虚拟机实现的,预计本机实现在VM选择的方法。对于AJVM的目的,我们实施了基于GNU Classpath的标准库堪称艺术ActionScript在运行时)。正如作者集中在JVM的选择功能,艺术是没有标准库的完整实现,虽然有可能延长在未来的实施。 3.2.AJVM高水平概述AJVM可作为一个对象由程序员的代码他/她的Flash应用程序中创建以同样的方式作为Jython解释为Python编程语言)。因此,程序员的代码有超过AJVM一个完全控制。此外,可以创建单个Flash主机应用程序内AJVM几个孤立的实例。由于通常在Flash平台的Flash主机应用程序的代码和AJVM的代码的功能都分布在一个
13、SWF文件,而这是程序员的代码的ART和Java类的一部分的Java类将是JAR档案或单*.class文件)位于同一Web服务器上。图1 AJVM1.高级概述 3.3在JVM中执行字节码 其中AJVM的创新是一个完全客观的方法,以虚拟机的正在执行的字节码的主要功能。字节码执行模块在一个典型的JVM的架构的标准位置的总览可以在图2中可以找到。 在Java字节码的方法的许多属性之一。在JVM规范字节码指令被标识为数字(000至Oxca,二进制指令的传统JVM的作品的一个执行模块保持在方法区存储器和在比较已编译字节码不变的方式来表示,唯一的例外是取代常数池元素与本地代码符号引用(当然JIT编译的。还
14、有利用概念XIP(执行到位的JVM),因此不复制字节码的方法区,但提到*.class文件时的指令是移动实现正在执行6,有上述的模型的下列含义:图2 在一个标准的JVM的架构字节码的执行模块的位置图3 句法分析树的简化版本,在JVM的Java类 在Java的字节码人需要解释说明,了解指令后有多少字节的指令的参数,这是必要的获得下一个指令的开始 - 必要性每次执行指令时解释该指令的代码。 必要性derefer指向常量池中的每一个执行指令时 - 该指令的参数可以参考类,方法或字段编址为常量池中的条目(例如:新的,而分配对象或数组anewarray指令,invokevirtual指令,该指令要求的方法
15、等)。上面的方法可能会导致一个显著超载。例如:获取对象的非静态字段的一个值需要要执行以下步骤:检索(从字节码,并在一个常量池使用从条目信息)的数据结构的一个地址与场的说明中,检索(从字段描述)的数据结构的一个地址与该字段的类的说明中,检索使用有关它的类和它的全名信息领域的偏移,从表示该字段的对象的字段的值的数据结构中检索(使用字段和字段的数据类型的偏移量)。上述步骤没有付诸行动对于JIT编译(JIT)8。标准的方式来执行字节码和访问促使我们去寻找其中采取了以下步骤的另一种方法常量池中数据的低性能: Java类的客观再现的建设 - 句法分析树的构建,这是在类文件中的元素的对象表示(见图3)。表示
16、是不是类及它们之间关系的典型曲线图表示。有以下已知的局限性:间接引用 - 除了一类及其方法之间的直接关系(或方法和它的参数之间)的一些对象之间的传统语法解析树商店的关系纯粹是自己的标识符。例如:检索类com.test.B也要冒字符串“com.test.A”,并寻找类的图形用这样一个名字的任何属性。这种方法需要检查与这样的名称的对象是否存在,这是耗时的。在字节码的二进制表示 - 一个语法分析树的一部分 - 方法“字节码 - 在所有未解析。内的方法的指令有对类的引用,其它方法和字段(这也是句法分析树的元素),这只要在执行字节码保持在一个二进制表示。上述语法分析树可用于建立图3中表示的类,方法,字段
17、和甚至外部类型之间的所有关系示出更有效的代表可以类装入过程的第一步骤之后立即解决(解析类表示)从而使字节码的执行更为有效。构建面向对象的字节码的表示 - 正如上一节我们决定也使用面向对象的表示形式字节码图上呈现。在一个传统的接近作为指令的单维序列执行的一个接一个的机器代码被表示。在实践中,指令指针经常改变由于分支的更复杂的方式指示,有条件或无条件跳转等等,所述控制应转移到(后分支指令)的字节码的地方被计算作为相对于当前指令指针的偏移量。这意味着,在执行分支指令需要计算新地址,并读出从该地址的字节代码指令。我们所采取的方法是使用一个新的想法:解析类之后,对于每个非抽象方法的建立了一个指令执行图(
18、见图5)。图4图5.采样指令执行的背景下,图中显示华氏度它使用对象操作码被映射到的各个指令类。每当指令需要被执行对象的方法与指令的参数执行。每个对象具有关于代表由该指令所需的类,字段和方法的对象的知识(存储为参考)。同样,也有一个连续的指令的引用(或为分支指令连续指令)存储在对象。该方法存储从它的方法而字节码存储参照其方法,以便它知道在哪里,得到控制回返回时的参考的第一条指令。使用的是ActionScript 3.0语言的客观性质可以创建的类Java指令完整的层次 - 执行指令其对象表示代表团。这种层次结构的一部分在图6中呈现的每个指令的实现方法的execute()在指令界面(设计模式命令)声
19、明。该方法的参数是对象FrameExecutionContext,它表示一个堆栈帧。对象的图可以在图中找到7. FrameExecutionContext对象提供对计算栈和局部变量的当前值从而使指令以执行(本身)中的当前上下文。特异于指令执行的方式之后(例如:从栈中弹出两个值,添加它们推到堆栈为IADD指令)JVM有设置将要执行的下一条指令。其结果,条件指令可以控制它们的线程的执行。一个指令可以利用上课的时候分析和图形化建通过附加引用。例如:类Jgetfieldinstruction,这是代表getfield命令存储参照JVMField类的一个对象,允许它加载一个字段的当前值。这是一种分散的方
20、式:每超过200字节码的说明具有实施(在executeQ方法),从而AJVM的概念模式(见图8)从JVM的传统实现显著不同。在AJVM字节码执行模块虚拟化。该模块被表示为对象加载的字节码的指令创建。这意味着AJVM既不包含也不使用字节码的二进制表示。有这种方法的优点如下:字节码的一次性解释 - 字节码的二进制表示由AJVM读一次,被加载的类时,指令图形建成。实施新的反思 - 所有类,方法,字段和属性都客观陈述反映因而不需要引用本地代码的执行。清晰和灵活的架构 - 指令图形的检查以及类之间的依赖关系使得能够在未来与有趣的功能扩展AJVM如动态代码转换或执行代码,可用于分析和优化码性能的可视化。图
21、6 部分华氏度图显示目标层次华氏度的Java说明图7 最重要的类的图的一部分JVM执行模块图8 在JVM字节码执行模块图9 异常处理程序表的客观再现的方法JVM实现补充说明实施异常处理程序一个编译的类的属性是一个异常处理程序表。表被用来存储有关类的异常的信息被处理,该第一指令由所述处理器保护,最后一个指令的偏移量被保护和异常处理程序的第一指令的偏移量。在AJVM没有指令偏移可言,因为它们是由指令图形代替。因此异常处理程序必须以客观的方式进行定义。每种方法都有较异常处理程序对象的集合(列表可能为无的try-catch块的方法是空的。被保护代表一个异常处理程序商店的所有指令引用的对象(因为不可能代
22、表设置为第一指令和偏移。的想法是示于图9。4.2. 垃圾收集我们解决了自动内存管理(AAM的问题5的ActionScript3.0的使用功能,其配备的闪光灯AMM VM(AVM2配备了垃圾收集器从而解决GC相关的问题的最简单方法是:从我们自己的堆在JVM辞职 - 我们的JVM不使用堆的。每个封装和原生ActionScript对象内的每个Java对象 - 这是可能的,因为代表每个Java对象为在ActionScript3.0分配在动作脚本的AVM2堆和AVM2管理定义的类JVMObject的一个实例。 EachJava对象被封装在ActionScript3.0对象。每个动作脚本的JVMObjec
23、t存储表示该类中的Java对象和数据结构来存储Java对象的状态从对象的类所有字段的值)为对象的引用。 利用AVM2垃圾收集器 - 如内部AJVM Java对象由它们是由AVM2的垃圾收集器管理动作的对象表示。唯一的限制是不存储这些对象的任何额外的外部引用,即使它可能是虚拟机监控等的目的的多线程传统实现的JVM通过Java线程映射到本地线程在操作系统级别)1提供多线程,2,AJVM没有获得低级别操作系统的线程,因为它是由Flash Player它在运行限制和刚刚执行的事件处理程序的线程中的ActionScript3.0的代码。因此,有必要执行在应用程序的级别我们自己设计的多线程模型。我们必须使
24、用一个线程的objectiverepresentation作为虚拟机的一部分。 AJVM的实例持有JVMThread类的实例的集合。新的对象被添加到集合每一个字节代码指令执行java.lang.Thread.startQ方法时,并且当从java.lang.Thread.run()方法返回被除去。只要集合为空的AJVM停止。 AJVM工作在周期和每个周期大约是执行的每个活动线程的字节码的指示的量。 AJVM的周期如在一段时间内测量的,而不是一个号码的指示)的长度是AJVM配置项。每个周期的可用时间在所有线程之间的分裂据此它们的优先事项。以满足上述要求的最简单的方法是执行RoundRobin算法具
25、有优先级的处理。每个AJVM周期包括/需要以下步骤:计算周期结束的时间可能结束时间当前时间+配置周期时间)。如果达到结束时间,给控制返回到事件处理过程从而完成了循环)。对于集合中的每个线程:执行方法步骤的次数基础上的线程的优先级的计算。如果线头执行堆栈是空的),从集合中删除该线程。回到步骤2。显然,上述的算法并不适用于“阻挡”或“等待显示器”monitorenter指令)线程。4.4本机接口 AJVM的原生界面允许用户提供其实现的Java类为ActionScript3.0的功能。这是虚拟机初始化由于结合使用ActionScript3.0对象的本地方法它的类,名称和签名)表示函数回调设计模式)的
26、关闭方法过程中完成。图10演示了虚拟机的情况下,样本实现和本地方法开方登记)。图10 样本代码用于注册本地方法在JVM 该函数的参数被用来传递从JVM到用户的方法的原生界面如下内容: 在执行堆栈帧的当前执行帧的背景 - 提及FrameExecutionContext类的,使该访问当前Java线程堆栈和堆栈帧的局部区域的以及属性的情况。它允许本地方法以使用禁止Java代码信息实例来实现与使用的类和方法)的客观代表性的反映。 传递给Java方法参数的值,ARGS包含0或多个参数由Java代码传递给本地方法。原始类型被映射到而目的是通过其封装JVMObject)表示对应类型的ActionScript
27、3.0 - 在本机代码可以很容易地得到类似于在反射中使用的一种方法其类和访问领域也公开)。 回调,从本地方法返回 - 尽管关键字回报是存在于ActionScript3.0,采用它从函数返回时会显著减少本地方法的能力。每个机实现就必须得到它的Flash Player使用单线程后不久把控制权回到AJVM。在所描述的方式实现回报功能允许开发人员来实现阻塞的方法(例如输入/输出操作)。直到执行回调线程调用本地方法被阻断。实际上,它意味着,即使无效的方法(没有返回任何东西)应该包含在年底onReturn(空)调用。测试案例我们的工作实现部分的输出包括一个ActionScript3.0库实现Java虚拟机
28、的最重要的特点。与JVM规范版本2和性能兼容性:虚拟机的质量可以使用许多指标,包括两个最重要的测量。正如在本文开头提到的,完全符合JVM规范不是我们的目标。相反,我们专注于允许开发人员创建的大部分典型的Java应用程序的标准Java库的那些部分。图11 执行时间华氏度测试1 - 执行固定浮点运算既不高性能是AJVM的目标。然而,这是值得AJVM的实施与最流行的JVM比较 - 甲骨文热点。下面的测试平台使用:(VM:Java的热点(TM)64位服务器VM(建21.0-BL7,混合模式,库:用Java(TM SE运行时环境(建立1.7.0-bl47J AJVM(插件) - VM:AJVM,参考版本
29、库:ART,参考版本,Flash播放器:33,插件的ActiveX,Internet Explorer 8中所有的测试已在英特尔(R)酷睿(TM)执行睿i7-2630QM2.0GHz的, 8 GB RAM,系统Windows764位。5.1测试用例1 - 定点算法 这次试验是通过一个整数数组迭代和阵列中的每个元素上执行几种计算。结果示于图11.测试结果留下关于商业HotSpot虚拟机和实验,研究AJVM之间的差异毫无疑问。由于热点使用即时编译代码被编译为本地的代表性和物理处理器,而不是在虚拟机上执行。其结果是,计算显著更快完成。5.2测试案例2 - 浮点数排序 该测试是调用标准库的java.u
30、til.Arrays.sort()方法来排序双数字阵列。结果可以在图12中找到。再次HotSpot虚拟机节拍AJVM和再次的主要因素是在AJVM实现JIT。另一个重要因素是,在热点算术源代码是用C写的,这使得开发优化技术成为可能。值得一提的线性阵列的大小为两者的函数的执行时间增加:AJVM和热点的虚拟机。图12.执行时间华氏度测试2 - 排序数组定点数5.3测试案例3 - java.lang中的链接列表的排序比较的对象 这次试验是从标准库调用java.util.Collections.sortQ方法进行排序链表(java.util.LinkedList中)含有实现comp盯eTo方法的对象。该
31、测试验证指针操作和虚拟方法(基本类型数组排序不同)。结果可以在图13中找到。 人们可以在这里看到一个有趣的现象:尽管这两个测试;试验2和试验3是关于集合排序,执行时间在试验3的增加比试验2显著更大的原因是,在试验3的对象进行排序,而不是其导致多个对象的操作数(比较方法电话)。和指针操作在AJVM比热点效率较低。图13 排序链表 -测试3的执行时间可比对象5.4测试案例4 - 网络连接和反序列化对象 该试验的目的是要建立与使用的远程服务器的网络连接。插座,以便获得一些数据和反序列化。结果可以在图14中找到。 再次HotSpot虚拟机节拍AJVM和再次的主要因素是在AJVM实现JIT。另一个重要因
32、素是,在热点算术源代码是用C写的,这使得开发优化技术成为可能。值得一提的是,EX-有趣的是,AJVM和热点之间的执行时间之间的差不可见,并且不超过35。其原因是,在测试的外部,系统资源(网络连接)强烈使用。换句话说:它不是那么重要如何,因为大多数操作在操作系统的电平做了虚拟机的元件实现。在otherwords,输入/输出操作的其他动作的比例比在先前测试更高。图14.执行时间华氏度测试4 - 传输数据通过网络连接和反序列化它5.5测试案例5 - 大规模多线程 测试包括发射并发线程的数目,执行它们并等待最后一个结束的。结果示于图15中示出。在图15中的热点灰色条表示丢失的结果 - 这是不可能启动这
33、么多线程。有助于较小执行时间AJVM比较热点的主要因素是在两种溶液中使用的不同线程模型。热点,像许多其他的虚拟机映射Java线程到本机操作系统线程。作为结果创建线程是耗时的操作。时,有一个巨大的线程量OS的行为可能是不稳定的。 AJVM模拟多线程编程 - 创建和启动一个新的线程是创造多一个Java对象一样昂贵。图15.测试5执行时间 - 执行显著量华氏度并发线程5.6测试用例摘要 来自执行测试用例,得出的结论如下:测试1,2和3没有留下任何怀疑的问候商业HotSpot虚拟机和实验,研究AJVM之间的差异。由于热点使用即时编译代码被编译为本地的代表性和物理处理器,而不是在虚拟机上执行。其结果是,
34、计算显著更快完成。测试图4示出由于输入/输出操作的与执行时间比较显著影响更平衡的结果。输入/输出操作是CPU要求不高从而AJVM更有效。结果证明清楚,在一些应用中AJVM可以成功使用。测试5提供支持领域存在哪些AJVM比传统虚拟机更加坚固可靠的证据。 AJVM的好处是线程创建的实现方式。尽管如此,它必须是强调指出,一个线程的有效创建并不意味着所有线程操作上AJVM更有效。至于有人提到测试5只侧重于创建线程,而不是衡量所有线程相关的操作(创建之前,睡觉,起床,线程调度等。5.7。一个JVM利用样本 本节演示AJVM的示例应用程序。它描述AJVM如何被用于执行样本的互联网应用 - 多用户,文本聊天
35、室。在图16所示的体系结构包含下列元素:图16.聊天室应用程序的架构执行在JVM上HTTP服务器 - 任何Web服务器通过HTTP协议提供静态文件。聊天室服务器 - 在Java中实时实现服务器,多用户聊天室(Java对象序列化时,聊天室的客户端 - 使用Flex组件写入在Flash客户端应用程序。 AJVM应用来实现网络功能(对象(德系列化和转以及实现业务逻辑(登录,授权和验证数据。值得一提的是,上述示例使用了客户端和服务器应用程序之间共享的Java代码:同一类由JVM热点(服务器端和AJVM(客户端一旦SWF文件(Flash应用程序和Java类加载的加载,HTTP协议不再使用,并已建立一个单
36、一的网络通信(TCP。6。结论本文的作者在ActionScript 3.0成功实施Java虚拟机。其结果,有可能使用到虚拟机的基础设施(flash播放器的现有元素的元素建立自己的解决方案。它允许的作者把重点放在虚拟机(选定的模块,如执行字节码执行引擎一个新的概念,并利用现有的这超出感兴趣(范围GC,线程模型等。支持Java字节码(动作脚本3.0和Flash Player环境的选择产卵考虑到Flash Player已在大多数现代Web浏览器中常用的其实很多机会。如前一节中所示,AJVM可以成功地在执行各种应用,包括因特网的人使用。有使用AJVM包括许多优点:类高可重用性因特网应用程序的客户端和服
37、务器元件通常使用相同的数据结构,类似。验证规则(用于输入数据以及业务逻辑的一些共同的要素在传统的解决方案很多都实现两倍这些常用功能(通常使用不同的实现平台):每边这是一个开发者的责任,以保证一致性。应用的两个部分。使用AJVM的使开发在客户端和服务器的侧使用相同的Java代码,这是一个巨大的节省时间和减少了许多错误的方式。提供了轻量级实现Java虚拟机与应用程序一起即使使用Java小程序符合前面提到的标准(类高可重用性),值得一提的是,Flash Player的是轻得多,比Java插件的Web浏览器更受欢迎。 AJVM使得有可能通过谁不打算Java运行时环境没有额外的插件安装到Web浏览器用户
38、执行Java代码。最终用户不必甚至知道他们的计算机上运行的JVM。 AJVM是极其轻便 - 编译AJVM的大小小于lOOkb。消除传统的客户端限制客户端应用程序通常在单线程环境中运行,因而只使用一个单独的线程(设计用于支持用户接口)。最好的例子就是JavaScript中,HTML5和Flash。 AJVM允许使用(在客户端)额外的计算模型:多线程,仿制药等。当然,参考实现AJVM的性能需要ActionScript 3.0代码来负责完成如下任务:UI渲染,多媒体流媒体,和CPU密集型计算。执行测试案例清楚地表明,目前的实现是缺少优化技术,它加快字节码的执行,特别是即时编译。因此,JVM的效率是较
39、低的相对于传统的商业虚拟机(由热点在测试用例表示执行)。效率的差异范围从利用集约外部资源(少操作上VM-水平与在操作系统级别一系列操作),以12800为其他测试案例的35。唯一的例外是揭示AJVM的主导地位(在测试案例5所描述)的一些具体情况。在AJVM未来的工作包括与JVM的参考规范(例如类加载过程中提供字节码验证)合规性的扩展。一个应该还记得,为了认真思考AJVM的实际应用中,应该做出符合Java 7的或至少是Java 6的标准。要做另一个显著的工作是Java标准库的进一步发展与JVM(提供完全符合Oracle实施或完全符合到GNU Classpath)交付。研究的另一部分将涉及提高了性能
40、。有很多选项,包括即时编译。此外,新的字节代码的执行模型打开运行期间与上即时代码转换,代码注入新的可能性,和更有效的和精确的代码分析。它提到了几次,AJVM设计为模块化的方式使得在外部的VM(Flash播放器)依赖关系的水平可以降低到一定程度。例如,它可以实现自己的垃圾收集模块和更换由Flash容器中提供的。然而,由于模块的依赖关系,替换模块可导致被迫更换其他人。上面提到的GC模块是一个很好的例子。在当前实现对象的创建和管理是由Flash在所有的控制。以取代的GC两个域将必须递送。参考文献: 1林霍尔姆T.,耶林,F.,Java虚拟机规范,第二版,Addison-Wesley出版社,1999年
41、。2高斯林J.,喜悦B.,Java语言规范,Addison-Wesley出版社,1996。3陈P.,李河,Java类库:一个附有说明的参考,Addison-Wesley出版社,1997年。4诺顿P.,莫里森M.,java的手册,奥斯本/麦格劳 - 希尔,1996年。5凡纳斯B.,里面的Java 2虚拟机,麦格劳 - HIL,20006唐宁T“迈耶J.,Java虚拟机,OReilly Media公司,1997。7克雷格一,虚拟机,施普林格,2005年。8斯塔克 - R的.java和Java虚拟机:定义,验证,确认,施普林格,2001年。9巴里奥五,费尔南德斯A.,研究的技术仿真编程,大学Poli
42、tecnica加泰罗尼亚,2001年。10布朗斯坦,R.,ActionScript 3.0中的圣经“,Wiley出版社,2010。11的ActionScript Virtual Machine 2(AVM2)概述,Adobe系统公司,2007年。12加斯纳D.时,Flash Builder 4和Flex 4圣经,Wiley出版社,2010。13埃尔斯特P.,面向对象的ActionScript 3.0,friendsofED,2007年。14的Adobe Flash Player技术分解。 HTTP:/ WWW。土坯。 COM /产品/播放器 _census /版本的Adobe Flash /技
43、术 _breakdown.html于2015年10月1日访问。15西蒙D.,西富恩特斯C.,该应答机虚拟机:Java的在裸机上,ACM,200516 JAmiga VM的主页,2014年/ 15日访问2015年7月。17 JC虚拟机的主页,2013年/ 15日访问2015年7月。18皮克特C.,Verbrugge C.,在Java虚拟机返回值预测,VPW2 2004年。19 Flip8 - CHIP-8闪光灯仿真器主页,2014年/projects/flip8/accessed在2015年9月21日。20 GNU Classpath的主页,2014年/于2015年9月21日访问。21 Scho
44、eber,M.,“JOP:嵌入式实时系统的Java优化的处理器”,VDM出版社穆勒博士,2008年。22 FC64 - 闪光的Commodore 64模拟器的主页,2014年的http:/ codeazur。 com.br/stu FF / fc64 _final /于2015年4月2日访问。2.外文原文AJVM - Java Virtual Machine Implemented in ActionScript 3.0Abstract:This paper describes the concept and implementation details of AJVM - state-of-
45、the art Java Virtual Machine(JVM) implemented in ActionScript 3.0. Action Script is an objective programming language that supports compilation to Java bytecode. In the presented solution there has been a novel idea utilized - to use the other Virtual Machines execution environment (Action- Script V
46、irtual Machine) to build Java Virtual Machine.The subset of features specified in JVM Specification v.2 supported by AJVM has been chosen in a way which enables the machine to be used in many practical applications both in the commercial context as well as in science. As the architecture of AJVM is
47、modular, the extension of its features in the future will not cause any difficulties. The implementation of AJVM in ActionScript 3.0 which is executed by ActionScript Virtual Machine (AVM) makes it possible to use Java code in applications written in ActionScript 3.0. It spawns many new opportunitie
48、s considering that AVM is a part of FlashPlayer - commonly used multimedia player available in the form of plugins for the majority of modern web browsers, including mobile versions.Keywords: JVM, Action Script, bytecode1. IntroductionTraditional, commercial implementations of JVM Specification aim
49、to increase the performance of a Virtual Machine (VM). As a result VMs are usually implemented in low level programming languages,tightly integrated with Operating System (OS) and hardware (Just In Time compilers that compile bytecode into native code of the hardware platform).The goal of AJVM is to
50、 execute Java applications in a variety of computers equipped mainly with a web browser, to increase code reusability by making it possible to use Java libraries in Flash applications and to provide convenient platform for end-users to observe and understand concepts behind JVM. On top of that the s
51、olution extends Flash platform with new features: multi-threading, blocking operations, generic classes as well as a new concept of executing bytecode.1.1. Basic TermsThere are two major types of virtual machines: emulators and interpreters 9, The emulator is a solution allowing to execute (in an is
52、olated environment) the whole OS and other software designed for a specific platform due to hardware virtualization(VMWare Workstation or Oracle xVM VirtualBox). The interpreter is software capable of executing binary,precompiled code which is an output of a built-in compiler defining its own archit
53、ecture as of a virtualdevice 7. In the further part of this paper the term virtual machine will be used to denote the interpreter.1.2. Flash Platform and ActionScript 3.0Adobe Flash technology (previously known as Macromedia Flash) is a multimedia platform enabling new features in web pages: animati
54、ons, video streaming, interactivity commonly used to implement games, advertisements as well as more sophisticated and complex applications.Flash applications are published as SWF files(Shockwave Flash Object). Usually there is a single file per application even though it may contain many libraries
55、and multimedia resources. In Flash 5 the concept of actions introduced in Flash 4 was extended and, for the first time, Action Script term was used in the context of a programming language 10, 11, Flash 7 was released together with the second version of ActionScript programming language: such featur
56、es as type-control (during compilation) and inheritance based on classes were introduced. Flash Players 9 was released with ActionScript 3.0 the language was redesigned significantly and, to support downgrade compatibility, there are two virtual machines in the player: AVM1 (to support Action- Scrip
57、t 1.0 and 2.0) and AVM2 (to support Action-Script 3.0) 14, The number of new features have been introduced to the player including performance optimization (hardware acceleration for DirectX and OpenGL), type-control (during code compilation and execution), separation of class-based and prototypebas
58、ed inheritance, using packages, namespaces and regular expressions, new bytecode format, support for E4X format and others. To sum up: ActionScript 3.0 is object-based, imperative programing language with strong type-control, compiled to bytecode being executed on AVM2 virtual machine, single-thread
59、ed (driven by events triggered by Flash Player) so not supporting blocking methods, with automatic memory management (Garbage Collector), not supporting generic classes, not supporting anonymous classes.In the further part of the paper any references toAction Script will refer to Action Script 3.0.2
60、. Related WorkThere are two major aspects of the contributionof our work:Implementation of Java Virtual Machine in a nonstandardenvironmentEmulation of Java platform inside Flash Player.In the opinion of the authors, there are no solutions other than AJVM that handle both: Action Script and JVM. Thi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人房产抵押权抵押权转让合同范本8篇
- 石排弱电施工方案
- 二零二五年度棉纱产业技术创新与应用合同4篇
- 2025个人股权转让与债务剥离合同范本3篇
- 2025年度个人信息技术咨询与实施合同范本3篇
- 二零二五年度新型商业空间租赁服务合同4篇
- 阅读短文作文课程设计
- 职校烹饪专业课程设计
- 生产管理课程设计文献
- 地坪修补施工方案模板
- 第二章 运营管理战略
- 《三本白皮书》全文内容及应知应会知识点
- 专题14 思想方法专题:线段与角计算中的思想方法压轴题四种模型全攻略(解析版)
- 医院外来器械及植入物管理制度(4篇)
- 图像识别领域自适应技术-洞察分析
- 港口与港口工程概论
- 《念珠菌感染的治疗》课件
- 个体户店铺租赁合同
- 门店装修设计手册
- 考研计算机学科专业基础(408)研究生考试试卷与参考答案(2025年)
- 新概念英语第二册考评试卷含答案(第49-56课)
评论
0/150
提交评论