CN1171147C - 自动的承接软件/适配器生成器 - Google Patents

自动的承接软件/适配器生成器 Download PDF

Info

Publication number
CN1171147C
CN1171147C CNB001070231A CN00107023A CN1171147C CN 1171147 C CN1171147 C CN 1171147C CN B001070231 A CNB001070231 A CN B001070231A CN 00107023 A CN00107023 A CN 00107023A CN 1171147 C CN1171147 C CN 1171147C
Authority
CN
China
Prior art keywords
bytecode
adapter
compiler
run
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB001070231A
Other languages
English (en)
Other versions
CN1271892A (zh
Inventor
小C・N・克利克
小C·N·克利克
维克
C·A·维克
帕莱茨尼
M·H·帕莱茨尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1271892A publication Critical patent/CN1271892A/zh
Application granted granted Critical
Publication of CN1171147C publication Critical patent/CN1171147C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

用于自动地在被规定的运行期环境中提供一个适配器或承接软件的系统和方法。适配器生成器随输入参数被提供,这些输入参数被处理以及向编译器输入。该编译器被连接到用于保存已生成的适配器的适配器库。该适配器库根据要求在执行字节码或一系列字节码时向运行期系统提供适配器。

Description

自动的承接软件/适配器生成器
技术领域
本发明一般地涉及计算机系统。更具体地,用于自动地在多平台环境中生成承接软件的方法和装置被公开。
背景技术
JavaTM程序设计语言是由Sun Microsystems开发的面向对象的高级程序设计语言,并被设计为可移植,足以在从小到个人计算机大到超级计算机的广泛的计算机上执行。用Java(以及其它语言)写的计算机程序可能被编译为虚拟机指令,用于由Java虚拟机执行。通常,Java虚拟机是一个解释器,该解释器解码并执行那些虚拟机指令。
用于Java虚拟机的虚拟机指令是字节码,即它们包括一个或多个字节。这些字节码被保存在被称为“类文件”的特殊文件格式中,该“类文件”包括关于类的方法的字节码。除类的方法的字节码外,该类文件包括一个符号表以及其它辅助信息。
作为Java字节码被包含在一个或多个类文件中的计算机程序是独立于平台的。该计算机程序可以在任何能够运行Java虚拟机的一个实现的计算机上被执行,反修改。该Java虚拟机是一个“类属”计算机的软件仿真器,这是使用于Java虚拟机的计算机程序独立于平台的主要因素。
Java虚拟机通常被实现为一个软件解释器。传统的解释器在执行中解码并执行被解释程序的虚拟机指令,一次一条指令。另一方面,编译器在执行前将源代码解码为本机指令,因此解码不在执行时进行。因为传统的解释器在一条指令每次被遇到时在执行该指令前重复地解码该指令,解释程序的执行一般比编译程序的执行慢得多,因为已编译程序的本机指令可以在本机或本计算机系统执行而不需要解码。因此,当性能是一个重要因素时,最好使用编译器代替解释器来解码源代码。但是,为实现这一点,所谓的适配器将被依赖于平台的解释器使用的执行栈翻译为依赖于平台的编译器要求的形式。不幸地,由于由依赖于平台的编译器生成的代码可能以不同于解释器的方式存储和交换信息,必须为每个运行Java虚拟机的平台构造该平台特有的适配器。这通常需要用户使用,举例来说,汇编语言或C++代码,为每个平台生成适配器。为每个运行Java虚拟机的平台编码适配器很费时间并易于出错。
通常,Java虚拟机将被用一种不同于Java编程语言的编程语言(例如,C++编程语言)编写。因此,Java程序的执行可能涉及用多种编程语言编写的函数的执行。此外,字节码本身可以调用不用Java编程语言编写的本机函数(例如,用于输入/输出的系统特有的函数)。因此通常执行一个Java程序必然要执行用多种编程语言编写的函数。一个RPC(远程过程调用)是一个协议,一个程序使用该协议能够请求来自位于网络中另一计算机上的程序的服务,而不需要知道网络细节。一个过程调用有时也被称为函数调用或子程序调用。使用客户端—服务器模式,发出请求的程序是一个客户,而提供服务的程序是服务器。在常规的或本地的过程调用中,一个RPC是一个同步操作,要求发出请求的程序被挂起直到远程过程的结果被返回。但是,共享相同地址空间的轻量级过程或线程的使用允许多个RPC被同时执行。
当使用RPC的程序语句被编译成一个可执行程序,一个承接软件被包含在编译后的用来表示远程过程代码的代码中。承接软件是一个小程序例程替代一个较长的程序,该较长的程序可能以后再被加载或位于远程。举例来说,一个使用远程过程调用(RPC)的程序被编译,用承接软件替代提供被请求的过程的程序。该承接软件接受请求,然后将它(通过另一个程序)传递给远程过程。当该过程完成其服务,它将结果或其它状态返回给承接软件,承接软件再将它传回发出该请求的程序。
如同适配器,在传统的虚拟机中,每个运行该虚拟机的平台需要一个手工编码的承接软件库。为每个运行虚拟机的平台为每个RPC编码承接软件很费时间并易于出错。
因此,需要用于自动地生成依赖于平台的适配器库的技术。此外,需要提供用于为每个运行虚拟机的平台自动地提供依赖于平台的承接软件库的技术。
发明内容
通常,本发明的实施例提供创新的系统和方法,用于自动地生成依赖于平台的用于虚拟机的适配器和承接软件的库。
用于在运行期系统中执行字节码以及自动地提供一个适配器或承接软件的装置被公开。该装置包括连接到一个解释器单元的字节码源。该解释器被用于解释字节码。该解释器又被连接到运行期系统,该系统执行经解释的字节码。该字节码源也被连接到一个用于编译字节码的编译器。该编译器又被连接到执行经编译的字节码的运行期系统。该装置还包括与编译器相连的适配器/承接软件生成器单元,根据要求向运行期系统提供适配器或承接软件。
在一个优选实施例中,连接到运行期系统的库被用于保存适配器和承接软件,这些适配器和承接软件然后被运行期系统在需要时检索。
在另一实施例中,一个实现用于在运行期系统中处理字节码的装置的计算机程序产品被公开。该程序产品包括解释接收到的字节码,并将解释后的字节码传递给将被执行的运行期系统的计算机代码。该计算机代码也编译接收到的字节码并将编译后的字节码传递给运行期系统用于执行。
在另一实施例中,一种计算机实现的用于在运行期环境中处理字节码的方法被公开。如果需要一个适配器以处理字节码,需要的适配器是否在适配器库中的判断被作出。如果需要的适配器不在适配器库中,适配器生成器生成适配器并将它保存在库中,然后该库在运行期系统执行该字节码时向运行期系统提供适配器。
本发明的其它特性和优点在考察下面与附图相联系的详细描述后将变得显而易见。
附图说明
图1图示了一个计算机系统的例子,该计算机系统可能被用于执行本发明的一个实施例的软件。
图2显示了图1的计算机系统的一个系统块图。
图3显示了Java源代码程序如何被执行。
图4显示了Java运行期系统的一个实现的元件。
图5图示了关于被保存在一个执行栈上的函数的框架。
图6以Java虚拟机显示了本发明的一个实施例。
图7以Java虚拟机显示了关于适配器/承接软件使用的流程图。
图8显示了用于生成一个适配器/承接软件的流程图。
具体实施方式
定义
函数—一个软件例程(也被称为子例程,过程,成员函数,以及方法)。
框架(或活动框架,活动记录)—一个保存在执行栈上的记录,用于一个函数保存有关该函数执行的信息,这些信息可以包括状态变量,局部变量和一个操作数栈。
执行栈—在程序执行过程中用于为函数以它们顺序调用的次序保存框架的栈。当一个函数(“被调用者”)被调用,关于该函数的一个框架被压入该执行栈。随后,当该函数结束,该框架被弹出栈,在执行栈顶部的框架的函数(“调用者”)恢复执行。
操作数栈—用于在执行过程中保存被机器指令使用的操作数的栈。
外部码—用不同于一种特定的编程语言(例如,Java编程语言)的其它编程语言编写的计算机代码。举例来说,Java虚拟机可以被用C++编程语言编写,Java虚拟机相对于正被解释的Java代码程序可以被认为是外部码(外部码包括本机方法)。
本机方法—用不同于Java编程语言编写的函数。本机方法可以被Java程序调用,导致它们被动态地加载并执行。此外,本机方法可以调用用Java编程语言编写的函数。
在下面的描述中,本发明将根据优选实施例被描述,该实施例为Java虚拟机实现一个执行栈,该虚拟机执行Java程序(例如字节码)。特别地,在描述的例子中,Java虚拟机用C++编程语言写成。但是,本发明不限于任何特别的语言,计算机结构,或特别的实现。因此,下面对实施例的描述用于示例的目的而不是限制。
图1图示了一个计算机系统的例子,该计算机系统可能被用于执行本发明的一个实施例的软件。图1显示了计算机系统1,该系统包含显示器3,屏幕5,机箱7,键盘9,以及鼠标11。鼠标11可以具有一个或多个按键用于与图形用户界面交互。机箱7容纳CD-ROM驱动器13,系统内存和硬盘驱动器(见图2),它们可以被用于保存和检索由实现本发明的计算机代码组成的软件程序,与本发明一起使用的数据,等等。尽管CD-ROM15被显示为典型的计算机可读存储媒体,其它计算机可读媒体,包括软盘,磁带,快闪存储器,系统内存,以及硬盘可以被使用。此外,包含在载波中的数据信号(例如,在网络,包括因特网中)可以是计算机可读存储媒体。
图2显示了图1的用于执行本发明实施例的软件的计算机系统1的一个系统块图。如同在图1中,计算机系统1包括监视器3和键盘9,以及鼠标11。计算机系统1还包含子系统,诸如中央处理器51,系统内存53,固定存储器55(例如硬盘驱动器),活动存储器57(例如CD-ROM驱动器),显示适配器59,声卡61,扬声器63,以及网络借口65。其它适于随本发明使用的计算机系统可以包括额外的或较少的子系统。举例来说,另一个计算机系统可以包括多于一个的处理器51(即一个多处理器系统),或高速缓存。
计算机系统1的系统总线结构由箭头67表示。但是,这些箭头演示了用于连接子系统的任一互连方案。举例来说,本地总线可以被用于连接中央处理器到系统内存和显示适配器。图2所示的计算机系统1只是适于随本发明使用的计算机系统的一个例子。其它具有不同子系统配置的计算机系统也可以被使用。
典型地,用Java编程语言编写的计算机程序被编译为字节码或Java虚拟机指令,然后被Java虚拟机执行。字节码被保存在类文件中,该类文件被输入到Java虚拟机中解释。图3显示了一段简单的Java源代码在Java虚拟机中被解释器执行的过程。
Java源代码101包括用Java写的经典的Hello World程序。该源代码然后被输入到字节码编译器103中,该字节码编译器将源代码编译为字节码。该字节码是虚拟机指令,它们将被软件仿真的计算机执行。典型地,虚拟机指令是类属(即,不为任何特定的微处理器或计算机结构设计),但这不是必须的。该字节码编译器输出Java类文件105,该文件包含Java程序的字节码。
Java类文件被输入到Java虚拟机107中。该Java虚拟机是一个解释器,它解码并执行Java类文件中的字节码。该Java虚拟机是一个解释器,但通常被称为虚拟机,因为它用软件仿真微处理器或计算机结构(例如,微处理器或计算机结构可以不以硬件形式存在)。
图4显示了一个Java运行期系统的实现的元件。Java虚拟机的实现被称为Java运行期系统。Java运行期系统201可以接收Java类文件203,标准内建Java类205,以及本机方法207的输入以执行Java程序。标准内建Java类可以是关于诸如线程,字串等等对象的类。本机方法可以用不同于Java编程语言的编程语言编写。本机方法通常被保存在动态链接库(DLL)或共享库中。
Java运行期系统也可以于操作系统209接口。举例来说,输入/输出函数可以由操作系统处理,包括向该Java运行期系统提供与Java类文件203,标准内建Java类205,以及本机方法207的接口。
动态类加载和验证器211经由操作系统209将Java类文件203,标准内建Java类205加载到内存213。此外,动态类加载和验证器可以验证Java类文件中字节码的正确性并报告任何检测到的错误。
本机方法链接器215经由操作系统209将本机方法207链接进Java运行期系统并将本机方法保存在内存213中。如图所示,内存213可以包含一个用于Java类的类和方法区,以及用于本机方法的本机方法区。内存中的类和方法区可以被保存在一个垃圾收集堆。当新对象被创建,它们被保存在该垃圾收集堆。Java运行期系统,而不是应用程序,在空间不再被使用时收回在垃圾收集堆中的内存。
位于图四中显示的Java运行期系统的核心的是执行引擎217。该执行引擎执行保存在内存213中的指令,并且可以被用软件、硬件或两者的结合实现。执行引擎支持面向对象的应用,并且从概念上可以有多个引擎同时运行,每个Java线程一个。执行引擎217还可以利用支持代码221。该支持代码可以提供与异常、线程、安全性等等相关的功能。
当一个Java程序执行时,函数在每个线程内被顺序调用。对于每个线程有一个执行栈,该栈保存每个尚未完成执行的函数的框架。一个框架保存函数的执行信息,该信息可以包括状态变量,局部变量以及操作数栈。当一个函数被调用,该函数的框架被压入执行栈。当该函数结束,该函数的框架被弹出执行栈。因此,只有与位于执行栈顶部的框架相应的函数是活动的,与位于执行栈顶部以下的框架相应的函数的执行被挂起,直到它们调用的函数返回(即结束)。
图5图示了关于被保存在一个执行栈上的函数的框架。被显示的执行栈301具有位于执行栈顶部的框架303和保存在框架303之下的框架305和307。栈指针SP指向执行栈的顶部,而框架指针FP指向位于执行栈301顶部的框架中的框架指针。
每个被显示的框架包括与该框架相应的函数的状态变量,局部变量以及操作数栈。此外,保存在框架中的最后一项是一个框架指针,该指针指向位于执行栈上当前框架之下的框架中的框架指针,如箭头309和311所示。
当一个函数调用另一个函数,系统首先将当前函数的返回地址压入执行栈301,然后压入最近被调用函数的新框架。以这种方式,当新函数返回,系统能够弹出位于执行栈顶部的框架,然后从执行栈弹出返回地址,并将程序计数器设置为该返回地址,因此调用函数的执行可以恢复。因此,这是框架305和307包括返回地址而活动框架303不包括返回地址的原因。但是,如果与框架303相应的函数调用另一个函数,在新函数的框架被压入执行栈之前,返回地址将被压入执行栈301。
框架指针允许系统精确地跨越执行栈上的框架。举例来说,栈指针SP和框架指针FP勾画了位于执行栈顶部的框架。此外,框架303中的框架指针指明了执行栈上的下一个框架。正好在框架303中的框架指针之下的地址是执行栈上下一个框架的开始,并且框架303的框架指针的内容指明执行栈上下一个框架中的最后一项,即框架305。类似地,框架305中的框架指针指明执行栈上下一个框架的位置。因此,框架指针链允许系统跨越在执行栈上的框架(例如,当框架被弹出执行栈)。
尽管图5显示了执行栈的一种实现,本发明不限于所示的实现。举例来说,该执行栈被显示为在内存中向上生长,但是,应当明确该栈也可以在内存中向下生长。此外,保存在每个框架中的信息可以根据实现而改变。
最近,Java编程语言,一种面向对象的语言,已经引入了编译输出(称为字节码)的可能,该编译输出可以在提供Java虚拟机(或字节码解释器)的任何计算机系统平台上运行。该Java虚拟机被设计来将字节码转换为能够由实际硬件处理器执行的指令。使用此虚拟机,而不是每次解释一条指令,字节码可以在每个特定系统平台有时通过即时(JIT)编译器重新编译。
图6图示了一个装置,包含根据本发明的一个实施例的一个Java虚拟机(JVM)600。在Java编程语言和环境中,一个即时(JIT)编译器是一个程序,将Java字节码转变为能够被直接发送给处理器的指令。在Java被编写完成后,Java源语言语句被Java编译器编译为Java字节码而不是包含与特定硬件平台的处理器(例如,Intel Pentium微处理器或IBM System/390处理器)相匹配的指令的代码。该Java字节码是独立于平台的代码,能够被发送给任何平台并在该平台上运行。
更具体地,当字节码被提供给编译器602提供的JIT编译器,对包含在字节码604中方法的编译被延迟直到该方法即将被执行。当字节码604被提供给解释器606,字节码604被每次一个字节码地读入解释器606。然后解释器606将与被该字节码定义的操作相应的参数装入执行栈500。一旦被装入,解释器606执行被字节码604定义的操作。即,解释器606“解释”字节码604,如同本领域的技术人员应当理解的。通常,解释器606连续地处理字节码604并执行与字节码604相联系的操作。
当一个方法被另一个方法激活,或者,如果该方法被解释,运行期系统608得到以字节码604的序列的形式出现的该方法,其中字节码604可以被解释器606直接执行。如果,在另一方面,被激活的方法是尚未被编译的编译方法,运行期系统608也得到以字节码604的序列的形式出现的该方法,然后可以激活由编译器602提供的平台特定的编译器,编译得到的机器语言指令可以被目标平台操作系统610直接执行。通常,当虚拟机600终止时该机器语言指令被丢弃。
但是,为在编译器602中编译字节码或字节码序列,需要有限数量的编译时间。在执行前,编译器将源代码解码为本机指令,从而解码不在执行过程中进行。因为传统的解释器在一条指令每次被遇到时在执行该指令前重复地解码该指令,解释程序的执行一般比编译程序的执行慢得多,因为已编译程序的本机指令可以在本机或本计算机系统执行而不需要解码。因此,当性能是一个重要因素时,最好使用编译器代替解释器来解码源代码。因此当字节码或字节码序列被虚拟机600接收时,字节码或字节码序列是否将被解释器解释或被编译器编译的判断被作出。举例来说,在接收的字节码或字节码序列将通过执行编译后的代码被处理,而前一个字节码或字节码序列已经被解释器处理的情况下,一个平台特定的适配器必须被提供。该平台特定的解释器到已编译代码(I/C)的适配器被用于将被解释器使用的执行栈500翻译为能够被已编译代码使用的栈。此外,该适配器可以更新系统中其它部分的状态。
可替换地,当前面的字节码或字节码序列已经通过执行已编译的代码被处理,该代码可能由编译器602生成,并且确定解释当前字节码或字节码序列执行效率更高,然后一个已编译代码到解释器(C/I)的适配器必须被提供以适当地将执行栈500翻译为可以被解释器使用的栈。此外,该适配器可以更新系统中其它部分的状态。
当I/C适配器或C/I适配器被创建,它被保存在连接到编译器602和运行期系统的库614中。以这种方式,无论何时确定需要一个特定的适配器,库614被查询,如果该特定适配器不存在,那么它被创建。为创建一个特定平台的适配器,需要依赖于不同平台的输入。在一个实施例中,这些输入包括,举例来说,调用者的已知类型,被调用者的已知类型,被调用者的已知参数数目及其类型,调用约定,等。
图7是一个流程图,详细描述了用于根据本发明的实施例处理字节码或字节码序列的过程700。该过程700在702当字节码或字节码序列被接收时开始。在704,该字节码或字节码序列是否将被解释或通过执行已编译代码被处理的判断被作出。如果字节码或字节码序列将通过执行已编译代码被处理,然后在708判断是否需要一个I/C适配器。如果不需要适配器,在710,该字节码或字节码序列通过执行已编译代码被处理,其结果在711被返回。但是,如果需要适配器,在712判断所需的适配器是否被保存在库中。如果所需的适配器没有被保存在库中,所需的适配器在714被生成,否则,所需的适配器在716被从库中得到。两种情况下,适配器在718被编译,其后适配器在720被保存在库中,在722为执行已编译代码作准备,一旦完成准备,字节码或字节码序列在710通过执行已编译字节码被处理。
在711,已编译字节码(或字节码序列)的执行结果被返回后,在724判断是否有更多的字节码。如果有更多的字节码,控制被传递给704,字节码被接收,否则,过程700停止。
返回704,如果确定字节码或字节码序列将被解释,然后在726判断是否需要C/I适配器。如果不需要适配器,字节码或字节码序列在728被解释,其结果在730被返回。但是,如果需要适配器,在732判断所需的适配器是否被保存在库中。如果所需的适配器没有被保存在库中,所需的适配器在734被生成,否则,所需的适配器在736被从库中得到。两种情况下,适配器在738被编译,其后适配器在740被保存在库中,在742为执行已编译代码作准备,然后字节码或字节码序列在728被解释,其结果在730被返回。
在730,已解释字节码(或字节码序列)的执行结果被返回后,在724判断是否有更多的字节码。如果有更多的字节码,控制被传递给704,字节码被接收,否则,过程700停止。
图8是详细描述根据本发明的实施例用于生成一个适配器/承接软件的过程800的流程图。过程800在802通过识别用于调用已编译代码的参数以及恰当的机器状态开始。接着,在804,输入参数和机器状态被映射到已编译代码调用的输入。在806,机器状态和返回值被映射到解释器到已编译代码的适配器的返回点。在808,适配器/承接软件的表示被提供给编译器用于编译并生成目标代码。
尽管上面是对本发明的优选实施例的一个完整描述,存在备选的,修正的以及等价的方案可以被使用。显然,通过对上面描述的实施例作适当的修改,本发明是适用的。举例来说,上面描述的实施例已经引用了一个包括Java框架的执行栈,但是本发明的原则可以被容易地应用于其它系统和语言。因此,上面的描述不应当被看作是对本发明的范围的限制。本发明的范围被所附的权利要求的组合和约束以及它们等价的完整范围定义。

Claims (6)

1.用于在运行期系统执行字节码的装置,包括:
字节码源;
与字节码源相连用于解释字节码的解释器;
与字节码源相连用于编译字节码的编译器;
与该解释器和编译器相连的运行期系统,其中运行期系统被设定用于当字节码被解释器解释时执行已解释的字节码,以及,当字节码被编译器编译时执行已编译的字节码;
与编译器相连的适配器/承接软件生成器单元,被设定用于根据要求向编译器提供适配器源代码或承接软件源代码;
与编译器和运行期系统相连的库,被设定用于保存被编译器编译的适配器和承接软件,其中运行期系统在需要时检索适配器。
2.如权利要求1中描述的装置,其中字节码是一系列字节码之一。
3.如权利要求1中描述的装置,其中适配器生成器随适配器输入参数被提供,用于生成需要的适配器。
4.在一个计算机系统中用于处理字节码的方法,该方法包括:
接收字节码;
编译接收到的字节码;
当被编译器请求时生成适配器;以及
保存适配器以及在执行已编译或已解释的字节码时向运行期系统提供适配器。
5.在一个计算机系统中用于在运行期环境中处理字节码的方法,该方法包括:
确定为处理字节码是否需要一个适配器;
如果需要适配器,确定该适配器是否位于一个适配器库中;
如果确定需要的适配器不在库中,生成该适配器;
在库中保存生成的适配器;
向运行期环境提供该适配器;以及
执行该字节码。
6.在一种计算机系统中用于在运行期环境中处理字节码的方法,包括:
提供字节码;以及
确定为执行字节码是否需要一个适配器,当需要的适配器不在适配器库中时生成需要的适配器,以及根据要求向运行期系统提供所需的适配器。
CNB001070231A 1999-04-23 2000-04-24 自动的承接软件/适配器生成器 Expired - Lifetime CN1171147C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/298637 1999-04-23
US09/298,637 US6381737B1 (en) 1999-04-23 1999-04-23 Automatic adapter/stub generator

Publications (2)

Publication Number Publication Date
CN1271892A CN1271892A (zh) 2000-11-01
CN1171147C true CN1171147C (zh) 2004-10-13

Family

ID=23151373

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB001070231A Expired - Lifetime CN1171147C (zh) 1999-04-23 2000-04-24 自动的承接软件/适配器生成器

Country Status (6)

Country Link
US (2) US6381737B1 (zh)
EP (1) EP1046984A3 (zh)
JP (1) JP2000347871A (zh)
CN (1) CN1171147C (zh)
AU (1) AU774467B2 (zh)
CA (1) CA2306545A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10104043A1 (de) * 2000-02-23 2001-08-30 Ibm Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern
US6748396B2 (en) * 2001-06-01 2004-06-08 International Business Machines Corporation Independent class loader for dynamic class loading
US7315980B2 (en) * 2002-03-21 2008-01-01 International Business Machines Corporation Method and apparatus for generating electronic document definitions
US6772292B2 (en) * 2002-06-04 2004-08-03 Isaak Garber Two area stack
GB0213218D0 (en) * 2002-06-08 2002-07-17 Koninkl Philips Electronics Nv Operation of java virtual machine
US7472400B2 (en) * 2003-02-28 2008-12-30 Bea Systems, Inc. Method for dynamically generating a wrapper class
US7536675B2 (en) * 2003-02-28 2009-05-19 Bea Systems, Inc. Dynamic code generation system
US7472401B2 (en) * 2003-02-28 2008-12-30 Bea Systems, Inc. Computer product for a dynamically generated wrapper class
US20040172614A1 (en) * 2003-02-28 2004-09-02 Bea Systems, Inc. Dynamic code generation method
GB0309056D0 (en) * 2003-04-22 2003-05-28 Transitive Technologies Ltd Block translation optimizations for program code conversion
US7917898B2 (en) 2004-02-02 2011-03-29 Intel Corporation Methods and apparatus to provide a modular native method invocation system
US8881099B2 (en) * 2004-09-10 2014-11-04 Oracle International Corporation Dynamic generation of wrapper classes to implement call-by-value semantics
FI20041517A0 (fi) * 2004-11-25 2004-11-25 Nokia Corp Menetelmä elektroniikkalaitteiden ohjelmien turvalliseen tulkintaan
US20060129972A1 (en) * 2004-11-30 2006-06-15 Tyburski John C Application developer and method for generating platform independent code
US7590988B2 (en) * 2005-03-08 2009-09-15 Microsoft Corporation Dynamic service generation for legacy components
US7707547B2 (en) * 2005-03-11 2010-04-27 Aptana, Inc. System and method for creating target byte code
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US20070011669A1 (en) * 2005-07-06 2007-01-11 International Business Machines Corporation Software migration
US8694797B2 (en) * 2006-02-14 2014-04-08 Lenovo (Sinapore) Pte Ltd Method for preventing malicious software from execution within a computer system
US8086873B2 (en) * 2006-06-05 2011-12-27 Lenovo (Singapore) Pte. Ltd. Method for controlling file access on computer systems
US8762976B2 (en) * 2007-03-09 2014-06-24 Microsoft Corporation Static extensibility models with dynamic languages and scripts
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
CN101458633B (zh) * 2007-12-13 2012-02-15 华为软件技术有限公司 通过脚本程序访问宿主程序的方法及其系统和装置
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
CN102346685B (zh) * 2010-07-29 2016-09-28 甲骨文国际公司 集成适配器管理系统和方法
US9043765B2 (en) * 2011-11-09 2015-05-26 Microsoft Technology Licensing, Llc Simultaneously targeting multiple homogeneous and heterogeneous runtime environments
US8949809B2 (en) 2012-03-01 2015-02-03 International Business Machines Corporation Automatic pipeline parallelization of sequential code
JP5868246B2 (ja) * 2012-04-05 2016-02-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア開発支援方法、プログラム及び装置
US8910137B2 (en) * 2012-04-13 2014-12-09 International Business Machines Corporation Code profiling of executable library for pipeline parallelization
SG11202003808PA (en) * 2019-06-28 2020-05-28 Advanced New Technologies Co Ltd System and method for data processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5432795A (en) * 1991-03-07 1995-07-11 Digital Equipment Corporation System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
US5553286A (en) * 1994-03-17 1996-09-03 International Business Machines Corporation System and method for preparing a computer program for execution
US6321275B1 (en) * 1995-04-24 2001-11-20 Microsoft Corporation Interpreted remote procedure calls
US5675804A (en) * 1995-08-31 1997-10-07 International Business Machines Corporation System and method for enabling a compiled computer program to invoke an interpretive computer program
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6938263B2 (en) * 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6151703A (en) * 1996-05-20 2000-11-21 Inprise Corporation Development system with methods for just-in-time compilation of programs
US5822591A (en) * 1996-08-29 1998-10-13 Hewlett-Packard Company Virtual code system
US5999988A (en) * 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs
US6167565A (en) * 1998-01-08 2000-12-26 Microsoft Corporation Method and system of custom marshaling of inter-language parameters
US6074432A (en) * 1998-03-19 2000-06-13 Xilinx, Inc. Method for generating a software class compatible with two or more interpreters
US6141723A (en) * 1998-04-07 2000-10-31 Microware Virtual machine system for accessing external subprogram functions
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6247172B1 (en) * 1998-07-02 2001-06-12 Hewlett-Packard Company Method for a translation system that aggressively optimizes and preserves full synchronous exception state
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6851109B1 (en) * 1999-05-06 2005-02-01 International Business Machines Corporation Process and system for dynamically compiling a partially interpreted method

Also Published As

Publication number Publication date
AU774467B2 (en) 2004-07-01
US20020083416A1 (en) 2002-06-27
CA2306545A1 (en) 2000-10-23
EP1046984A2 (en) 2000-10-25
JP2000347871A (ja) 2000-12-15
CN1271892A (zh) 2000-11-01
US6381737B1 (en) 2002-04-30
EP1046984A3 (en) 2003-07-23
AU2892200A (en) 2000-10-26

Similar Documents

Publication Publication Date Title
CN1171147C (zh) 自动的承接软件/适配器生成器
CN1134731C (zh) 在计算机系统中编译指令的方法
US6272674B1 (en) Method and apparatus for loading a Java application program
CN1149470C (zh) 一种分析面向对象的程序的执行的方法和设备
US7337436B2 (en) System and method for cross platform and configuration build system
CN1108560C (zh) 用于存储与多种编程语言相关的执行数据的方法和装置
US6412107B1 (en) Method and system of providing dynamic optimization information in a code interpretive runtime environment
CN1181428C (zh) 软件翻译的内省编辑器系统、程序和方法
US8769485B2 (en) Data parallelism and parallel operations in stream processing
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
CN1119756C (zh) 用于进行静态初始化的方法和系统
US20040255268A1 (en) Systems and methods providing lightweight runtime code generation
EP1909174B1 (en) Method for generating interpretable code for storage in a device having limited storage
EP1174791A2 (en) Unified data type system and method
US5469574A (en) Method and system for interfacing interpreted applications with compiled procedures using signature files
CN1821964A (zh) 将本机函数内嵌到编译的Java代码中的方法和系统
CN1271891A (zh) 用于在多平台环境的指令选择的装置和方法
US20040003377A1 (en) Converting byte code instructions to a new instruction set
CN103718159B (zh) 图像处理软件开发方法、图像处理软件开发装置
CA2503184A1 (en) Transitional resolution in a just in time environment
US5889995A (en) Using constant selectors for method identification
US20110264669A1 (en) method for compressing a .net file
US6901591B1 (en) Frameworks for invoking methods in virtual machines
EP1445694A2 (en) Modularization for J2ME platform implementation
CN100337198C (zh) 一种移动通信设备应用程序处理系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20041013

CX01 Expiry of patent term