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

文档序号:6467858阅读:239来源:国知局
专利名称:在结构化环境中执行动态程序的系统和方法
技术领域
本发明涉及动态编程语言,更具体地,涉及在结构化环境中执行动态程序。
背景技术
除非在此有相反指示,否则在本部分中描述的方法不是本申请权利要求 的现有技术,并且不因包含在本部分中而承认是现有技术。
可以宽泛地将编程语言分类为两类动态编程语言和非动态编程语言。 非动态语言可以被看作是这样一种编程语言,其中,在方法(或过程
(procedure))调用之间进4亍绑定以实现方法发生在编i奪时。而动态语言则可 以被看作是绑定发生在运行时并且通常可以在任何时间在程序中覆写
(overwrite)的编程语言。在非动态语言中,方法调用可以是对分配给类的 过程的调用。在动态语言中,方法调用可以是要发送给类的实例的消息,而 确定如何处理该消息是类的任务。
更具体地,术语"动态编程语言"描述的是一类高级编程语言,其在运 行时执行许多公共行为(common behaviors ),而其它语言即使i丸行这些z^共 行为,也是在编译期间执行。这些行为可以包括对程序的扩展,所述扩展包 括通过增加新代码、通过扩展对象和定义、或通过修改类型系统的扩展,所 有这些都是在程序执行期间进行的。这些行为可以在几乎任何足够复杂的语 言中进行仿真,但是动态语言提供直接的工具来对它们加以利用。术语"非 动态编程语言"描述的是缺少这些行为的语言。(非动态编程语言也可称为"静 态编程语言"。)
动态编程语言具有许多实际的或是可认识到的优点。动态编程语言例如 通过允许动态类型的变量、以及给予在运行时改变代码和逻辑结构的能力而 具有灵活性。许多动态语言是开放式源语言。动态语言允许较高的生产率, 因为其例如易于学习并具有简单易懂的句法。动态语言通常允许更容易地集 成到例如诸如mashups或其它Web服务的环境中。动态语言的一个示例是Ruby。 Ruby是一种反射性的(reflective )、动态 的、面向对象的编程语言。它将受Perl启发的句法与类似Smalltalk的面向对 象特征相结合,并且还与Python、 Lisp、 Dylan以及CLU共享某些特征。Ruby 是单向(single-pass)解释性语言。
然而,动态语言在某些计算环境中具有许多缺点。例如,虽然在程序执 行期间改变程序代码的能力通常是优点,但是其在企业应用(business application)环境中却是缺点。对于企业应用来说, 一般不希望一个用户的程 序影响另一个用户的程序或数据。企业应用一般必须是"鲁棒的",来自不同 用户的程序应保持隔离,限制对其它用户的程序、对服务器或对下层业务数 据(business data)产生破坏的潜在可能。
例如由于Java②语言不具有线程级隔离,所以通过用^¥&@语言实现动态 语言不能解决这些问题。对于进一步的细节,请参见例如Almut Herzog和 Nahid Shahmehri的 "Problems Running Untrusted Services as Java Threads", CSES 2004 2nd International ^Vorkshop on Certification and Security in Inter-Organizational E-Services(2004)。
因而,需要提高在企业应用环境中执行动态程序的鲁棒性。本发明通过 提供用于在结构化环境中执行动态程序的系统和方法来解决这些和其它问 题。

发明内容
本发明的实施例提高了动态编程语言的鲁棒性和可伸缩性。在一个实施 例中,本发明包括一种计算机系统,该计算机系统包括用于在结构化环境中 执行动态程序的软件。所述软件包括虛拟机软件文件和安全桥软件文件。所 述虚拟机软件文件实现第一虚拟机以执行第一程序。所述第一程序是以非动 态编程语言编写的。所述第一虚拟机管理第一堆栈,并且所述第一程序使用 所述第一堆栈。所述安全桥软件文件定义在所述第一程序和第二程序之间的 所允许的交互路径。所述第二程序是以动态编程语言编写的。所述第一程序 在所述第一虚拟机内实现第二虚拟机,以利用所允许的交互路径来执行所述 第二程序。所述第一程序管理所述第二虚拟机中的第二堆栈,并且所述第二 程序使用所述第二堆栈。
在另 一实施例中,本发明包括一种用于在结构化环境中执行动态程序的方法。
在另 一实施例中,'本发明包括记录有用于在结构化环境中执行动态程序
的计算机程序的计算机可读介质。
下面的详细描述和附图提供了对本发明的本质和优点的更佳理解。


