CN113032169B - 跨语言软件系统的资源调用方法、设备及存储介质 - Google Patents

跨语言软件系统的资源调用方法、设备及存储介质 Download PDF

Info

Publication number
CN113032169B
CN113032169B CN202110569685.1A CN202110569685A CN113032169B CN 113032169 B CN113032169 B CN 113032169B CN 202110569685 A CN202110569685 A CN 202110569685A CN 113032169 B CN113032169 B CN 113032169B
Authority
CN
China
Prior art keywords
calling
message
software system
language software
event
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.)
Active
Application number
CN202110569685.1A
Other languages
English (en)
Other versions
CN113032169A (zh
Inventor
崔宝秋
董俊杰
张昭
杨冬东
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co Ltd
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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN202110569685.1A priority Critical patent/CN113032169B/zh
Publication of CN113032169A publication Critical patent/CN113032169A/zh
Application granted granted Critical
Publication of CN113032169B publication Critical patent/CN113032169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开关于一种跨语言软件系统的资源调用方法、设备及存储介质,该方法包括:在接收到第一语言软件系统的调用第一对象的调用指令后,根据第一对象和调用指令生成调用消息,并将调用消息添加至第一消息循环队列,从而第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。由此,实现了第一语言软件系统与第二语言软件系统之间的资源调用,实现了不同语言软件系统之间的相互交互。

Description

跨语言软件系统的资源调用方法、设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种跨语言软件系统的资源调用方法、设备及存储介质。
背景技术
相关技术中,在使用语言软件系统的过程中,两个不同的语言软件系统之间不能进行资源调用,从而影响了不同语言软件系统之间的交互。因此,如何实现跨语言软件系统的资源调用是目前亟需解决的技术问题。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本公开提出了如下技术方案:
本公开第一方面实施例提出了一种跨语言软件系统的资源调用方法,所述方法包括:接收第一语言软件系统的调用第一对象的调用指令;根据所述调用指令和所述第一对象生成调用消息;将所述调用消息添加至第一消息循环队列,以使第二语言软件系统从所述第一消息循环队列之中读取所述调用消息,并根据所述调用消息确定所述第一对象在所述第二语言软件系统中所对应的第二对象,以及执行所述第二对象。
在本公开的一个实施例中,所述第一对象和所述第二对象之间具有引用关系,其中,所述引用关系包括强引用关系和弱引用关系。
在本公开的一个实施例中,所述第一对象相对所述第二对象具有所述强引用关系和所述弱引用关系之中的一种,所述第二对象相对于所述第一对象具有所述强引用关系和所述弱引用关系之中的另一种。
在本公开的一个实施例中,所述调用消息包括调用类型和调用参数,还包括:根据所述调用参数和所述调用类型对所述第二对象的属性进行修改。
在本公开的一个实施例中,所述根据所述调用参数和所述调用类型对所述第二对象的属性进行修改,包括:根据所述调用类型对所述调用参数进行封装以形成所述第二语言软件系统的参数包。
在本公开的一个实施例中,还包括:接收所述第二语言软件系统执行完所述第二对象之后生成的第一响应事件;根据所述第一响应事件生成第一事件消息;将所述第一事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第一事件消息,并从所述第一事件消息之中提取所述第一响应事件。
在本公开的一个实施例中,还包括:接收所述第二语言软件系统反馈的第二响应事件,其中,所述第二响应事件通过对所述第二语言软件系统下所述第二对象的硬件的状态监听生成;根据所述第二响应事件生成第二事件消息;将所述第二事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第二事件消息,并从所述第二事件消息之中获取所述硬件的状态。
在本公开的一个实施例中,所述根据所述调用指令和所述第一对象生成调用消息,包括:获取与所述第一对象和所述调用指令对应的调用接口;根据所述调用接口获取在所述第二语言软件系统中的所述调用消息。
在本公开的一个实施例中,所述根据所述调用指令和所述第一对象生成调用消息,包括:获取所述第一对象在所述第二语言软件系统下的所述第二对象;获取所述第二对象在所述第二语言软件系统下的二进制描述文件;对所述二进制描述文件进行解析,以得到参数表;根据所述调用指令,确定对应的索引号;从所述参数表中获取与所述索引号对应的调用类型以及调用参数信息;根据所述第二对象、所述调用类型以及所述调用参数信息生成所述调用消息。
本公开第二方面实施例提出了一种跨语言软件系统的资源调用装置,所述装置包括:第一接收模块,用于接收第一语言软件系统的调用第一对象的调用指令;第一生成模块,用于根据所述调用指令和所述第一对象生成调用消息;第一添加模块,用于将所述调用消息添加至第一消息循环队列,以使第二语言软件系统从所述第一消息循环队列之中读取所述调用消息,并根据所述调用消息确定所述第一对象在所述第二语言软件系统中所对应的第二对象,以及执行所述第二对象。
在本公开的一个实施例中,所述第一对象和所述第二对象之间具有引用关系,其中,所述引用关系包括强引用关系和弱引用关系。
在本公开的一个实施例中,所述第一对象相对所述第二对象具有所述强引用关系和所述弱引用关系之中的一种,所述第二对象相对于所述第一对象具有所述强引用关系和所述弱引用关系之中的另一种。
在本申请的一个实施例中,所述第一生成模块,包括:确定单元,用于根据所述调用指令,确定对所述第一对象的调用类型;生成单元,用于根据所述调用类型和所述第一对象生成所述调用消息。
在本申请的一个实施例中,所述生成单元,具体用于:对所述调用类型以及所述第一对象进行封装,以形成在第二语言软件系统下的所述调用消息。
在本公开的一个实施例中,还包括:第二接收模块,用于接收所述第二语言软件系统执行完所述第二对象之后生成的第一响应事件;第二生成模块,用于根据所述第一响应事件生成第一事件消息;第二添加模块,用于将所述第一事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第一事件消息,并从所述第一事件消息之中提取所述第一响应事件。
在本公开的一个实施例中,还包括:第三接收模块,用于接收所述第二语言软件系统反馈的第二响应事件,其中,所述第二响应事件通过对所述第二语言软件系统下所述第二对象的硬件的状态监听生成;第三生成模块,用于根据所述第二响应事件生成第二事件消息;第三添加模块,用于将所述第二事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第二事件消息,并从所述第二事件消息之中获取所述硬件的状态。
在本公开的一个实施例中,所述第一生成模块,具体用于:获取与所述第一对象和所述调用指令对应的调用接口;根据所述调用接口获取在所述第二语言软件系统中的所述调用消息。
在本公开的一个实施例中,所述第一生成模块,具体用于:获取所述第一对象在所述第二语言软件系统下的所述第二对象;获取所述第二对象在所述第二语言软件系统下的二进制描述文件;对所述二进制描述文件进行解析,以得到参数表;根据所述调用指令,确定对应的索引号;从所述参数表中获取与所述索引号对应的调用类型以及调用参数信息;根据所述第二对象、所述调用类型以及所述调用参数信息生成所述调用消息。
本公开第三方面实施例提出了一种电子设备,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现本公开第一方面实施例提出的跨语言软件系统的资源调用方法。
本公开第四方面实施例提出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开第一方面实施例提出的跨语言软件系统的资源调用方法。
本公开第五方面实施例提出了一种计算机程序产品,该计算机程序由电子设备的处理器执行时,使得电子设备能够执行本公开第一方面实施例提出的跨语言软件系统的资源调用方法。
本公开的技术方案,在接收到第一语言软件系统的调用第一对象的调用指令后,根据调用指令和第一对象生成调用消息,并将调用消息添加至第一消息循环队列,从而第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。由此,实现了第一语言软件系统与第二语言软件系统之间的资源调用,实现了不同语言软件系统之间的相互交互。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一实施例的跨语言软件系统的资源调用方法的流程图;
图2是根据本公开另一实施例的跨语言软件系统的资源调用方法的流程图;
图3是根据本公开另一实施例的跨语言软件系统的资源调用方法的流程图;
图4是根据本公开另一实施例的跨语言软件系统的资源调用方法的流程图
图5是根据本公开一实施例的跨语言软件系统的资源调用装置的结构框图;
图6是根据本公开另一实施例的跨语言软件系统的资源调用装置的结构框图;
图7是根据本公开一实施例的电子设备的结构示意图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
下面参考附图描述本公开实施例的跨语言软件系统的资源调用方法、设备及存储介质。
图1是根据本公开一实施例的跨语言软件系统的资源调用方法的流程图。其中,需要说明的是,本实施例提供的跨语言软件系统的资源调用方法的执行主体为跨语言软件系统的资源调用装置,该跨语言软件系统的资源调用装置可以由软件和/或硬件的方式实现,该实施例中跨语言软件系统的资源调用装置可以与第一语言软件系统与第二语言软件系统进行通信。
如图1所示,该跨语言软件系统的资源调用方法包括:
步骤101,接收第一语言软件系统的调用第一对象的调用指令。
其中,第一对象可以是第一语言软件系统中的任意一个可以调用的对象,例如,第一对象可以为USB对象、蓝牙对象或者WiFi对象等,该实施例不对第一对象作具体限定。
步骤102,根据调用指令和第一对象生成调用消息。
步骤103,将调用消息添加至第一消息循环队列,以使第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。
在本实施例中,第一语言软件系统是采用第一编程语言编写的软件系统。第二语言软件系统是采用第二编程语言所编写的软件系统。其中,第一编程语言和第二编程语言不同,例如,第一编程语言可以为C++语言,第二编程语言可以为JS(JavaScript)语言。又例如,第一编程语言可以为JavaScript语言,第二编程语言可以为Java语言。
其中,需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中对第一编程语言以及第二编程语言的限定。
在一些实施例中,上述根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象的一种可能实现方式为:可对调用消息进行解包,以得到解包结果,其中,解包结果中包括在第一语言软件系统中所调用的第一对象,可根据第一语言软件系统与第二语言软件系统之间的对象映射关系,确定出第一对象在第二语言软件系统中所对应的对象,并将所确定出的对象作为调用消息所对应的第二对象。
在一些实施例中,为了可以实现对内存进行管理,上述第一对象和第二对象之间具有引用关系,其中,引用关系包括强引用关系和弱引用关系。
在一些实施例中,为了避免两个对象循环引用,及时对对象进行内存回收,在一些实施例中,第一对象相对第二对象具有强引用关系和弱引用关系之中的一种,第二对象相对于第一对象具有强引用关系和弱引用关系之中的另一种。
在本公开的一些实施例中,第一对象相对于第二对象可以具有弱引用关系,第二对象相对于第一对象可以具有强引用关系。在一些实施例中,在检测到第一对象与第一语言软件系统中的其他对象之间均不存在引用关系时,为了及时对内存进行回收,可删除第一对象。其中,需要说明的是,对于第二对象而言,在检测到第二对象与第二语言软件系统中的其他对象之间均不存在引用关系的情况下,由于第二对象与第一对象具有强引用关系,因此,不可以删除第二对象。
在本公开的另一些实施例中,上述第一对象相对于第二对象具有强引用关系,第二对象相对于第一对象具有弱引用关系。在一些实施例中,在检测到第一对象与第一语言软件系统中的其他对象之间均不存在引用关系时,由于第二对象与第一对象具有强引用关系,因此,不可以删除第一对象。其中,需要说明的是,对于第二对象而言,在检测到第二对象与第二语言软件系统中的其他对象之间均不存在引用关系的情况下,由于第二对象与第一对象具有弱引用关系,因此,为了及时对内存进行回收,可删除第二对象。
本公开实施例的跨语言软件系统的资源调用方法,在接收到第一语言软件系统的调用第一对象的调用指令后,基于第一对象和调用指令生成调用消息,并将调用消息添加至第一消息循环队列,从而第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。由此,实现了第一语言软件系统与第二语言软件系统之间的资源调用,实现了不同语言软件系统之间的相互交互。
图2是根据本公开另一实施例的跨语言软件系统的资源调用方法的流程图。其中,需要说明的是,本实施例提供的跨语言软件系统的资源调用方法的执行主体为跨语言软件系统的资源调用装置,该跨语言软件系统的资源调用装置可以由软件和/或硬件的方式实现,该实施例中跨语言软件系统的资源调用装置可以与第一语言软件系统与第二语言软件系统进行通信。
如图2所示,该跨语言软件系统的资源调用方法包括:
步骤201,接收第一语言软件系统的调用第一对象的调用指令。
步骤202,根据调用指令和第一对象生成调用消息。
步骤203,将调用消息添加至第一消息循环队列,以使第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。
其中,需要说明的是,前述对步骤101至步骤103的解释说明也适用于步骤201至步骤203,此处不再赘述。
步骤204,接收第二语言软件系统执行完第二对象之后生成的第一响应事件。
步骤205,根据第一响应事件生成第一事件消息。
步骤206,将第一事件消息添加至第二消息循环队列,以使第一语言软件系统从第二消息循环队列之中读取第一事件消息,并从第一事件消息之中提取第一响应事件。
在本实施例中,通过第二消息循环队列,从而使得第一语言软件系统获知在第二语言软件系统中执行第二对象之后所生成的响应事件。由此,实现了事件的跨语言软件系统的交互。
图3是根据本公开一实施例的跨语言软件系统的资源调用方法的流程图。其中,需要说明的是,本实施例提供的跨语言软件系统的资源调用方法的执行主体为跨语言软件系统的资源调用装置,该跨语言软件系统的资源调用装置可以由软件和/或硬件的方式实现,该实施例中跨语言软件系统的资源调用装置可以与第一语言软件系统与第二语言软件系统进行通信。
如图3所示,该跨语言软件系统的资源调用方法包括:
步骤301,接收第一语言软件系统的调用第一对象的调用指令。
步骤302,根据调用指令和第一对象生成调用消息。
步骤303,将调用消息添加至第一消息循环队列,以使第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。
其中,需要说明的是,前述对步骤101至步骤103的解释说明也适用于步骤301至步骤303,此处不再赘述。
步骤304,接收第二语言软件系统反馈的第二响应事件,其中,第二响应事件通过对第二语言软件系统下第二对象的硬件的状态监听生成。
步骤305,根据第二响应事件生成第二事件消息。
步骤306,将第二事件消息添加至第二消息循环队列,以使第一语言软件系统从第二消息循环队列之中读取第二事件消息,并从第二事件消息之中获取硬件的状态。
例如,第一对象为灯对象,在第一语言软件系统中接收到灯对象的调用指令为打开指令。对应地,在第二语言软件系统获取到对应调用消息的情况下,可确定出第二语言软件系统所对应的第二对象,第二对象也为灯对象。第二语言软件系统可对灯对象的硬件的状态进行监听,在监听到灯对象的硬件的状态变为打开状态的情况下,第二语言软件系统生成第二响应事件,并基于第二响应事件生成第二事件消息,并将第二事件消息添加到第二消息循环队列中,从而使得第一语言软件系统从第二消息循环队列中读取到第二事件消息,并根据第二事件消息得到硬件状态。
又例如,上述第一对象为USB对象,在第二语言软件系统根据调用消息确定出第二对象为USB对象,第二语言软件系统可对USB对象的硬件的状态进行监听,在监听到有U盘插入的情况下,第二语言软件系统可生成插入事件,并基于插入事件生成事件消息,以及将事件消息添加到第二消息循环队列中。对应地,第一语言软件系统可从第二消息循环队列中读取到该事件消息,并根据该事件消息,获知USB对象的硬件的状态为有U盘插入的状态。
在本实施例中,在第二语言软件系统基于第一消息循环队列获取到第二对象后,接收第二语言软件系统基于第二对象的硬件的状态所生成的第二响应事件,并基于第二响应事件生成第二事件消息,并将第二事件消息添加到第二消息循环队列中,从而使得第一语言软件系统基于第二事件消息获取第一对象的硬件的状态。由此,实现了事件的跨语言软件系统的交互。
基于上述任意实施例的基础上,对于上述根据调用指令和第一对象生成调用消息的实现方式,可通过多种方式实现,示例如下:
在本公开的一些实施例中,可获取与第一对象和调用指令对应的调用接口;根据调用接口获取在第二语言软件系统中的调用消息。
其中,上述调用类型可以包括但不限于函数调用类型、事件调用类型以及属性调用类型等,该实施例对调用类型不作具体限定。在一些实施例中,在上述调用类型为函数调用类型的情况下,上述调用参数包括调用第一对象的函数的参数信息。在另一些实施例中,在上述调用类型为事件类型的情况下,上述调用参数包括调用第一对象的事件的各种参数信息。在另一些实施例中,在上述调用类型为属性类型的情况下,上述调用参数可以包括所调用的第一对象的属性信息的参数值。
在本公开的另一些实施例中,根据调用指令和第一对象生成调用消息的可能实现方式为:根据调用指令,确定对第一对象的调用类型;根据调用类型和第一对象生成调用消息。
其中,上述调用类型可以包括但不限于函数调用类型、事件调用类型以及属性调用类型等,该实施例对调用类型不作具体限定。在一些实施例中,在上述调用类型为函数调用类型的情况下,上述调用参数包括调用第一对象的函数的参数信息。在另一些实施例中,在上述调用类型为事件类型的情况下,上述调用参数包括调用第一对象的事件的各种参数信息。在另一些实施例中,在上述调用类型为属性类型的情况下,上述调用参数可以包括所调用的第一对象的属性信息的参数值。
在一些实施例中,上述对于上述根据调用类型和第一对象生成调用消息可通过多种方式实现,示例说明如下:
作为一种示例性的实施方式,可获取第一对象在第二语言软件系统下的第二对象,并根据第一对象以及调用类型,获取在第二语言软件系统下第二对象针对调用类型的调用参数信息,以及根据第二对象、调用类型以及调用参数信息生成调用消息。
对应地,第二语言软件系统在第一消息循环队列中读取到该调用消息后,通过调用消息,即可确定出第二对象,并基于调用消息中的调用类型以及调用参数信息,对第二对象进行调用。
作为另一种示例性的实施方式,根据调用类型和第一对象生成调用消息的一种可能实现方式为:对调用类型以及和第一对象进行封装,以形成在第二语言软件系统下的调用消息。
对应地,在第二语言软件系统获取调用消息后,可对调用消息进行解封装,以得到在第二语言软件系统下所对应的第二对象以及对应的调用类型,并根据第二对象对应的调用类型对第二对象进行调用。
在本公开的另一些实施例中,如图4所示,上述根据调用指令和第一对象生成调用消息的一种可能实现方式,可以包括:
步骤401,获取第一对象在第二语言软件系统下的第二对象。
步骤402,获取第二对象在第二语言软件系统下的二进制描述文件。
步骤403,对二进制描述文件进行解析,以得到参数表。
步骤404,根据调用指令,确定对应的索引号。
步骤405,从参数表中获取与索引号对应的调用类型以及调用参数信息。
步骤406,根据第二对象、调用类型以及调用参数信息生成调用消息。
在一些实施例中,可对第二对象、调用类型以及调用参数信息进行封装,以得到第二语言软件系统下的调用消息。对应地,在第二语言软件系统在从第一消息循环队列中读取到该调用消息时,可对该调用消息进行解包处理,以得到解包结果,其中,解包结果包括第二对象、调用类型以及调用参数信息等信息。
例如,第二语言软件系统为Java语言软件系统,第一语言软件系统为JS语言软件系统。对应地,接收第一语言软件系统发送的第二对象在第二语言软件系统下的二进制描述文件后,可对二进制描述文件进行解析,以得到参数表,其中,该参数表中包括调用名称、调用类型以及对应的调用参数。在根据调用指令,确定出对应的索引号,并基于索引号,从参数表中获取与该索引号对应的一条信息,此时,可根据该条信息,确定出调用类型以及对应的调用参数,然后,对第二对象、及调用类型以及调用参数进行封装,以得到一个Java调用消息。对应地,在Java语言软件系统在第一消息循环队列中得到该Java调用消息,Java语言软件系统对该Java调用消息进行解包处理,以得到解包结果,其中,解包结果可以包括第二对象、及调用类型以及调用参数。
本公开实施例还提出了一种跨语言软件系统的资源调用装置。
图5是根据本公开一实施例的跨语言软件系统的资源调用装置的结构框图。
如图5所示,该跨语言软件系统的资源调用装置500包括:第一接收模块501/第一生成模块502和第一添加模块503,其中:
第一接收模块501,用于接收第一语言软件系统的调用第一对象的调用指令;
第一生成模块502,用于根据调用指令和第一对象生成调用消息;
第一添加模块503,用于将调用消息添加至第一消息循环队列,以使第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。
在本公开的一个实施例中,第一对象和第二对象之间具有引用关系,其中,引用关系包括强引用关系和弱引用关系。
在本公开的一个实施例中,第一对象相对第二对象具有强引用关系和弱引用关系之中的一种,第二对象相对于第一对象具有强引用关系和弱引用关系之中的另一种。
在本公开的一个实施例中,调用消息包括调用类型和调用参数,在图5所示的基础上,如图6所示,第一生成模块502,可以包括:
确定单元5021,用于根据调用指令,确定对第一对象的调用类型;
生成单元5022,用于根据调用类型和第一对象生成调用消息。
在本申请的一个实施例中,生成单元5022,具体用于:
对调用类型以及第一对象进行封装,以形成在第二语言软件系统下的调用消息。
在本公开的一个实施例中,如图6所示,该装置还可以包括:
第二接收模块504,用于接收第二语言软件系统执行完第二对象之后生成的第一响应事件;
第二生成模块505,用于根据第一响应事件生成第一事件消息;
第二添加模块506,用于将第一事件消息添加至第二消息循环队列,以使第一语言软件系统从第二消息循环队列之中读取第一事件消息,并从第一事件消息之中提取第一响应事件。
在本公开的一个实施例中,如图6所示,该装置还可以包括:
第三接收模块507,用于接收第二语言软件系统反馈的第二响应事件,其中,第二响应事件通过对第二语言软件系统下第二对象的硬件的状态监听生成;
第三生成模块508,用于根据第二响应事件生成第二事件消息;
第三添加模块509,用于将第二事件消息添加至第二消息循环队列,以使第一语言软件系统从第二消息循环队列之中读取第二事件消息,并从第二事件消息之中获取硬件的状态。
在本公开的一个实施例中,上述第一生成模块502,具体用于:获取与第一对象和调用指令对应的调用接口;根据调用接口获取在第二语言软件系统中的调用消息。
在本公开的另一个实施例中,第一生成模块502,具体用于:获取第一对象在第二语言软件系统下的第二对象;获取第二对象在第二语言软件系统下的二进制描述文件;对二进制描述文件进行解析,以得到参数表;根据调用指令,确定对应的索引号;从参数表中获取与索引号对应的调用类型以及调用参数信息;根据第二对象、调用类型以及调用参数信息生成调用消息。
其中,需要说明的是,前述对跨语言软件系统的资源调用方法实施例的解释说明也适用于本实施例的跨语言软件系统的资源调用装置,此处不再赘述。
本公开实施例的跨语言软件系统的资源调用装置,在接收到第一语言软件系统的调用第一对象的调用指令后,根据调用指令和第一对象生成调用消息,并将调用消息添加至第一消息循环队列,从而第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。由此,实现了第一语言软件系统与第二语言软件系统之间的资源调用,实现了不同语言软件系统之间的相互交互。
图7是根据本公开一实施例的电子设备的结构框图。
如图7所示,该电子设备200包括:存储器210和处理器220,连接不同组件(包括存储器210和处理器220)的总线230。
其中,存储器210用于存储处理器220的可执行指令;处理器220被配置为调用并执行存储器210存储的可执行指令,以实现本公开上述实施例提出的跨语言软件系统的资源调用方法。
总线230表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备200典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备200访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器210还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)240和/或高速缓存存储器250。电子设备200可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统260可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM, DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线230相连。存储器210可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块270的程序/实用工具280,可以存储在例如存储器210中,这样的程序模块270包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块270通常执行本公开所描述的实施例中的功能和/或方法。
电子设备200也可以与一个或多个外部设备290(例如键盘、指向设备、显示器291等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口292进行。并且,电子设备200还可以通过网络适配器293与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器293通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器220通过运行存储在存储器210中的程序,从而执行各种功能应用以及数据处理。
需要说明的是,本公开实施例的电子设备的实施过程参见前述对本公开实施例的跨语言软件系统的资源调用方法的解释说明,此处不再赘述。
为了实现上述实施例,本公开实施例还提出了一种非临时性计算机可读存储介质,该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如前的跨语言软件系统的资源调用方法。
为了实现上述实施例,本公开实施例还提供一种计算机程序产品,该计算机程序由电子设备的处理器执行时,使得电子设备能够执行如前的跨语言软件系统的资源调用方法。
本公开的技术方案,在接收到第一语言软件系统的调用第一对象的调用指令后,根据调用指令和第一对象生成调用消息,并将调用消息添加至第一消息循环队列,从而第二语言软件系统从第一消息循环队列之中读取调用消息,并根据调用消息确定第一对象在第二语言软件系统中所对应的第二对象,以及执行第二对象。由此,实现了第一语言软件系统与第二语言软件系统之间的资源调用,实现了不同语言软件系统之间的相互交互。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (16)

1.一种跨语言软件系统的资源调用方法,其特征在于,包括:
接收第一语言软件系统的调用第一对象的调用指令;
根据所述调用指令和所述第一对象生成调用消息;
将所述调用消息添加至第一消息循环队列,以使第二语言软件系统从所述第一消息循环队列之中读取所述调用消息,并根据所述调用消息确定所述第一对象在所述第二语言软件系统中所对应的第二对象,以及执行所述第二对象;
接收所述第二语言软件系统反馈的第二响应事件,其中,所述第二响应事件通过对所述第二语言软件系统下所述第二对象的硬件的状态监听生成;
根据所述第二响应事件生成第二事件消息;
将所述第二事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第二事件消息,并从所述第二事件消息之中获取所述硬件的状态;
所述根据所述调用指令和所述第一对象生成调用消息,包括:
获取所述第一对象在所述第二语言软件系统下的所述第二对象;
获取所述第二对象在所述第二语言软件系统下的二进制描述文件;
对所述二进制描述文件进行解析,以得到参数表;
根据所述调用指令,确定对应的索引号;
从所述参数表中获取与所述索引号对应的调用类型以及调用参数信息;
根据所述第二对象、所述调用类型以及所述调用参数信息生成所述调用消息。
2.如权利要求1所述的方法,其特征在于,所述第一对象和所述第二对象之间具有引用关系,其中,所述引用关系包括强引用关系和弱引用关系。
3.如权利要求2所述的方法,其特征在于,所述第一对象相对所述第二对象具有所述强引用关系和所述弱引用关系之中的一种,所述第二对象相对于所述第一对象具有所述强引用关系和所述弱引用关系之中的另一种。
4.如权利要求1所述的方法,其特征在于,所述根据所述调用指令和所述第一对象生成调用消息,包括:
根据所述调用指令,确定对所述第一对象的调用类型;
根据所述调用类型和所述第一对象生成所述调用消息。
5.如权利要求4所述的方法,其特征在于,所述根据所述调用类型和所述第一对象生成所述调用消息,包括:
对所述调用类型以及所述第一对象进行封装,以形成在第二语言软件系统下的所述调用消息。
6.如权利要求1所述的方法,其特征在于,还包括:
接收所述第二语言软件系统执行完所述第二对象之后生成的第一响应事件;
根据所述第一响应事件生成第一事件消息;
将所述第一事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第一事件消息,并从所述第一事件消息之中提取所述第一响应事件。
7.如权利要求1-3、6中任一项所述的方法,其特征在于,所述根据所述调用指令和所述第一对象生成调用消息,包括:
获取与所述第一对象和所述调用指令对应的调用接口;
根据所述调用接口获取在所述第二语言软件系统中的所述调用消息。
8.一种跨语言软件系统的资源调用装置,其特征在于,包括:
第一接收模块,用于接收第一语言软件系统的调用第一对象的调用指令;
第一生成模块,用于根据所述调用指令和所述第一对象生成调用消息;
第一添加模块,用于将所述调用消息添加至第一消息循环队列,以使第二语言软件系统从所述第一消息循环队列之中读取所述调用消息,并根据所述调用消息确定所述第一对象在所述第二语言软件系统中所对应的第二对象,以及执行所述第二对象;
第三接收模块,用于接收所述第二语言软件系统反馈的第二响应事件,其中,所述第二响应事件通过对所述第二语言软件系统下所述第二对象的硬件的状态监听生成;
第三生成模块,用于根据所述第二响应事件生成第二事件消息;
第三添加模块,用于将所述第二事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第二事件消息,并从所述第二事件消息之中获取所述硬件的状态;
所述第一生成模块,具体用于:
获取所述第一对象在所述第二语言软件系统下的所述第二对象;
获取所述第二对象在所述第二语言软件系统下的二进制描述文件;
对所述二进制描述文件进行解析,以得到参数表;
根据所述调用指令,确定对应的索引号;
从所述参数表中获取与所述索引号对应的调用类型以及调用参数信息;
根据所述第二对象、所述调用类型以及所述调用参数信息生成所述调用消息。
9.如权利要求8所述的装置,其特征在于,所述第一对象和所述第二对象之间具有引用关系,其中,所述引用关系包括强引用关系和弱引用关系。
10.如权利要求9所述的装置,其特征在于,所述第一对象相对所述第二对象具有所述强引用关系和所述弱引用关系之中的一种,所述第二对象相对于所述第一对象具有所述强引用关系和所述弱引用关系之中的另一种。
11.如权利要求8所述的装置,其特征在于,所述第一生成模块,包括:
确定单元,用于根据所述调用指令,确定对所述第一对象的调用类型;
生成单元,用于根据所述调用类型和所述第一对象生成所述调用消息。
12.如权利要求11所述的装置,其特征在于,所述生成单元,具体用于:
对所述调用类型以及所述第一对象进行封装,以形成在第二语言软件系统下的所述调用消息。
13.如权利要求8所述的装置,其特征在于,还包括:
第二接收模块,用于接收所述第二语言软件系统执行完所述第二对象之后生成的第一响应事件;
第二生成模块,用于根据所述第一响应事件生成第一事件消息;
第二添加模块,用于将所述第一事件消息添加至第二消息循环队列,以使所述第一语言软件系统从所述第二消息循环队列之中读取所述第一事件消息,并从所述第一事件消息之中提取所述第一响应事件。
14.如权利要求8-10、13中任一项所述的装置,其特征在于,所述第一生成模块,具体用于:
获取与所述第一对象和所述调用指令对应的调用接口;
根据所述调用接口获取在所述第二语言软件系统中的所述调用消息。
15.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现如权利要求1-7中任一项所述的方法。
16.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-7中任一项所述的方法。
CN202110569685.1A 2021-05-25 2021-05-25 跨语言软件系统的资源调用方法、设备及存储介质 Active CN113032169B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110569685.1A CN113032169B (zh) 2021-05-25 2021-05-25 跨语言软件系统的资源调用方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110569685.1A CN113032169B (zh) 2021-05-25 2021-05-25 跨语言软件系统的资源调用方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113032169A CN113032169A (zh) 2021-06-25
CN113032169B true CN113032169B (zh) 2021-08-24

Family

ID=76455678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110569685.1A Active CN113032169B (zh) 2021-05-25 2021-05-25 跨语言软件系统的资源调用方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113032169B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662772A (zh) * 2012-03-08 2012-09-12 河海大学 多语言开发系统中实现不同语言间数据通信的方法
CN107066265A (zh) * 2017-03-15 2017-08-18 杭州华澜微电子股份有限公司 不同编程语言的互连方法及系统
CN108920133A (zh) * 2018-06-14 2018-11-30 北京三快在线科技有限公司 跨语言编程方法、装置、电子设备及存储介质
CN112579212A (zh) * 2019-09-29 2021-03-30 北京国双科技有限公司 跨语言调用的方法、调用方装置及被调用方装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225222B1 (en) * 2002-01-18 2007-05-29 Novell, Inc. Methods, data structures, and systems to access data in cross-languages from cross-computing environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662772A (zh) * 2012-03-08 2012-09-12 河海大学 多语言开发系统中实现不同语言间数据通信的方法
CN107066265A (zh) * 2017-03-15 2017-08-18 杭州华澜微电子股份有限公司 不同编程语言的互连方法及系统
CN108920133A (zh) * 2018-06-14 2018-11-30 北京三快在线科技有限公司 跨语言编程方法、装置、电子设备及存储介质
CN112579212A (zh) * 2019-09-29 2021-03-30 北京国双科技有限公司 跨语言调用的方法、调用方装置及被调用方装置

Also Published As

Publication number Publication date
CN113032169A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
CN110096338B (zh) 智能合约执行方法、装置、设备及介质
CN111176626B (zh) 跨编程语言的代码调用方法及装置、介质、设备
CN109558290B (zh) 服务器、接口自动化测试方法及存储介质
CN111597110A (zh) 页面测试方法、装置、电子设备及存储介质
CN111797020A (zh) 基于动态字节码的mock数据方法及装置
CN109522021B (zh) 参数回调处理方法、装置、电子设备及存储介质
CN110941534A (zh) 检测web应用第三方代码调用的方法及系统
CN114528126A (zh) 业务处理方法及装置
CN113032169B (zh) 跨语言软件系统的资源调用方法、设备及存储介质
CN112364109A (zh) 事件的业务关联方法、系统、装置、电子设备及存储介质
CN111240678A (zh) 弹出窗口的设置方法及装置、电子设备、存储介质
US7036045B2 (en) Method and system for isolating exception related errors in Java JVM
CN115934537A (zh) 接口测试工具生成方法、装置、设备、介质及产品
CN114490266A (zh) 一种数据采集方法、装置、设备及存储介质
CN114510334A (zh) 类实例的调用方法、装置、电子设备及自动驾驶车辆
CN109710415B (zh) 调用弹窗控件的处理方法、装置及电子设备
CN111930478A (zh) 基于动态字节码的服务调用方法及装置
CN112860235A (zh) 处理文本的方法、装置、设备和存储介质
CN109308256B (zh) 一种java程序动态分析方法、设备和存储介质
CN112748930A (zh) 编译检测方法、装置、设备及存储介质
CN112130850A (zh) 应用程序中功能的实现方法和装置
CN115469943B (zh) Java虚拟终端命令执行的检测方法及装置
CN113312120B (zh) 在虚拟机中执行c++任务的方法、装置、电子设备及介质
CN111399932A (zh) 调用dll的方法、系统、浏览器的处理方法和浏览器
CN116340102B (zh) 一种内存溢出监测方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant