代码处理装置及代码处理方法制造方法及图纸

技术编号:18621199 阅读:23 留言:0更新日期:2018-08-08 00:19
本发明专利技术公开了一种代码处理装置及代码处理方法;装置包括:第一代码层;第二代码层;中间层,与第一代码层以及第二代码层耦合;第一代码层,基于在虚拟机的宿主环境中运行的第一代码实现,包括代码处理装置中安装的应用,用于向中间层调用由第二代码形成的第二代码方法;中间层,基于第二代码实现,用于连接第一代码层和第二代码层,响应针对第二代码方法的调用,向第二代码层调用第二代码方法;第二代码层,基于能够在特定处理器上直接编译运行的第二代码实现,用于向中间层调用由第二代码形成的第二代码方法;响应中间层针对第二代码方法的调用,执行第一代码方法。实施本发明专利技术,能够简化代码的调用所实现方法的调用逻辑,降低代码维护难度。

Code processing device and code processing method

The invention discloses a code processing device and a code processing method, which includes the first code layer, the second code layer, the middle layer, coupled with the first code layer and the second code layer; the first code layer is based on the first code implementation in the host environment of the virtual machine, including the installation of the code processing device. Application, used to invoke the second code method formed by second code to the middle layer; the middle layer, based on the second code implementation, is used to connect the first code layer and the second code layer, and in response to the call to the second code method, the second code method is called to the second code layer; the second code layer is based on the ability to be processed in a specific process. The second code implementation is compiled and run directly on the device to invoke the second code method formed by the second code to the middle layer; the first code method is executed in response to the call of the middle layer against the second code method. By implementing the invention, the calling logic of the method can be simplified and the difficulty of maintaining the code is reduced.