图1是根据本发明实施例的在结构化环境中执行动态程序的系统的框图。
图2是可以用于实现根据本发明实施例的计算机系统的三层结构系统的框图。
图3是示出根据本发明实施例的多个虚拟机的框图。 图5是根据本发明实施例的方法的流程图。
图6是用于实现本发明实施例的示例性计算机系统和网络的框图。
具体实施例方式
在此描述用于在结构化环境中执行动态程序的技术。在下面的描述中, 出于解释的目的,为了提供对本发明的完全理解,阐述了多个示例和特定细 节。然而,对于本领域技术人员来说明显的是,由权利要求书所限定的本发 明可以只包括这些示例中的 一些或所有特征、或包括这些示例中的 一些或所 有特征与下面描述的其它特征的结合,并且还可以包括在此所描述的特征和 概念的修改和等价物。
下面描述各种计算机可实现的方法和计算机程序。通过各种名称来指代 它们,包括计算机过程、程序、模块、软件和软件文件。当讨论这样的计算 机程序时,它们可以被具体化在有形的记录介质上。
下面描述各种方法。尽管具体的方法可能具有以具体次序描述的方法步 骤,但是这样的描述主要是为了描述清楚。根据各种实施例,可以按照意愿 变化次序并且可以并行地执行方法步骤。当具体的方法步骤需要在另一个方 法步骤之前或之后时,这样的次序从上下文中将是明显的或将被特别指出。
图1是根据本发明实施例的在结构化环境中执行动态程序的系统100的 框图。系统100包括计算机系统102。(在随后的部分中会提供计算机系统102的具体实施细节。)计算机系统102执行实现虚拟机104的计算机程序。
虚拟机104实现非动态编程环境。在非动态编程环境中,可以执行以相 应的非动态编程语言编写的计算机程序。作为示例示出了非动态程序106。 非动态编程语言可以是面向对象的语言,在该情况下非动态程序106可以定 义虚拟机104所操作的对象。
非动态程序106与堆栈108接口。堆栈108充当非动态程序106的调用 堆栈,在那里将参数传递到方法,从而该方法可以具有局部变量并且可以调 用其它方法(或该方法可以递归调用其本身)。
虚拟机104可以包括诸如垃圾收集器110的其它组件。 一旦不再需要由 非动态程序106创建的对象,垃圾收集器IIO就收回在计算机系统102中分 配给这些对象的存储空间。
非动态程序106通常实现和控制用于执行计算机程序的结构化环境。作 为该结构化环境的一部分,非动态程序106实现虚拟才几124,以4丸行动态程— 序126。
虚拟才几124实现动态编程环境。在该动态编程环境中,可以扭^亍以动态 编程语言编写的计算机程序。作为示例示出了动态程序126。动态编程语言 可以是面向对象的语言,在该情况下动态程序126可以定义虚拟机124所操 作的对象。
动态程序126与堆栈128接口 。堆栈128充当动态程序126的调用堆栈, 在那里将参数传递到方法,从而方法可以具有局部变量并且可以调用其它方 法(或该方法可以递归调用其本身)。
动态程序126被隔离在虚拟机124内,并且通过各种所允许的交互^各径 130与非动态程序106交互。下面会更充分地描述这些交互if各径130。以此方 式,动态程序126与计算机系统102隔离,并且与可能属于其他用户的其它 动态程序隔离。
由于语言不同,堆栈108和128并不相同,因为在不同的语言中如^f可传 递参数存在差别。对此,我们的结论是你可以将两种语言结合,因为每个方 法要么属于这种语言,要么属于那种语言,并且你将需要为不同语言分配不 同堆栈帧(stackframe),即关于调用堆栈的数据结构,其描述方法调用。根 据本发明的一个实施例,动态语言堆栈帧128仅仅是非动态语言的堆栈帧结 构108的扩展。负载平衡器40执行在计算机系统102的组件之间虚拟机104的负载平 衡。如参考图2至图3和图6更充分地描述的,虚拟机104的组件可以分布 在多个物理设备上;负载平衡器140管理这种分布。
作为本发明实施例的特定实现方式的示例,ABAPTM编程语言的非动态 编程环境可以提供用于执行以Ruby编写的动态程序的鲁棒环境。ABAPTNn# 言是由SAP AG创建的高级编程语言。它与最近引入的Java —起被定位为目 前用于对SAP的Web应用服务器产品进行编程的语言,SAP的Web应用服 务器产品是用于构建企业应用的SAP的NetWeaverTM平台的一部分。
图2是可以用于实现计算机系统102的三层架构系统200的框图。系统 200包括表示层202、应用层204和数据库层206。网络208连4妄层内和层之 间的设备。
表示层202 —般包括一个或多个客户端计算机212。客户端计算机212 一般为用户提供图形用户接口 ,以与系统200的其它部分交互。
应用层204 —般包括一个或多个应用服务器214。应用服务器214 —般 实现用于处理用户和下层数据之间交互的业务逻辑(business logic )。不同的 应用服务器214可以执行不同的功能。例如, 一个应用服务器214可以用于 构造原型或开发,而其它应用服务器214可以用于商业智能生产活动(business intelligence production activity )。 一般而言,虚拟机104 (参见图1 )驻留在应 用层204中的一个或多个应用服务器214上。
数据库层206 —般包括一个或多个数据库服务器216。数据库服务器216 一般实现存储和操作下层数据和相关元数据的数据库管理系统。
尽管在每层中示出了许多单独的设备,但是这样主要是出于说明的目的, 为了示出可伸缩性。例如,在基本配置中可以使用单个数据库服务器,而随 着数据库中数据量的增加,数据库服务器216的数目也可以增加。作为另一 个示例,在基本配置中可以使用单个应用服务器,而随着业务逻辑处理量的 增加,应用服务器214的数目也可以增加。负载平衡器140 (参见图1)通过 将虚拟机104分布到应用层中的应用服务器214上,以及协调与数据库层中 的数据库服务器216的交互,来执行负载平衡。以此方式,负载平衡器140 (参见图1 )使得在结构化编程环境(例如,虚拟机104)内的动态编程环境 (例如,虚拟机124)能够具有可伸缩性。
可以在各种操作系统中实现系统200,例如UNIX( AIX、 HP-UX、 Solaris、Linux )、 Microsoft Windows、 IBM Series i (以前的iSeries、 AS/400 )和IBM zSeries(以前的S/390 )。可以使用各种类型的数据库系统,包括DB2、Informix、 MaxDB 、 Oracle和Microsoft SQL Server。 SAP Web应用服务器是系统200的 实现方式的一个特定示例。
返回到图1,根据本发明实施例的特定示例性实现方式,可以使用SAP Web应用服务器来实现计算机系统102 (或系统200,参见图2)。在这样的 情况下,非动态编程语言是ABAPTM语言。SAP Web应用服务器可以实现作 为ABApTM运行时(nmtime)环境的一部分的虛拟机104。非动态程序106包括 用于在ABAP中执行动态程序的组件(在随后部分中会更充分地讨论)。作为 另一个特定的示例性实现方式,可以将Ruby用作动态编程语言。
图3是示出了根据本发明实施例的多个虚拟机的框图。虚拟机104 (参 见图1 )执行非动态程序106(参见图1 ),其可以实现多个虛拟机124a、 124b、 124c、 124d和124e (统称为"虚拟机124";也参见图1)。虚拟机124的交 互经由所允许的路径130 (也参见图1 )进行。虚拟机124a (例如)与每一个 其它的虚拟才几124b、 124c、 124d和124e相互隔离。在虚拟才几124中的动态 程序也彼此隔离。 一个用户的动态程序不能影响另 一个用户的动态程序。
图4是非动态程序106和相关程序的各种组件的框图。为了简明,特别 参考了 Eclipse、 Ruby和ABAPTM。然而,应当理解,当使用其它的建模框架、 动态语言和非动态语言时,可以应用类似的和克念。
用户可以与软件框架402 (诸如Eclipse)交互来开发Ruby程序。软件 框架402 —般提供用于编程的用户接口 。软件框架402可以提供标准的源控 制系统。软件框架402可以包括调试器。软件框架402与编译器410交互。
作为示例,示出了 Ruby程序404。在Ruby中命令"puts"是用于打印 输出的基本命令,所以该Ruby程序404的目的是输出短语"hello world"(世 界你好)。
编译器410将Ruby程序404编译成中间程序412。根据本发明的实施例, 中间程序412的语言称为Blue Ruby中间语言。可以以Java⑧语言来编写编译 器410。编_泽器410与虚拟才几124交互。
上面关于图1 一般性地描述了虚拟机124。更具体地,Blue Ruby虚拟机 124是执行中间程序412的堆栈/寄存器虚拟机。可以按照意愿来改变虚拟机 124的参数,从而可以对编译器410进行相应的调整,以使得中间程序412在改变后的虚拟机124上运行。
一般而言,语言虛拟机(VM)是逐个运行指令的引擎。根据本发明的 某些实施例,用于不同语言的VM可以被认为是加性的(additive),因为VM 仅仅由要运行的非结构化的指令集组成。你可以向现有的VM添加第二语言 所需的指令,而不会发生冲突。可以将这些新指令自然地实现为通常已实现 的第 一语言的指令,或实现为更基本的基础操作(more atomic base operation) 的组合,所述基础操作已经存在以用于第一语言(在硬件处理器设计中,后 者有时被称为微代码)。
动态语言例如可以具有用于通过向对象实例发送消息来动态调用方法的 指令,该指令是非动态语言不需要也不具有的。
作为示例,示出了中间程序412。由于虚拟机124是堆栈机,所以使用 命令"push"将短语"hello world"压入到堆栈中。使用命令"call"来调用 函凄t "puts"。
加载器420在软件框架402、虚拟机124和虚拟机104之间接口 。加载 器可以是非动态程序106的组件(参见图1 )。
非动态程序106 (参见图1 )与多个模块接口 ,所述多个模块用于执行与 管理虚拟机124和运行中间程序412相关的各种函数。这些模块的细节依赖 于所实现的具体的动态语言和具体的非动态语言的细节。对于使用Ruby和 ABAP的图4的实施例来说,这些模块是以ABAP编写的。这些模块是虚拟 机104的一部分,并且包括对象存储和运行时库模块432、内置(build-in)操作 模块434和安全桥(secured bridge )模块436。
对象存储和运行时库模块432将动态语言中的对象映射为非动态语言中 的对象。 一般而言,对象存储和运行时库模块432管理基本类层级(basic class hierarchy),并且处理类、方法和对象实例之间的关系。对象存储和运行时库 模块432也可以管理对象的寿命,这可能涉及与垃圾收集器110 (参见图1) 的交互。作为示例,Ruby具有对象、方法、块、数组、模块和类。ABAP具 有类。在图4的实施例中,对象存储和运行时库模块432将这些Ruby对象映 射为各种ABAP类(对象)。例如,Ruby对象"object"被映射为ABAP类 "RubyObject"。
通常,在编程语言中将数据类型组织为类型层级(typehierarchy)。两种 语言具有两个不同的类型层级,即,两个独立的树。然而,根据本发明的某些实施例,可以将第二语言的树放到第一语言的树中,作为从第一语言的对
象根(objectroot)导出的子树。然后,第二语言的对象根可以实现第二语言 的动态方法调用能力,从而从那里导出的动态语言的所有对象可以接收动态 方法调用。由于动态语言不知道如何调用第一语言的方法,所以第一语言的 对象根的方法对于动态语言来说不是直接可用的,因此不会破坏语言的语义。 另一方面,由于通过第一语言的垃圾收集器来管理从第一语言的对象根导出 的每个对象,所以这两种语言共享共同的垃圾收集器、存储器管理和物理数 据表示。
内置操作模块434将动态语言中的功能或操作实现为非动态语言中的功 能或操作(对象)。例如,Ruby具有"string"函数和"fixnum"函数。在图 4的实施例中,内置操作模块434将这些Ruby函数实现为ABAP类(对象)。 例如,将Ruby函数"string"实现为ABAP类"Ruby String"。类Ruby String 包括的ABAP命令在ABAP环境中执行与Ruby函数"string"相同的功能。
安全桥模块436定义所允许的交互路径130 (参见图1)。这些交互路径 帮助确保动态程序在非动态编程环境中保持鲁棒。例如,ABAP包括命令 BADI、 RFC和BQL。允许Ruby程序调用这些命令,以执行这些特别允许的 ABAP功能。
尽管所允许的交互路径130与安全桥模块436非常密切地相关联,但是 它们也可以被视为是作为非动态语言对象的动态语言对象的特定映射和实 现。也就是说,对象存储和运行时库模块432还根据其从Ruby到ABAP的 对象映射来定义所允许的交互路径130。内置操作模块434还根据其从Ruby 到ABAP的对象映射来定义所允许的交互i 各径130。
这些所允许的交互路径130帮助本发明的某些实施例来管理用于执行动 态程序的鲁棒的、结构化的环境。虚拟机104实现不同用户的处理之间的线 程级隔离。这样, 一个用户的动态程序不能影响下层数据或其它用户的程序, 除非经所允许的交互路径130允许。
图5是#^居本发明的实施例的方法500的流程图。方法500在结构化环 境中执行动态程序。方法500可以在计算机系统上实现,例如计算机系统102 (参见图1 )或系统200 (参见图2)。
在步骤510,实现第一虚拟机,以执行第一程序。第一程序是以非动态 编程语言编写的。例如,计算机系统102可以实现虚拟机104,以实现非动态程序106 (参见图1 )。非动态编程语言可以是ABAP。
在步骤520,在第一虚拟机中管理第一堆栈。第一程序使用该第一堆栈。 例如,虚拟机104可以管理堆栈108 (参见图1)。非动态程序108使用堆栈 108 (参见图1)。
在步骤530,在第一程序和第二程序之间定义允许的交互路径。第二程 序是以动态编程语言编写的。例如,安全桥模块436 (参见图4)定义至少一 些所允许的交互路径130 (参见图1 )。
在步骤540,第一程序实现第二虛拟机,以使用所允许的交互路径在第 一虚拟机内执行第二程序。例如,非动态程序106实现虚拟机124(参见图1 )。 虚拟机124使用所允许的交互路径(参见图1 )在虚拟机104内执行动态程 序126。
在步骤550,第一程序管理第二虚拟机中的第二堆栈。第二程序使用第 二堆栈。例如,非动态程序106管理虚拟机124中的堆栈128 (参见图1 )。
图6是用于实现本发明的实施例的示例性计算机系统和网络1400的框 图。计算机系统1410包括总线1405或用于传送信息的其它通信机制;以 及与总线1405耦接以用于处理信息的处理器1401。计算才几系统1410还包括 耦接到总线1405的存储器1402,用于存储要由处理器1401执行的信息和指 令,例如,包括用于执行上述技术的信息和指令,包括表示层202的功能(参 见图2)。该存储器还可以用于存储在执行要由处理器1401执行的指令期间 的临时变量或其它中间信息。该存储器的可能实现方式可以是但不限于随机 存取存储器(RAM)、只读存储器(ROM)或其二者。还提供存储设备1403 来存储信息和指令。存储设备的普通形式包括例如硬盘驱动、磁盘、光盘、 CD-ROM、 DVD、闪存、USB存储卡或计算机可以读取的任何其它介质。存 储设备1403可以包括例如用于执行上述技术或具体化上述构造的源代码、二 进制代码或软件文件。
计算才几系统1410可以经由总线1405耦接到诸如阴极射线管(CRT)或 液晶显示器(LCD)的显示器1412,显示器1412用于向计算机用户显示信 息。诸如键盘和/或鼠标的输入设备1411耦接到总线1405,用于将来自用户 的信息和命令选择传送给处理器1401。这些组件的组合允许用户与系统通信。 在一些系统中,可以将总线1405划分成多个专用总线。
计算机系统1410也包括与总线1405耦接的网络接口 1404。网络接口1404可以在计算机系统1410和局域网1420之间提供双向数据通信。网络接 口 1404可以是数字用户线(DSL)或调制解调器,以通过例如电话线来提供 数据通信连接。网络接口的另一示例是局域网(LAN)卡,以向兼容的LAN 提供数据通信连接。无线链路是另一示例。在任何这样的实现中,网络接口 1404发送和接收电的、电磁的或光学的信号,所述信号携带表示各种类型的
乂+ A丄厶々丄'L丄F .、A
'! ^ & 戮卞徵f -
计算才几系统1410可以通过网络接口 1404向内if关网或因特网1430发送和 接收信息,包括消息或其它接口动作。在因特网的示例中,软件组件或服务 可以驻留在跨越网络的多个不同的计算机系统1410或服务器1431、 M32、 1433、 1434和1435上。例如,可以在一个或多个服务器上实现虛拟才几104 (参见图1)。服务器1431可以通过因特网1430、局域网1420和网络接口 1404将动作或消息从一个组件发送到计算机系统1410上的组件。 一般而言, 服务器1415或1431-1435可以用于实现应用层204和数据库层206 (参见图 2 )。在这样的情况下,负载平衡器140(参见图1 )管理服务器1415或1431-1435 之间的负载平衡。
对于本发明的某些实施例, 一个特征是其中可以执行动态程序的结构化 环境。单独地或者组合地对结构化环境做出贡献的本发明实施例的各方面包 括非动态编程环境、所允许的交互路径、实现非动态编程环境的虚拟机、对 象存储和运行时库以及操作库。
对于本发明的某些实施例,另一特征是线程级隔离。线程级隔离通过约 束除由所允许的交互路径允许的动态程序之外的动态程序,从而有助于实现 鲁棒的、结构化的环境。
如上所述,Java 语言缺少线程级隔离。因而,Java 语言实现不能产生用 于执行Ruby程序的鲁棒的、结构化的环境。此外,当前不知道向^¥&@添加 线程级隔离的方式。
本发明的某些实施例的一个优点在于它们提供了客户端侧集成的开发 环境。结构化的企业应用环境确保了对下层业务数据的鲁棒访问,并且用户 可以自由地测试和开发用于访问下层业务数据的动态程序,而不用担心造成 破坏。
本发明的某些实施例的另 一个优点在于它们提供了对软件的平滑寿命周 期管理。例如,用户可以在与产品系统相同的系统上、 -使用实际的下层业务数据、利用动态程序来执行快速的测试和开发。于是,当已充分测试动态程 序后,可以将它作为标准版本的一部分在产品系统上发布,而不必再执行代
码接口 (porting)或其它过程。
上述描述示出了本发明的各种实施例以及如何实现本发明的各方面的示 例。本发明的上述示例和实施例不应被认为仅仅是实施例,而是意图示出如 下面的权利要求中所限定的本发明的灵活性和优点。基于上述公开和下面的 权利要求,在不背离权利要求定义的本发明的精神和范围的情况下,其它布 置、实施例、实现方式和等价物对于本领域技术人员将是明显的并且可以被 采用。
权利要求
1. 一种计算机系统,包括用于在结构化环境中执行动态程序的软件,所述软件包括虚拟机软件文件,其实现第一虚拟机,以执行第一程序,其中所述第一程序是以非动态编程语言编写的,其中所述第一虚拟机管理第一堆栈,并且其中所述第一程序使用所述第一堆栈;以及安全桥软件文件,其定义在所述第一程序和第二程序之间的多个所允许的交互路径,其中所述第二程序是以动态编程语言编写的,其中,所述第一程序在所述第一虚拟机内实现第二虚拟机,以利用多个所允许的交互路径来执行所述第二程序,其中所述第一程序管理所述第二虚拟机中的第二堆栈,并且其中所述第二程序使用所述第二堆栈。
2. 根据权利要求1所述的计算机系统,其中,所述软件还包括 对象存储和运行时库软件文件,其管理多个对象,其中所述多个对象与所述第二程序相关,其中所述第 一程序使用所述对象存储和运行时库软件文 件来在所述第 一虚拟机中执行所述第二虚拟机内的所述第二程序。
3. 根据权利要求1所述的计算机系统,其中,所述软件还包括 对象存储和运行时库软件文件,其将所迷动态编程语言的第一组多个对象映射到所述非动态编程语言的第二组多个对象,其中所述第二虚拟机使用 所述第二組多个对象在所述第 一虚拟机中执行所述第二程序。
4. 根据权利要求1所述的计算机系统,其中,所述软件还包括 操作库软件文件,其实现与所述第二程序相关的多个操作,其中所述第一程序使用所述操作库软件文件,以在所述第一虚拟机中使用所述第二虚拟 机将动态编程语言中的第 一操作作为非动态编程语言中的第二操作来执行。
5. 根据权利要求1所述的计算机系统,其中,所述软件还包括 编译器软件文件,其将所述第二程序编译为经编译的第二程序,其中所述第一程序在所述第一虚拟机中使用所述第二虚拟机来执行所述经编译的第 二程序。
6. 根据权利要求1所述的计算机系统,其中 所述第二虚拟机是多个第二虚拟机中的一个;所述第二程序是以所述动态编程语言编写的多个第二程序中的 一 个;所述第二堆栈是多个第二堆栈中的 一个;所述第一程序在所述多个第二虚拟机中的相应的一个中管理所述多个第二堆栈中的每一个;所述多个第二程序中各自使用所述多个第二堆栈中的相应的一个;并且所述第一程序在所述第一虚拟机中实现所述多个第二虚拟机,以使用多 个所允许的交互路径执行所述多个第二程序,从而使所述多个第二程序中的 每一个第二程序与所述多个第二程序中其它的每一个第二程序彼此隔离。
7. 根据权利要求1所述的计算机系统,其中所述安全桥软件文件定义在所述第一程序和第三程序之间的多个所允许 的交互路径,其中所述第三程序是以动态编程语言编写的;并且所述第一程序在所述第一虛拟机中实现第三虚拟机,以使用所述多个所 允许的交互路径来执行所述第三程序,从而使所述第三程序与所述第二程序 隔离,其中所述第一程序管理所述第三虚拟机中的第三堆栈,并且其中所述 第三程序使用所述第三堆栈。
8. 根据权利要求1所述的计算机系统,其中,所述第二程序是以所述动 态编程语言编写的多个第二程序中的一个,还包括多个应用服务器,其经由网络连接到多个客户端设备和多个数据库服务 器,其中通过增加所述多个应用服务器来提供执行所述多个第二程序的可伸 缩性。
9. 根据权利要求1所述的计算机系统,其中,所述第二虛拟机通过将指 令从所述动态编程语言翻译为所述非动态编程语言来执行所述第二程序。
10. 根据权利要求1所述的计算机系统,其中所述第一程序定义第一组 多个对象,其中所述第二程序定义第二组多个对象,其中所述第一虚拟机对 所述第 一组多个对象进行操作,其中所述第二虚拟机对所述第二组多个对象 进行才乘作,其中,所述软件还包括垃圾收集器软件文件, 一旦不再需要所述第一组多个对象和所述第二组 多个对象,则该垃圾收集器软件文件收回在所述计算机系统中分配给所述第 一组多个对象和所述第二组多个对象的存^f渚空间。
11. 根据权利要求1所述的计算机系统,其中,所述第二程序是以所述 动态编程语言编写的多个第二程序中的一个,还包括多个应用服务器,其经由网络连接到多个客户端设备和多个数据库服务器;以及负栽平衡器软件文件,其执行在多个应用服务器上所述第一虚拟机和所 述多个第二程序的负载平衡。
12. —种在结构化环境中执行动态程序的计算机实现的方法,包括步骤 实现第一虚拟机,以执行第一程序,其中所述第一程序是以非动态编程语言编写的;管理所述第一虚拟机中的第一堆栈,其中所述第一程序使用所述第一堆栈;定义在所述第一程序和第二程序之间的多个所允许的交互路径,其中所述第二程序是以动态编程语言编写的;使用所述第 一程序实现第二虚拟机,以使用所述多个所允许的交互路径在所述第一虚拟机中执行所述第二程序;以及使用所述第一程序管理所述第二虚拟机中的第二堆栈,其中所述第二程 序使用所述第二堆栈。
13. 根据权利要求12所述的方法,还包括将所述动态编程语言的第一组多个对象映射到所述非动态编程语言的第 二组多个对象,其中所述第二虚拟机使用所述第二组多个对象在所述第一虚 拟机中执行所述第二程序。
14. 根据权利要求12所述的方法,还包括实现与所述第二程序相关的多个#:作,其中所述第 一程序^f吏用所述多个 操作,以在所述第一虚拟机中使用所述第二虚拟机将动态编程语言的第一操 作作为非动态编程语言的第二操作来执行。
15. 根据权利要求12所述的方法,还包括将所述第二程序编译为经编译的第二程序,其中所述第一程序在所述第 一虚拟机中使用所述第二虛拟机来执行所述经编译的第二程序。
16. 根据权利要求12所述的方法,还包括定义所述第一程序和第三程序之间的多个所允许的交互路径,其中所述 第三程序是以动态编程语言编写的;并且使用所述第一程序在所述第一虚拟机中实现第三虛拟机,以使用所述多 个所允许的交互路径来执行所述第三程序,从而使所述第三程序与所述第二 程序隔离,其中所述第一程序管理所述第三虚拟机中的第三堆栈,并且其中所述第三程序使用所述第三堆栈。
17. 根据权利要求12所述的方法,还包括将指令从所述动态编程语言翻译为所述非动态编程语言,以便所述第二 虛拟机执行所述第二程序。
18. 根据权利要求12所述的方法,其中所述第二程序是以所述动态编程 语言编写的多个第二程序中的一个,并且其中多个应用服务器经由网络连接 到多个客户端设备和多个数据库服务器,还包括执行在所述多个应用服务器上所述第一虚拟机和所述多个第二程序的负 载平ff。
19. 一种计算机可读介质,其上记录有用于在结构化环境中执行动态程 序的软件,所述软件包括虚拟机软件文件,其实现第一虚拟机,以执行第一程序,其中所述第一 程序是以非动态编程语言编写的,其中所述第一虚拟机管理第一堆栈,并且 其中所述第一程序使用所述第一堆栈;以及安全桥软件文件,其定义所述第一程序和第二程序之间的所允许的交互 路径,其中所述第二程序是以动态编程语言编写的,其中,所述第一程序在所述第一虚拟机内实现第二虚拟机,以利用所述 多个所允许的交互路径来执行所述第二程序,其中所述第 一程序管理所述第 二虚拟4几中的第二堆栈,并且所述第二程序J吏用所述第二堆栈。
20. 根据权利要求19所述的计算机可读介质,其中,所述第二程序是以 所述动态编程语言编写的多个第二程序中的一个,并且其中多个应用服务器 经由网络连接到多个客户端设备和多个数据库服务器,还包括负载平衡器软件文件,其执行在所述多个应用服务器上所述第一虚拟机 和所述多个第二程序的负载平衡。
全文摘要
本发明提供一种包括用于在结构化环境中执行动态程序的软件的计算机系统、一种在结构化环境中执行动态程序的计算机实现的方法以及一种记录有用于在结构化环境中执行动态程序的软件对计算机可读介质。在一个实施例中,本发明包括执行非动态程序的第一虚拟机,其实现执行动态程序的第二虚拟机。所述动态程序经由各种所允许的交互路径在非动态编程语言的结构化环境中运行。以这种方式,可以在鲁棒的企业应用环境中执行动态程序。
文档编号G06F9/44GK101430644SQ200810174818
公开日2009年5月13日 申请日期2008年11月5日 优先权日2007年11月5日
发明者雷纳·布伦德尔, 默里·斯波克 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1