当前位置: 首页 > 专利查询>索尼公司专利>正文

源代码变换方法技术

技术编号:2888435 阅读:240 留言:0更新日期:2012-04-11 18:40
一种将含有在对象交互中的存根方法的描述的初始源代码变换为对应于程序执行环境的另一源代码的方法。初始源代码是由预定编程语言描述的,含有涉及用于对象交互中的存根方法的信息。变换是参考一个寄存的信息,将源代码按照预定的格式,变换为与普通源代码相同编程语言的源代码。这消除了学习接口定义语言的必要,因而大大方便了利用存根方法形成应用程序。(*该技术在2018年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种用于将包含关于所谓存根法(stub method)的对象交互方法的描述的源代码变换为适合于程序执行环境的源代码的源代码变换方法。本专利技术还涉及一种存储有用于执行源代码变换处理的源代码变换程序的计算机可读的记录媒质。本专利技术的某些特点的细节描述在名称为“数据处理方法和装置”的欧洲专利申请No.0753811A1中,该欧洲专利申请是由同一受让人于1996年7月12日提交的,并对于1997年7月14日在日本提交的JP178625/95要求了公约优先权,因此该申请的完全公开被援引于此,以资参考。一般来说,面向对象编程经常使用对象交互方法。术语“对象交互”被使用在本说明书中意味着,例如用于从一个对象向另外一个对象发送一个消息的处理。对象交互是一种在面向对象编程中由操作系统提供的基本服务。使用在对象交互中的各种方法一般称之为“存根法”。因此,存根法被用在面向对象编程中,用于从一个对象发送一个消息到另外一个对象的目的。在下面的描述中,从其消息被发送的对象将被称之为“客户对象”,而接收该消息的对象将被称之为“服务器对象”。例如,当希望执行从通过网络链接到另外的计算机的服务器对象的程序时,通过网络从客户对象发送一个消息到在另外的计算机上的将被执行的服务器对象。因此,可能执行在通过网络链接的另外计算机上的服务器对象的程序。应当理解为,对于通过网络调用一个被在不同计算机上执行的程序的遥控操作可以与由本地程序调用接口执行的相同的方法来执行。一般来说,存根发生器被用于产生一种存根方法。更为具体地讲,这样的存根发生器读出含有涉及描述在某种编程语言的存根方法的信息的源代码,并从读出的源代码中产生一种存根方法。在大多数情况下,存根发生器具有两种功能,即产生涉及消息发送者的客户对象的存根方法的功能和产生涉及消息接收者的服务器对象的存根方法的功能。利用这些功能,客户对象和服务器对象可以以高度灵活的方式被很容易地建立起来。下面将对利用存根发生器形成一个程序的处理进行描述。利用存根发生器的程序的形成包括借助于C++编程语言非对象交互部分程序的描述和利用接口定义语言对对象交互部分程序的描述。“接口定义语言”是一种定义各个对象之间通信接口的语言。接口定义语言可以是,例如,由CORBA(Common Object Request Broker Architecture)确定的语言,该语言是用于实现面向对象分布处理环境的一种规则。更具体地讲,参照图4,对于对象交互形成一个应用程序的处理开始于三种源代码的形成,这些源代码叫做“第一”、“第二”、和“第三”源代码。第一源代码含有按接口定义语言描述的存根方法信息。这意味着将被用于对象交互的接口是由第一源代码定义的。在图4中,其中该第一源代码被写入的文件f1是由“Test.idl”表示的。第二源代码含有按诸如C++之类的编程语言描述的服务器对象信息。因此,第二源代码含有非按第一源代码描述的对象交互信息的服务器对象信息的部分。该第二源代码还含有,例如从利用第一源代码描述的存根方法调用用于产生基于所接收的消息进行处理的线程(thread)方法的程序。在图4中,描述第二源代码的文件由“Test svc_proc.cc”表示。第三源代码含有按诸如C++之类的编程语言描述的客户对象信息。应当注意,第三源代码包括非按第一源代码描述的对象交互信息的客户对象信息部分。因此,第三源代码含有以应用程序的形式用于实施一个主功能的,例如到一个适合的服务的连接的描述。在图4中,其中第三源代码被描述的文件f3由“Test.cc”和“Test.h”表示。“Test.h”文件是一个组合在“Test.cc”文件中的包含文件。按接口定义语言描述的第一源代码由存根发生器101变换为利用与第二和第三源代码的描述所使用的相同编程语言描述的源代码。因此,存根发生器101产生一种由诸如C++之类的编程语言所描述的而不是由接口定义语言描述的存根方法。更具体地讲,由存根发生器101执行的变换从描述第一源代码的文件f1产生含有对服务器对象的存根方法描述的文件f4,含有对客户对象的存根方法描述的文件f5,和由涉及对象交互的各个对象共同使用的一个包含文件F6。在图4中,含有服务器对象的存根方法描述的f4由“TestStub.cc”和“TestStub.h”代表。“Teststub.h”文件是一个组合在“TestStub.cc”文件中的包含文件。含有客户对象的存根方法描述的f5由“TestProxy.cc”和“TestProxy.h”代表。“TestProxy.h”文件是一个组合在“TestProxy.cc”文件中的包含文件。由涉及对象交互的各个对象所共同使用的包含文件f6由“TestEntry.cc”和“TestMsg.h”代表。然后,对含有第二源代码描述的文件f2,含有第三源代码描述的文件f3,和由存根发生器101产生的文件f4到f6的每一个进行编辑,并且将编辑的结果链接起来,因此形成用于服务器对象的服务器对象可执行文件f7和客户对象的可执行文件f8。因此,在图4所示的处理中,由具有编辑器和链接器的可执行文件产生程序102从包括第二源代码描述的文件f2(Test_svc_proc.cc)、含有用于服务器对象的存根方法描述的文件f4(TestStub.cc,TestStub.h)、和包含文件f6(TestEntry.h,TestMsg.h)的资源中产生服务器对象可执行文件f7。这通常由参与对象交互的对象使用。同时,由具有编辑器和链接器的可执行文件产生程序103从包括第三源代码描述的文件f3(Test.h,Test.cc)、含有对于客户对象的存根方法描述的文件f5(TestProxy.cc,TestProxy.h)、和包含文件F6的资源中产生客户对象可执行文件f8。这通常由参与对象交互的对象使用。一般,在执行程序中,存在着各种环境。因此,必须形成各种应用程序,以便适合于程序的执行环境。这样自然地要求,程序执行环境也要适合于按照应用程序和需求的特性所产生的存根方法。因此,存根发生器必须产生存根方法,使得该存根方法适合于取决于所产生的存根方法的应用程序的执行环境。因此,已经有一种常规的实践,即准备不同的存根发生器,它产生用于不同程序执行环境的存根方法。因此,一个具体的存根方法的产生要求按照将要执行使用存根方法的应用程序的环境,选择使用存根发生器。因此,对于产生存根方法的常规技术利用一种由用于变换按接口定义语言描述的源代码的存根发生器执行的操作。利用这种已知技术会遇到以下问题。首先,研究和学习接口定义语言是重要的,以便编程者形成使用一种存根方法的应用程序,因为按某种接口定义语言描述的源代码的形成是必要的。一般,诸如C++之类的接口定义语言和编程语言具有基本不同的格式。因此,一个普通编程者,即使熟悉各个编程语言,也必须花费大量时间研究和学习接口定义语言,达到能利用接口定义语言形成源代码的这样一种程度。从而,对于形成一个使用存根方法的应用程序,花费大量的时间和劳动是必须的。第二个问题涉及按接口定义语言描述的源代码部分构成的接口和对应于按诸如C++之类的编程语言描述的源代码部分的接口之间的确定匹配的困难。这种困难将要详细地描述。由表示在图4的本文档来自技高网...

【技术保护点】
一种源代码变换方法,包括以下步骤:准备以预定编程语言描述和含有涉及用于对象交互的方法的信息的一次源代码,所述信息是按通用于多种不同程序执行环境的格式描述的;和通过参考对应于执行所述方法的程序执行环境的寄存信息,按对应于执行所述方法的 程序执行环境的预定格式,将所述一次源代码变换为利用与一次源代码相同的编程语言描述的二次源代码。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:李巧云
申请(专利权)人:索尼公司
类型:发明
国别省市:JP[日本]

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

1