当前位置: 首页 > 专利查询>SAP股份公司专利>正文

在结构化环境中执行动态程序的系统和方法技术方案

技术编号:2914380 阅读:197 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种包括用于在结构化环境中执行动态程序的软件的计算机系统、一种在结构化环境中执行动态程序的计算机实现的方法以及一种记录有用于在结构化环境中执行动态程序的软件对计算机可读介质。在一个实施例中,本发明专利技术包括执行非动态程序的第一虚拟机,其实现执行动态程序的第二虚拟机。所述动态程序经由各种所允许的交互路径在非动态编程语言的结构化环境中运行。以这种方式,可以在鲁棒的企业应用环境中执行动态程序。

【技术实现步骤摘要】

本专利技术涉及动态编程语言,更具体地,涉及在结构化环境中执行动态程序。
技术介绍
除非在此有相反指示,否则在本部分中描述的方法不是本申请权利要求的现有技术,并且不因包含在本部分中而承认是现有技术。可以宽泛地将编程语言分类为两类:动态编程语言和非动态编程语言。非动态语言可以被看作是这样一种编程语言,其中,在方法(或过程(procedure))调用之间进行绑定以实现方法发生在编译时。而动态语言则可以被看作是绑定发生在运行时并且通常可以在任何时间在程序中覆写(overwrite)的编程语言。在非动态语言中,方法调用可以是对分配给类的过程的调用。在动态语言中,方法调用可以是要发送给类的实例的消息,而确定如何处理该消息是类的任务。更具体地,术语“动态编程语言”描述的是一类高级编程语言,其在运行时执行许多公共行为(common behaviors),而其它语言即便执行这些公共行为,也是在编译期间执行。这些行为可以包括对程序的扩展,所述扩展包括通过增加新代码、通过扩展对象和定义、或通过修改类型系统的扩展,所有这些都是在程序执行期间进行的。这些行为可以在几乎任何足够复杂的语言中进行仿真,但是动态语言提供直接的工具来对它们加以利用。术语“非动态编程语言”描述的是缺少这些行为的语言。(非动态编程语言也可称为“静态编程语言”。)动态编程语言具有许多实际的或是可认识到的优点。动态编程语言例如通过允许动态类型的变量、以及给予在运行时改变代码和逻辑结构的能力而具有灵活性。许多动态语言是开放式源语言。动态语言允许较高的生产率,因为其例如易于学习并具有简单易懂的句法。动态语言通常允许更容易地集成到例如诸如mashups或其它Web服务的环境中。-->动态语言的一个示例是Ruby。Ruby是一种反射性的(reflective)、动态的、面向对象的编程语言。它将受Perl启发的句法与类似Smalltalk的面向对象特征相结合,并且还与Python、Lisp、Dylan以及CLU共享某些特征。Ruby是单向(single-pass)解释性语言。然而,动态语言在某些计算环境中具有许多缺点。例如,虽然在程序执行期间改变程序代码的能力通常是优点,但是其在企业应用(businessapplication)环境中却是缺点。对于企业应用来说,一般不希望一个用户的程序影响另一个用户的程序或数据。企业应用一般必须是“鲁棒的”,来自不同用户的程序应保持隔离,限制对其它用户的程序、对服务器或对下层业务数据(business data)产生破坏的潜在可能。例如由于语言不具有线程级隔离,所以通过用语言实现动态语言不能解决这些问题。对于进一步的细节,请参见例如Almut Herzog和Nahid Shahmehri的“Problems Running Untrusted Services as Java Threads”,CSES 2004 2nd International Workshop on Certification and Security inInter-Organizational E-Services(2004)。因而,需要提高在企业应用环境中执行动态程序的鲁棒性。本专利技术通过提供用于在结构化环境中执行动态程序的系统和方法来解决这些和其它问题。
技术实现思路
本专利技术的实施例提高了动态编程语言的鲁棒性和可伸缩性。在一个实施例中,本专利技术包括一种计算机系统,该计算机系统包括用于在结构化环境中执行动态程序的软件。所述软件包括虚拟机软件文件和安全桥软件文件。所述虚拟机软件文件实现第一虚拟机以执行第一程序。所述第一程序是以非动态编程语言编写的。所述第一虚拟机管理第一堆栈,并且所述第一程序使用所述第一堆栈。所述安全桥软件文件定义在所述第一程序和第二程序之间的所允许的交互路径。所述第二程序是以动态编程语言编写的。所述第一程序在所述第一虚拟机内实现第二虚拟机,以利用所允许的交互路径来执行所述第二程序。所述第一程序管理所述第二虚拟机中的第二堆栈,并且所述第二程序使用所述第二堆栈。在另一实施例中,本专利技术包括一种用于在结构化环境中执行动态程序的-->方法。在另一实施例中,本专利技术包括记录有用于在结构化环境中执行动态程序的计算机程序的计算机可读介质。下面的详细描述和附图提供了对本专利技术的本质和优点的更佳理解。附图说明图1是根据本专利技术实施例的在结构化环境中执行动态程序的系统的框图。图2是可以用于实现根据本专利技术实施例的计算机系统的三层结构系统的框图。图3是示出根据本专利技术实施例的多个虚拟机的框图。图4是根据本专利技术实施例的非动态程序和相关程序的各种组件的框图。图5是根据本专利技术实施例的方法的流程图。图6是用于实现本专利技术实施例的示例性计算机系统和网络的框图。具体实施方式在此描述用于在结构化环境中执行动态程序的技术。在下面的描述中,出于解释的目的,为了提供对本专利技术的完全理解,阐述了多个示例和特定细节。然而,对于本领域技术人员来说明显的是,由权利要求书所限定的本专利技术可以只包括这些示例中的一些或所有特征、或包括这些示例中的一些或所有特征与下面描述的其它特征的结合,并且还可以包括在此所描述的特征和概念的修改和等价物。下面描述各种计算机可实现的方法和计算机程序。通过各种名称来指代它们,包括计算机过程、程序、模块、软件和软件文件。当讨论这样的计算机程序时,它们可以被具体化在有形的记录介质上。下面描述各种方法。尽管具体的方法可能具有以具体次序描述的方法步骤,但是这样的描述主要是为了描述清楚。根据各种实施例,可以按照意愿变化次序并且可以并行地执行方法步骤。当具体的方法步骤需要在另一个方法步骤之前或之后时,这样的次序从上下文中将是明显的或将被特别指出。图1是根据本专利技术实施例的在结构化环境中执行动态程序的系统100的框图。系统100包括计算机系统102。(在随后的部分中会提供计算机系统102-->的具体实施细节。)计算机系统102执行实现虚拟机104的计算机程序。虚拟机104实现非动态编程环境。在非动态编程环境中,可以执行以相应的非动态编程语言编写的计算机程序。作为示例示出了非动态程序106。非动态编程语言可以是面向对象的语言,在该情况下非动态程序106可以定义虚拟机104所操作的对象。非动态程序106与堆栈108接口。堆栈108充当非动态程序106的调用堆栈,在那里将参数传递到方法,从而该方法可以具有局部变量并且可以调用其它方法(或该方法可以递归调用其本身)。虚拟机104可以包括诸如垃圾收集器110的其它组件。一旦不再需要由非动态程序106创建的对象,垃圾收集器110就收回在计算机系统102中分配给这些对象的存储空间。非动态程序106通常实现和控制用于执行计算机程序的结构化环境。作为该结构化环境的一部分,非动态程序106实现虚拟机124,以执行动态程序126。虚拟机124实现动态编程环境。在该动态编程环境中,可以执行以动态编程语言编写的计算机程序。作为示例示出了动态程序126。动态编程语言可以是面向对象的语言,在该情况下动态程序126可以定义虚拟机124所操作的对象。动态程序126与堆栈128接口。堆栈128充当动态程序126的调用堆栈,在那里将参数传递到方法,从而方法可以具有局部变量并且可以调用其本文档来自技高网
...