【技术实现步骤摘要】
代码处理装置及代码处理方法
本专利技术涉及计算机技术,尤其涉及一种代码处理装置及代码处理方法。
技术介绍
互联网特别移动互联网快速发展,智能手机、平板电脑等终端作为互联网访问互联网的入口而得到广泛使用,终端提供种类丰富的应用供用户选择、安装使用,而应用的代码使用的计算机语言往往与终端的操作系统代码所使用的用的计算机语言不同。以安卓(Android)系统的终端为例,安卓系统中安装的应用是基于Java代码实现,而安卓系统是基于C/C++代码实现。由于Java代码是基于Java虚拟机的宿主环境中运行,能够轻易地在不同处理器的终端中运行,对于开发者来说,可以忽略终端的处理器平台导致的差异而专注于应用自身功能的开发,提升应用的开发效率。使用Java代码开发应用时并不能满足全部开发需求,为了提高应用的开发效率,或者实现Java代码所不具有的功能,需要在应用的Java代码中调用安卓系统的本地代码(对于安卓系统来说,本地代码为C/C++代码)所实现的方法,也称为调用本地(Native)方法。Java平台提供了Java本地接口(JNI,JavaNativeInterface),用以支持在应用的Java代码中调用Native方法。同时,为了满足在本地代码中实现某些Java方法的功能,在本地代码中也存在调用Java方法的需求,为此,Java本地接口还支持在安卓系统的本地代码中反向调用Java方法,从而,实现Java代码和本地代码的互通。然而,为了实现Java代码和本地代码的互通,对于本地代码来说,不仅要响应来自Java代码的调用,还要响应来自安卓系统本地的调用,导致代码的调用逻辑复杂化,进而导致代码维护困难。综上所述,对于终端中存在两类代码的实现时,如何简化不同代码之间的调用逻辑,降低代码维护难度,相关技术尚无有效解决方案。
技术实现思路
本专利技术实施例提供一种代码处理装置及代码处理方法,能够简化代码的调用所实现方法的调用逻辑,降低代码维护难度。本专利技术实施例的技术方案是这样实现的:第一方面,本专利技术实施例提供一种代码处理装置:第一代码层;第二代码层;中间层,与所述第一代码层耦合,并与所述第二代码层耦合;其中,所述第一代码层,基于在虚拟机的宿主环境中运行的第一代码实现,包括所述代码处理装置中安装的应用,用于向所述中间层调用由第二代码形成的第二代码方法;所述中间层,基于所述第二代码实现,用于连接所述第一代码层和所述第二代码层,响应针对所述第二代码方法的调用,向所述第二代码层调用所述第二代码方法;所述第二代码层,基于能够在特定处理器上直接编译运行的所述第二代码实现,用于向所述中间层调用由所述第二代码形成的所述第二代码方法;以及,响应所述中间层针对所述第二代码方法的调用,执行所述第一代码方法。第二方面,本专利技术实施例提供一种代码处理方法,包括:中间层与第一代码层耦合,并与第二代码层耦合;其中,所述第一代码层基于在虚拟机的宿主环境中运行的第一代码实现,包括安装的应用;所述第二代码层基于能够在特定处理器上直接编译运行的第二代码实现;所述中间层基于所述第二代码实现;所述第一代码层向中间层调用由所述第二代码形成的第二代码方法;所述中间层连接所述第一代码层和所述第二代码层,响应针对所述第二代码方法的调用,向所述第二代码层调用所述第二代码方法;所述第二代码层向所述中间层调用由所述第二代码形成的所述第二代码方法;以及,响应所述中间层针对所述第二代码方法的调用,执行所述第一代码方法。第三方面,本专利技术实施例提供一种代码处理装置,包括存储器和处理器;所述存储器中存储有可执行指令,所述可执行指令用于引起处理器执行以下的操作:中间层与第一代码层耦合,并与第二代码层耦合;其中,所述第一代码层基于在虚拟机的宿主环境中运行的第一代码实现,包括安装的应用;所述第二代码层基于能够在特定处理器上直接编译运行的第二代码实现;所述中间层基于所述第二代码实现;所述第一代码层向中间层调用由所述第二代码形成的第二代码方法;所述中间层连接所述第一代码层和所述第二代码层,响应针对所述第二代码方法的调用,向所述第二代码层调用所述第二代码方法;所述第二代码层向所述中间层调用由所述第二代码形成的所述第二代码方法;以及,响应所述中间层针对所述第二代码方法的调用,执行所述第一代码方法。第四方面,本专利技术实施例提供一种存储介质,存储有可执行指令,用于执行本专利技术实施例提供的代码处理方法。本专利技术实施例具有以下有益效果:通过在第一代码层和第二代码层中设置中间层,利用中间层对第二代码方法的调用进行接管,第二代码层仅是用于响应来自中间层的第二代码方法调用,而不会区分执行用于实现第二代码方法的功能的逻辑是由来自第一代码层的调用导致的,还是由来自第二代码层的内部调用导致的,从而将第二代码方法的调用相关的逻辑与执行用于实现第二代码方法的逻辑进行解耦,使代码的框架结构简明清晰,第二代码方法的代码复用性更高,便于后期的维护管理。附图说明图1是本专利技术实施例提供的运行安卓系统的终端的软硬件架构的一个可选的结构示意图;图2是本专利技术实施例提供的对图1示出的终端软件架构进行抽象表示的示意图;图3是本专利技术实施例提供的基于Java本地接口实现Java代码和Native代码之间互访的一个可选的实现示意图;图4是本专利技术实施例提供的代码处理装置的软件结构的一个可选的结构示意图;图5-1是本专利技术实施例提供的代码处理装置的另一个可选的结构示意图;图5-2是本专利技术实施例提供的第一代码层、中间层和第二代码层之间方法调用的一个可选的示意图;图6是本专利技术实施例提供的代码处理方法的一个可选的流程示意图;图7为本专利技术实施例提供的Java层调用C系实现层的C++方法的一个可选的流程示意图。具体实施方式以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本专利技术,并不用于限定本专利技术。另外,以下所提供的实施例是用于实施本专利技术的部分实施例,而非提供实施本专利技术的全部实施例,在本领域技术人员不付出创造性劳动的前提下,对以下实施例的技术方案进行重组所得的实施例、以及基于对专利技术所实施的其他实施例均属于本专利技术的保护范围。需要说明的是,在本专利技术实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元)。例如,本专利技术实施例提供的代码处理方法包含了一系列的步骤,但是本专利技术实施例提供的代码处理方法不限于所记载的步骤,同样地,本专利技术实施例提供的代码处理装置包括了一系列单元,但是本专利技术实施例提供的代码处理装置不限于包括所明确记载的单元,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。对本专利技术进行进一步详细说明之前,对本专利技术实施例中涉及的名词和术语进行说明,本专利技术实施例中涉及的名词和术语适用于如下的解释。1)本地代码(NativeCode),与设备的操作系统相关,是指用于实现操作系统底层的内核和库的代码。以安卓系统为例,本地代码本文档来自技高网
...

