Java语言程序例化中的扩展对象别名分析

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:bohaiyifan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:随着计算机技术的不断进步和发展,Java语言程序凭借着自身的优势得到了广泛的应用,并取得了显著的成效。同时为了推动Java语言程序在计算机技术的作用,需要提高其精度,这就需要借助一定的对象别名分析技术。本文笔者对对象别名分析技术进行了分析和探讨,主要是为提高求值的深度,同时为实现Java语言程序中部分求值器的绑定时间分析的实现,进而为Java语言程序的应用提供指导和借鉴。
  关键词:Java语言程序;扩展对象别名分析;绑定时间分析;部分求值
  中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2013) 04-0000-02
  计算机技术的发展推动了硬件速度的提高,同时也对软件的设计提出了更高的要求,Java语言程序是一种面向对象程序设计语言的软件程序,具有良好的性能,同时为了充分的发挥其作用,需要借助部分求值技术,提高计算的准确定和精度。为了满足程序发展的需要,利用对象类例化模式成为一种有效的途径,大大地提高了对绑定时间分析的准确性,对多数的单线程Java语言程序进行了有效的分析,实现了高精度的部分求值。
  1 Java语言程序的绑定时间分析
  在Java语言程序的应用中,需要进行部分求值,但是在求值的过程中会受到一定的限制因素的影响,这主要是在预处理阶段无法对程序执行中的每一个对象实例的绑定时间进行跟踪,这就需要借助近似描述的方法。在原先的绑定时间分析中,将同类对象的成员变量进行标注,忽视了不同对象的成员变量问题,同时还忽视了父类实例和子类实例的区别,这就对绑定时间的分析精度造成了一定的影响,这一方法被称为对象类的单变异例化方式。
  在Java语言程序中,由不同的程序点动态生成的对象实例所面临的应用场景也不尽相同,这就导致了分析精度的不同。对于程序的运行而言,高精度的程序分析会对不同的对象实例的绑定时间进行区分,并根据对象实例的不同采取不同方式的计算,同时剩余的计算功能也存在较大的差异。此外,滞留程序应该应用于各个版本中并对神域计算进行不同的描述,这样的方法被称为对象类的多变异例化方式。
  就Java语言程序而言,可以实现对多态性的支持,能够对多个类和程序构造的对象实例进行激活和调动,并实现不同的绑定,为了对绑定参数、变量和对象成员的把握,需要进行别名分析,进而确定好对象实例的绑定参数和变量。其中应用最为广泛的是借助函数例化的处理方法,采用多变异方式,借助不同绑定的设置,提高了函数的多变异性质,进而使绑定时间分析的精度提高。
  2 对象例化模型
  为了充分认识和了解Java源程序,需要借助一定的模型,在对其计算进行分析的基础上,通过建立对象例化模型可以对其计算过程和特点有全面的把握。在程序运行中,每个类的计算必须经过部分求值,这样就会在滞留程序中生成多个专用类,进而对源程序中的对象实例进行剩余计算。在经过部分求值以后,会在滞留程序中产生不同类别的专用成员函数,进行函数调用的剩余计算。
  在Java语言程序中,对象例化模型是由多个模块共同构成的,一般分为两类:类例化模型和方法例化模型,前者是在相应的程序点并借助构造函数参数的绑定时间实现对指定类的程序例化,这样可以生成一个滞留计算。后者表示通过标识一个专用的方法,表示了方法的多变异例化方式下的一种情形。构造方法的例化被认为是特殊的方法,无需包含成员变量的描述,且只有唯一的例化模式。
  在对象例化模型中,通过利用专用类名进行变量绑定时间的分析设计,进而对对象实例内部的各个成员变量的绑定时间进行有效的区分,同时还可以实现用专用类名的集合进行变量绑定时间的规定。
  可见,该模型是对Java语言程序的绑定时间分析的基础,对程序的运行起到了积极的促进作用,进而满足了部分求值的需要,可以清晰的反应出程序各个阶段的部分求值完成的情况,实现对部分求值结果的分析和处理。
  3 对象别名分析
  在对Java程序进行部分计算时,需要进行静态输入和动态输入,进而依据对象例化模型对程序的执行过程进行分析,并根据计算出的数据关系得到绑定时间,与此同时,通过对引用型的变量的使用情况的跟踪,可以实现对不同程序点的对象实例进行别名分析,可以确定将引用型变量与程序点的对象实例进行绑定。当分析到新的运算时,创建类例化模式以及构造函数的方法例化模式,分析到消息传递时,需要创建属于接收信息专用类的例化模式。
  为了满足在引用型变量在静态分析程序中的需求,需要在别名分析方法的内部采用模拟程序进行执行,并借助语法树进行自上而下的分析,同时按照函数调动的关系结合深度优先的方法,进行激活处理,并对实例构造和成员函数的调用进行分析,进而形成对象例化模型。在实际的分析计算中,会出现对已经经过分析的函数参数进行再次绑定的现象,这主要是因为受到递归函数调用以及循环语句的影响,进而对程序分析和计算的完备性造成了一定程度的影响,因此需要在前次生成的对象例化模型的基础上,进行多遍对象别名分析,直至对象例化模型不再变化为止,进而最大限度的提高分析的完备性和准确性。
  在对象别名分析的过程中,需要借助绑定时间环境来对各种变量不同的绑定时间进行合理的记录,并为每一个变量的绑定时间设置相应的分析标注,一般而言,变量的BTA标志表示了其状态,而对于引用变量是用专用类名集合进行表示的,进而计算出其最小上界。在别名分析中,语句分析是核心和关键,因此需要加强对各种语句的分析,进而得出更新后的BTA环境。同时需要对语句进行调用,这就需要先对引用变量指向的所有专用类,求出对象成员和方法参数的状态,构成方法例化模式,并检查该模式的存在形式,形成专用的方法名,进而完成绑定,在对定义体进行合理的分析,并在分析结束后进行保存。同时加强对循环语句的分析,即进行反复的分析,直到分析前后的BTA环境相同为止。这种重复分析对象别名分析的计算量有较大影响。假设循环体中有k个引用型变量被赋值,而每个变量可能绑定到m种专用类对象实例。在实用程序的分析中,分析过程收敛很快,通常仅重复分析2次或3次。因此,如果程序语法树的结点个数为n,对象别名分析的计算复杂度为0(n)。
  可见,在对扩展对象的别名分析中,实现了绑定时间分析与别名分析的有效结合,这样可以有效的解决对象类和方法的多变异例化问题,通过对程序中绑定时间的分析,实现了对对象类和方法的有效处理,在例化模型的基础上,形成了多种版本的程序代码,用于程序的部分计算。在实际的程序运行中,该方法取得了很好的成效,不仅具有较好的重用性,而且满足了各种编译时刻和运行时刻的部分求值的需要,即使带来了一定的程序膨胀,也可以将其控制在一定的范围内,具有可接受性。
  4 结束语
  Java语言程序例化中的扩展对象别名分析的主要特点在于不仅能够区别同一对象中不同成员变量的绑定时间,也能够区分不同程序点创建的对象实例,进而能够区分成员函数中同一引用型参数所绑定的对象实例,从而有效地提高了Java程序绑定时间分析的精度。在Java语言的部分求值系统中,扩展对象别名分析的实现有效地扩大了部分求值的作用范围。
  参考文献:
  [1]冀振燕,程虎.Java编译程序技术与Java性能[J].软件学报,2010,11(02).
  [2]董强.基于Java语言的安全性分析[J].舰船科学技术,2008,30(02).
  [3]顾庆,陈道蓄,谢立,孙钟秀.面向Java的分布式程序测试系统[J].软件学报,2012(04).
  [4]叶靖波,陆鑫达.基于纯Java语言的异构并行处理支持平台[J].计算机学报,2010(07).
  [作者简介]许云飞(1990-),男,吉林四平,长春工业大学软件学院学生,本科,程序设计Java方向。
其他文献
2010年3月22日是世界水日,可就在此时我国的云南地区出现了百年一遇的特大旱灾,范围广、时间长。上百万人饮水困难,耕地干裂,旱情严重。面对如此严重的问题,人们深刻意识到了
江泽民经济全球化思想的形成有其深厚的理论基础。马克思、恩格斯、列宁、斯大林关于经济全球化的思想为其提供了理论渊源和方法论,毛泽东、邓小平关于经济全球化的思想为其
摘 要:云计算作为新兴计算机技术的代名词,目前正应用于广泛的互联网管理和资源共享平台中,其优势在于能够将虚拟化技术在经济耗费成本相对较低的情况下,以动态可拓展的方式在互联网应用设施中发挥作用。本文以研究云计算技术的核心技术为主要目的,为高校科研信息查询平台方面提供了更加具有创设性的研发设计技术。  关键词:云计算技术;高校科研;信息查询平台;设计开发  中图分类号:TP399-C1  1 云计算综