【技术保护点】
一种计算机系统,包括用于在结构化环境中执行动态程序的软件,所述软件包括: 虚拟机软件文件,其实现第一虚拟机,以执行第一程序,其中所述第一程序是以非动态编程语言编写的,其中所述第一虚拟机管理第一堆栈,并且其中所述第一程序使用所述第一堆栈 ;以及 安全桥软件文件,其定义在所述第一程序和第二程序之间的多个所允许的交互路径,其中所述第二程序是以动态编程语言编写的, 其中,所述第一程序在所述第一虚拟机内实现第二虚拟机,以利用多个所允许的交互路径来执行所述第二程序,其中所 述第一程序管理所述第二虚拟机中的第二堆栈,并且其中所述第二程序使用所述第二堆栈。

【技术特征摘要】
US 2007-11-5 11/935,2851.一种计算机系统,包括用于在结构化环境中执行动态程序的软件,所述软件包括:虚拟机软件文件,其实现第一虚拟机,以执行第一程序,其中所述第一程序是以非动态编程语言编写的,其中所述第一虚拟机管理第一堆栈,并且其中所述第一程序使用所述第一堆栈;以及安全桥软件文件,其定义在所述第一程序和第二程序之间的多个所允许的交互路径,其中所述第二程序是以动态编程语言编写的,其中,所述第一程序在所述第一虚拟机内实现第二虚拟机,以利用多个所允许的交互路径来执行所述第二程序,其中所述第一程序管理所述第二虚拟机中的第二堆栈,并且其中所述第二程序使用所述第二堆栈。2.根据权利要求1所述的计算机系统,其中,所述软件还包括:对象存储和运行时库软件文件,其管理多个对象,其中所述多个对象与所述第二程序相关,其中所述第一程序使用所述对象存储和运行时库软件文件来在所述第一虚拟机中执行所述第二虚拟机内的所述第二程序。3.根据权利要求1所述的计算机系统,其中,所述软件还包括:对象存储和运行时库软件文件,其将所述动态编程语言的第一组多个对象映射到所述非动态编程语言的第二组多个对象,其中所述第二虚拟机使用所述第二组多个对象在所述第一虚拟机中执行所述第二程序。4.根据权利要求1所述的计算机系统,其中,所述软件还包括:操作库软件文件,其实现与所述第二程序相关的多个操作,其中所述第一程序使用所述操作库软件文件,以在所述第一虚拟机中使用所述第二虚拟机将动态编程语言中的第一操作作为非动态编程语言中的第二操作来执行。5.根据权利要求1所述的计算机系统,其中,所述软件还包括:编译器软件文件,其将所述第二程序编译为经编译的第二程序,其中所述第一程序在所述第一虚拟机中使用所述第二虚拟机来执行所述经编译的第二程序。6.根据权利要求1所述的计算机系统,其中:所述第二虚拟机是多个第二虚拟机中的一个;所述第二程序是以所述动态编程语言编写的多个第二程序中的一个;所述第二堆栈是多个第二堆栈中的一个;所述第一程序在所述多个第二虚拟机中的相应的一个中管理所述多个第二堆栈中的每一个;所述多个第二程序中各自使用所述多个第二堆栈中的相应的一个;并且所述第一程序在所述第一虚拟机中实现所述多个第二虚拟机,以使用多个所允许的交互路径执行所述多个第二程序,从而使所述多个第二程序中的每一个第二程序与所述多个第二程序中其它的每一个第二程序彼此隔离。7.根据权利要求1所述的计算机系统,其中:所述安全桥软件文件定义在所述第一程序和第三程序之间的多个所允许的交互路径,其中所述第三程序是以动态编程语言编写的;并且所述第一程序在所述第一虚拟机中实现第三虚拟机,以使用所述多个所允许的交互路径来执行所述第三程序,从而使所述第三程序与所述第二程序隔离,其中所述第一程序管理所述第三虚拟机中的第三堆栈,并且其中所述第三程序使用所述第三堆栈。8.根据权利要求1所述的计算机系统,其中,所述第二程序是以所述动态编程语言编写的多个第二程序中的一个,还包括:多个应用服务器,其经由网络连接到多个客户端设备和多个数据库服务器,其中通过增加所述多个应用服务器来提供执行所述多个第二程序的可伸缩性。9.根据权利要求1所述的计算机系统,其中,所述第二虚拟机通过将指令从所述动态编程语言翻译为所述非动态编程语言来执行所述第二程序。10.根据权利要求1所述的计算机系统,其中所述第一程序定义第一组多个对象,其中所述第二程序定义第二组多个对象,其中所述第一虚拟机对所述第一组多个对象进行操作,其中所述第二虚拟机对所述第二组多个对象进行操作,其中,所述软件还包括:...

【专利技术属性】
技术研发人员:雷纳布伦德尔默里斯波克
申请(专利权)人:SAP股份公司
类型:发明
国别省市:DE[德国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1