【技术保护点】
1.一种代码处理装置,其特征在于,包括:第一代码层;第二代码层;中间层,与所述第一代码层耦合,并与所述第二代码层耦合;其中,所述第一代码层,基于在虚拟机的宿主环境中运行的第一代码实现,包括安装的应用,用于向所述中间层调用由第二代码形成的第二代码方法;所述中间层,基于所述第二代码实现,用于连接所述第一代码层和所述第二代码层,响应针对所述第二代码方法的调用,向所述第二代码层调用所述第二代码方法;所述第二代码层,基于能够在特定处理器上直接编译运行的所述第二代码实现,用于向所述中间层调用由所述第二代码形成的所述第二代码方法;以及,响应所述中间层针对所述第二代码方法的调用,执行所述第一代码方法。

【技术特征摘要】
1.一种代码处理装置,其特征在于,包括:第一代码层;第二代码层;中间层,与所述第一代码层耦合,并与所述第二代码层耦合;其中,所述第一代码层,基于在虚拟机的宿主环境中运行的第一代码实现,包括安装的应用,用于向所述中间层调用由第二代码形成的第二代码方法;所述中间层,基于所述第二代码实现,用于连接所述第一代码层和所述第二代码层,响应针对所述第二代码方法的调用,向所述第二代码层调用所述第二代码方法;所述第二代码层,基于能够在特定处理器上直接编译运行的所述第二代码实现,用于向所述中间层调用由所述第二代码形成的所述第二代码方法;以及,响应所述中间层针对所述第二代码方法的调用,执行所述第一代码方法。2.如权利要求1所述的装置,其特征在于,所述第二代码层,还用于向所述中间层反向调用由所述第一代码实现的第一代码方法;所述中间层,还用于响应所述第二代码层针对所述第一代码方法的反向调用,向所述第一代码层反向调用所述第一代码方法;所述第一代码层,还用于响应所述中间层针对所述第一代码方法的反向调用,执行所述第一代码方法。3.如权利要求1所述的装置,其特征在于,所述中间层,还用于在所述第一代码方法包括返回操作时,向调用所述第一代码方法的所述第一代码层以及所述第二代码层返回结果。4.如权利要求1所述的装置,其特征在于,所述第一代码层,还用于在向所述中间层调用所述第二代码方法之前,封装本地声明有所述第二代码方法的第一代码类,调用所述第一代码类的初始化方法;所述中间层,还用于响应所述第一代码层针对所述初始化方法的调用,对所述第一代码类在所述中间层对应的全局性数据进行静态初始化形成所述第一代码类的对象,并调用与所述第一代码类对应的第二代码类的静态初始化方法;所述第二代码层,还用于响应所述中间层针对所述静态初始化方法的调用,对所述第二代码层中所述第二代码类进行静态初始化,形成所述第二代码类的对象。5.如权利要求4所述的装置,其特征在于,所述中间层,还用于初始化所述第一代码类的相关联域的标识;初始化所述第一代码类在所述中间层的全局性的数据,初始化所述第一代码类相关方法的标识。6.如权利要求4所述的装置,其特征在于,所述第二代码层,还用于在所述第二代码层初始化所述第二代码类的全局变量、以及初始化所述第二代码类的静态成员变量。7.如权利要求4所述的装置,其特征在于,所述第一代码层,还用于调用所述第一代码类的构造函数中的创建方法;所述中间层,还用于响应针对所述创建方法的调用,创建与所述第一代码类对应的中间对象、以及与所述第一代码类对应的第二代码类,将所述中间对象的地址返回所述第一代码类的对象存储,调用初始化所述第二代码类的初始化方法;所述第二代码层,还用于响应针对所述第二代码类的初始化方法的调用,对所述第二代码类进行初始化。8.如权利要求7所述的装置,其特征在于,所述第二代码层,还用于初始化所述第二代码类的成员变量和分配内存。9.如权利要求7所述的装置,其特征在于,所述中间层,还用于在所述第一代码层调用所述第二代码方法时,通过所述第一代码类的对象存储的所述中间对象的地址,获取到所述地址指向的所述第二代码类的对象的地址,根据获取到的所述第二代码类的对象的地址调用所述第二代码方法。10.如权利要求1所述的装置,其特征在于,所述第一代码为Java代码,所述第二代码为操作系统的本地代码。11.一种代码处理方法,其特征在于,包括:中间层与...

【专利技术属性】
技术研发人员:边肖翔
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1