CN103927193A - Java应用程序函数迁移运行时的加载方法、服务端虚拟机 - Google Patents
Java应用程序函数迁移运行时的加载方法、服务端虚拟机 Download PDFInfo
- Publication number
- CN103927193A CN103927193A CN201310013743.8A CN201310013743A CN103927193A CN 103927193 A CN103927193 A CN 103927193A CN 201310013743 A CN201310013743 A CN 201310013743A CN 103927193 A CN103927193 A CN 103927193A
- Authority
- CN
- China
- Prior art keywords
- function
- instruction
- data
- virtual machine
- parameter
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种Java应用程序函数迁移运行时的加载方法和服务端虚拟机,该方法包括服务端虚拟机存储并解析来自客户端的输入数据,该输入数据是执行客户端上指定函数所需要的函数参数数据;根据该输入数据,服务端虚拟机构造函数调用指令;根据该输入数据,服务端虚拟机获取调用函数和该调用函数对应的类,并加载该类;在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;将解析器指针指向所构造的指令区域,跳转到该函数调用指令处开始解析执行。本发明所述的加载方法使得不用因为计算能力的不足而开发相应服务器程序。另外,通过将Java应用耗时的函数迁移到高性能的服务器上运行,加速程序的执行。
Description
技术领域
本发明涉及在Linux系统下,java虚拟机实时加载来自文件或网络等的运行时(Runtime)数据,更具体地,涉及一种Java应用程序函数迁移运行时的加载方法和服务端虚拟机。
背景技术
由于Java应用程序具有良好的移植性,其不仅在服务器领域上得到广泛应用,而且在移动终端领域上也得到大规模应用,如功能机上的java虚拟机;特别是近年来的智能机操作系统android,其上的应用都是java应用。在一些场景下需要转移java应用的计算,比如服务器领域的负载均衡。又比如手机受制于硬件计算能力很有限,而云计算却拥有超强的按需分配的计算能力,如果将二者结合起来,即将在手机上运行的应用程序中比较耗时的函数放到云端执行,手机将能得到更快的响应速度。如何将正在运行的java应用程序的函数迁移呢?
目前比较通用的做法是利用远程过程调用的方式,首先在服务端实现客户端要请求的函数,java客户端唯一需要完成的操作就是,使用远程过程调用的方式向服务端发送请求即可。这种方法需要开发和部署相应服务器程序,会带来比较大的开发、维护工作量,特别是绝大多数终端的java应用本身就是独立的单机应用。
因此,需要一种不需要应用程序源代码,即能在云端执行来自手机应用程序的任意函数请求的方法。
发明内容
为解决上述所述的技术缺陷,本发明提供一种Java应用程序函数迁移运 行时的加载方法和服务端虚拟机,其目的在于,在高性能的服务器下,重新加载执行来自其他系统的Java可执行程序的指定函数,从而提高该系统的应用程序的运行速度。
为实现上述目的,本发明采取以下技术方案:
一种Java应用程序函数迁移运行时的加载方法,包括:
服务端虚拟机存储并解析来自客户端的输入数据,输入数据是执行客户端上指定函数所需要的函数参数数据;
根据输入数据,服务端虚拟机构造函数调用指令;
根据输入数据,服务端虚拟机获取调用函数和调用函数对应的类,并加载该类;
在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;
将解析器指针指向所构造的指令区域,跳转到函数调用指令处开始解析执行。
优选地,服务端虚拟机存储并解析来自客户端的输入数据,包括:
从输入数据中的数据存储文件中读取数据,数据存储文件包含数据头和数据区,数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
优选地,待执行函数的参数表包括待执行函数对应的类名、待执行函数名、待执行函数对应的签名;静态数据表包括待执行函数所需要构造的静态域的数量、静态域列表。
优选地,根据输入数据,服务端虚拟机构造函数调用指令,包括:
读取输入数据中的函数调用指令;
将读取的函数调用指令存储在新申请的空间内,并对函数调用指令进行修改,用于使指定函数的参数在服务端虚拟机的堆栈上的顺序与在客户端的堆栈上的顺序一致。
优选地,对函数调用指令进行修改,包括:
将第一类指令调整为**4* ****1032,其中*表示保留原始指令中对应的部分;
将第二类指令调整为**** ****0000,其中*表示保留原始指令中对应的部分,0000表示第一个开始的寄存器是0号寄存器。
优选地,本发明的方法还包括:在所构造的函数调用指令后边增加结束处理指令。
优选地,在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域,包括:
将原生类型的传入参数直接拷贝到服务端虚拟机的堆栈上,双精度浮点型(double)的传入参数占用8个字节的堆栈空间,其他类型的传入参数均占用4字节的堆栈空间;
将对象类型的传入参数恢复对象之间的引用关系;
根据指定函数的静态域链表逐个恢复静态域。
优选地,本发明的方法还包括:
在服务端虚拟机执行完指定函数后,将指定函数的执行返回值、所使用的传入参数、静态域返回至客户端。
优选地,本发明的方法还包括:
如果指定函数中调用有非Java语言编写的函数,则将该非Java语言编写的函数的库编译在服务器虚拟机上运行。
一种服务端虚拟机,包括:
存储与解析装置,用于存储并解析来自客户端的输入数据,其中输入数据是执行客户端上指定函数所需要的函数参数数据;
指令构造装置,用于根据输入数据,构造函数调用指令;
获取装置,用于根据输入数据,获取调用函数和所述调用函数对应的类,并加载该类;
加载装置,用于在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;以及
解析执行装置,用于将解析器指针指向所构造的指令区域,跳转到该函数调用指令处开始解析执行。
优选地,存储与解析装置包括:
数据读取模块,用于从输入数据中的数据存储文件中读取数据,其中数据存储文件包含数据头和数据区,所述数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
优选地,指令构造装置包括:
指令读取模块,用于读取输入数据中的函数调用指令;以及
指令修改模块,用于将读取的函数调用指令存储在新申请的空间内,并对该函数调用指令进行修改,用于使指定函数的参数在所述服务端虚拟机的堆栈上的顺序与在所述客户端的堆栈上的顺序一致。
优选地,服务端虚拟机还包括:
发送装置,用于在执行完所述指定函数后,将指定函数的执行返回值、所使用的传入参数、静态域返回至客户端。
本发明由于采取以上所述的技术方案,其包括以下优点:与现有的远程调用方法相比,本发明的方法使得不用因为计算能力的不足而开发相应服务器程序。另外,通过将Java应用耗时的函数迁移到高性能的服务器上运行,加速程序的执行。
附图说明
在此说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示例性的实施例及其说明用于解释本发明,并不构成对本发明的限制;在附图中:
图1是依据本发明的方法的流程图。
具体实施方式
为了使本发明的技术方案更加清楚明白,下面结合附图和具体实施例对本发明做进一步详细阐述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
本发明提供一种Java应用程序函数迁移运行时的加载方法,该方法可以包括:
服务端虚拟机存储并解析来自客户端的输入数据,输入数据是执行客户端上指定函数所需要的函数参数数据;
根据输入数据,服务端虚拟机构造函数调用指令;
根据输入数据,服务端虚拟机获取调用函数和调用函数对应的类,并加载该类;
在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;
将解析器指针指向所构造的指令区域,跳转到函数调用指令处开始解析执行。
可选择地,服务端虚拟机存储并解析来自客户端的输入数据,可以包括:
从输入数据中的数据存储文件中读取数据,数据存储文件包含数据头和数据区,数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
可选择地,待执行函数的参数表可以包括待执行函数对应的类名、待执行函数名、待执行函数对应的签名;静态数据表可以包括待执行函数所需要构造的静态域的数量、静态域列表。
可选择地,根据输入数据,服务端虚拟机构造函数调用指令,可以包括:
读取输入数据中的函数调用指令;
将读取的函数调用指令存储在新申请的空间内,并对函数调用指令进行修改,用于使指定函数的参数在服务端虚拟机的堆栈上的顺序与在客户端的堆栈上的顺序一致。
可选择地,本发明的方法还可以包括:
在服务端虚拟机执行完指定函数后,将指定函数的执行返回值、所使用的传入参数、静态域返回至客户端。
可选择地,本发明的方法还可以包括:
如果指定函数中调用有非Java语言编写的函数,则将该非Java语言编写的函数的库编译在服务器虚拟机上运行。
以Android系统为例,下面描述中将使用服务端来表示x86体系结构、Linux环境的计算机。移动端表示arm体系结构、Android系统的手机。
针对上述过程,具体实现方案如下:
1、按指定的格式存储和解析输入数据
输入数据指的是要实现执行指定函数(或方法)所需要的函数参数数据。
从指定的数据存储文件(或网络中)读取特定存储结构的数据。数据存储文件中主要包含:数据头,待执行方法的参数表,静态数据表,对象索引表及对象对应的数据。数据的存储结构使用下列结构进行表示。
结构体RecoverMethodHeader中,methodInst表示dalvik虚拟机的字节码指令,该指令是调用函数指令。classNameOffset表示要执行方法对应的类名相对于数据空间首地址的偏移,该偏移处存储了方法对应的类名,如方法是egMethod,对应的类名为egMethodClass。methodNameOffset表示要执行方法相对于数据空间首地址的偏移,该偏移处存储了方法名,如egMethod。methodSignatureOffset表示要执行方法对应的签名相对于数据空间首地址的偏移,该偏移处存储了方法对应的签名。
sfieldCount为待执行方法所需要构造静态域的数量。firstSFieldOffset表示静态域列表首指针相对于数据空间的偏移,静态域使用struct SField进行解析。argsCount为待执行方法输入参数的数量。firstArgOffset表示参数列表首指针相对于数据空间的偏移,输入参数使用struct Arg进行解析。ObjectsTableOffSet表示对象区首指针相对于数据空间的偏移。
MobileObject为将接收的数据的描述符恢复成对象的结构体,同时将恢复的对象建立索引表,索引表的结构为链表,表头结构体为ObjectsTable,链表结点结构体为ObjectIndex,其中结构体MobileObject中descriptorOffset表示恢复后ClassObjects的描述符相对于接收数据空间起始位置的偏移,作用是用descriptor来加载其对应的ClassObject对象。
Arg结构体是表示函数参数的结构体,其中type表示:0表示不是对象引用、1表示为对象引用;2表示数组;size表示参数所占字节数;联合体value表示:若是引用,使用offset是ObjectIndex相对于数据空间首地址的偏移。若不是引用则使用data为实际数据;nextArgOffset表示下一个Arg结构体的偏移
SField结构体表示函数的静态域的结构体,其中sFieldRefIdx表示静态域在dex文件中的index;sFieldClassIdx表示静态域在classObject中静态域中的index;value表示静态域的值,如果为void*,把value修改为指向ObjectIndex的offset;classDesOffset表示class Descriptor的偏移;nextSFieldOffset表示下一个SField结构体的偏移。
ReturnType表示函数的返回值,由于在服务端执行后将结果发回客户端,客户端依然要进行恢复,所以服务端必须要保留返回类型,发送回客户端,该结构体主要包括四种返回类型:void、value、wide和object。
2、构造服务端虚拟机执行的指令
服务端虚拟机执行的指令由两个部分组成:函数调用指令和结束处理指令。
由于函数的参数在栈上的顺序将不同于在移动端参数在栈上的顺序,所以需要调整调用函数的指令,使其与各参数在栈上顺序相一致。
调用函数指令占内存空间为6个字节,分三个部分。
调用函数的指令共有14种,按照是否使用连续的寄存器分为两类。一类为不使用连续寄存器并且函数的参数不大于5;另一类为使用连续寄存器并且参数个数不受限。第一类指令包括:6E、6F、70、71、72、F8和FA。第二类指令包括:74、75、76、77、78、F9和FB两类指令使用方式不同。
第一类指令如:6E53 0600 0421,6E指采用何种方式调用函数,0600表示要调用函数的索引,6E53中5表示该函数有5个参数,3表示第五个参数在寄存器v3中,0421表示v4存储第一个参数,v0存储第二个参数,v2存储第四个参数,v1存储第三个参数。
第二类指令如:7403 0600 1300。74表示使用一些连续的寄存器调用虚方法,03表示使用3个寄存器,13表示从寄存器19开始的连续3个,06表示调用函数的索引。
针对上述两类寄存器,调用函数的指令都需做出调整。对于第一类指令调整为:**4* ****1032,其中*表示保留原始指令中对应的部分。如6E53 0600 0421将被调整为6E43 0600 1032。这样调整指令的目的是对应函数参数从右向左的压栈顺序。对于第二类指令调整为:
**** ****0000,其中*表示保留原始指令中对应的部分,0000表示第一个开始的寄存器是0号寄存器。
具体实现如下:
首先将读取出调用函数指令。将读取的指令存储在新申请的空间内,并按照上述代码中的方式对指令进行修改。如源指令是7110 3400 0400被修改后变为7114 3400 3210;指令7403 0600 1300修改为7403 0600 0000.在修改构造的指令后再加上一条标识结束的指令码0x00ff。构造后指令结构由两部分组成:调用函数指令+结束处理指令。其中结束处理指令自定义实现,完成被调用函数的结果保存。
3、获取调用的类和调用函数
在构造完服务端执行的指令之后,继续从数据区中分析出调用函数所对应的类,并加载该类。显示的加载该类是为了用这个ClassObject对象加载服务端待调用函数。加载待执行的方法后,将其关联到hash表中,方便运行时对方法的查找。
具体加载过程如下:
使用dvmFindClass(ClassName,classLoader)来获取要加载函数的类,其中ClassName为要加载的类名,classLoader为类加载器。
根据调用函数的指令加载待调用的方法.如果调用函数的指令码为0x6e、0x6f、0x74、0x75、或在0xf8与0xfb之间则使用下面的函数加载。
dvmFindVirtualMethodByDescriptor(clazz,methodName,descriptor),class是上述dvmFindClass加载的类,methodName是待加载方法的方法名,descriptor方法的描述符。如果调用函数的指令是0x70或0x76则使用
dvmFindDirectMethodByDescriptor(clazz,methodName,descriptor),参数意义同dvmFindVirtualMethodByDescriptor。其它指令码使用dvmFindDirectMethodHierByDescriptor。最后将加载的方法放入全局变量pDvmDex中以便下次直接查找到方法,使用dvmDexSetResolvedMethod函数完成。
4、设置堆栈数据
在服务端开始执行指定的函数前必须设置栈,在栈上需要设置函数执行时的传入参数。为了让函数在服务端执行的结果和在手机端的执行结果保持一致,需要将函数在移动端可能用到的静态域也加载到服务端。因此,在服务端需要重新加载静态域和函数运行时需要的传入参数。
(1)传入参数的加载
传入参数可能是原生类型,对象类型,数组对象。
原生类型数据如int、char、short、float、double等,直接将数据拷贝到栈上,对于double类型占用8个字节的栈空间,其他类型均占用4字节类型空间。
对象类型的传入参数,需要恢复对象之间的引用关系。
数组对象的恢复和普通对象的恢复略有不同。
(2)静态域的加载
根据静态域链表逐个恢复静态域。
5、调整解析器指针使程序开始执行
将2中构造的指令传递给MYFINISH宏,MYFINISH(newPc);MYFINISH 宏的功能如下:将解析器指针指向自己构造的指令区域;跳转到调用函数指令处开始解释执行。
6、结束处理
函数在服务端执行结束后,进行结束处理。结束处理过程主要是将函数的返回值,所使用的传入参数,静态域转移回手机端。
本发明还提供一种服务端虚拟机,其可以包括:
存储与解析装置,用于存储并解析来自客户端的输入数据,其中输入数据是执行客户端上指定函数所需要的函数参数数据;
指令构造装置,用于根据输入数据,构造函数调用指令;
获取装置,用于根据输入数据,获取调用函数和所述调用函数对应的类,并加载该类;
加载装置,用于在服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;以及
解析执行装置,用于将解析器指针指向所构造的指令区域,跳转到该函数调用指令处开始解析执行。
可选地,存储与解析装置可以包括:
数据读取模块,用于从输入数据中的数据存储文件中读取数据,其中数据存储文件包含数据头和数据区,所述数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
可选地,指令构造装置可以包括:
指令读取模块,用于读取输入数据中的函数调用指令;以及
指令修改模块,用于将读取的函数调用指令存储在新申请的空间内,并对该函数调用指令进行修改,用于使指定函数的参数在所述服务端虚拟机的堆栈上的顺序与在所述客户端的堆栈上的顺序一致。
可选地,服务端虚拟机还可以包括:
发送装置,用于在执行完所述指定函数后,将指定函数的执行返回值、所使用的传入参数、静态域返回至客户端。
以上所述实施例仅为本发明的较佳实施例,并非用于限定本发明的保护范围,本领域的技术人员可以刻意对本发明进行各种修改和变型而不偏离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些修改和变型在内。
Claims (13)
1.一种Java应用程序函数迁移运行时的加载方法,包括:
服务端虚拟机存储并解析来自客户端的输入数据,所述输入数据是执行客户端上指定函数所需要的函数参数数据;
根据所述输入数据,所述服务端虚拟机构造函数调用指令;
根据所述输入数据,所述服务端虚拟机获取调用函数和所述调用函数对应的类,并加载该类;
在所述服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;
将解析器指针指向所构造的指令区域,跳转到所述函数调用指令处开始解析执行。
2.根据权利要求1所述的方法,其特征在于,所述服务端虚拟机存储并解析来自客户端的输入数据,包括:
从所述输入数据中的数据存储文件中读取数据,所述数据存储文件包含数据头和数据区,所述数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
3.根据权利要求2所述的方法,其特征在于,
所述待执行函数的参数表,包括待执行函数对应的类名、待执行函数名、待执行函数对应的签名;
所述静态数据表,包括待执行函数所需要构造的静态域的数量、静态域列表。
4.根据权利要求1所述的方法,其特征在于,根据所述输入数据,所述服务端虚拟机构造函数调用指令,包括:
读取所述输入数据中的函数调用指令;
将读取的函数调用指令存储在新申请的空间内,并对所述函数调用指令进行修改,用于使指定函数的参数在所述服务端虚拟机的堆栈上的顺序与在所述客户端的堆栈上的顺序一致。
5.根据权利要求4所述的方法,其特征在于,对所述函数调用指令进行修改,包括:
将第一类指令调整为**4* ****1032,其中*表示保留原始指令中对应的部分;
将第二类指令调整为**** ****0000,其中*表示保留原始指令中对应的部分,0000表示第一个开始的寄存器是0号寄存器。
6.根据权利要求4或5所述的方法,其特征在于,还包括:
在所构造的函数调用指令后边增加结束处理指令。
7.根据权利要求6所述的方法,其特征在于,在所述服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域,包括:
将原生类型的传入参数直接拷贝到所述服务端虚拟机的堆栈上,双精度浮点型(double)的传入参数占用8个字节的堆栈空间,其他类型的传入参数均占用4字节的堆栈空间;
将对象类型的传入参数恢复对象之间的引用关系;
根据指定函数的静态域链表逐个恢复静态域。
8.根据权利要求1所述的方法,其特征在于,还包括:
在所述服务端虚拟机执行完所述指定函数后,将所述指定函数的执行返回值、所使用的传入参数、静态域返回至所述客户端。
9.根据权利要求1所述的方法,其特征在于,还包括:
如果所述指定函数中调用有非Java语言编写的函数,则将该非Java语言编写的函数的库编译在所述服务器虚拟机上运行。
10.一种服务端虚拟机,包括:
存储与解析装置,用于存储并解析来自客户端的输入数据,所述输入数据是执行客户端上指定函数所需要的函数参数数据;
指令构造装置,用于根据所述输入数据,构造函数调用指令;
获取装置,用于根据所述输入数据,获取调用函数和所述调用函数对应的类,并加载该类;
加载装置,用于在所述服务端虚拟机的堆栈上加载指定函数执行时所需要的传入参数和静态域;以及
解析执行装置,用于将解析器指针指向所构造的指令区域,跳转到所述函数调用指令处开始解析执行。
11.根据权利要求10所述的服务端虚拟机,其特征在于,所述存储与解析装置包括:
数据读取模块,用于从所述输入数据中的数据存储文件中读取数据,所述数据存储文件包含数据头和数据区,所述数据区包含待执行函数的参数表、静态数据表、对象索引表以及与对象对应的数据。
12.根据权利要求10所述的服务端虚拟机,其特征在于,所述指令构造装置包括:
指令读取模块,用于读取所述输入数据中的函数调用指令;以及
指令修改模块,用于将读取的函数调用指令存储在新申请的空间内,并对所述函数调用指令进行修改,用于使指定函数的参数在所述服务端虚拟机的堆栈上的顺序与在所述客户端的堆栈上的顺序一致。
13.根据权利要求10至12中任一项所述的服务端虚拟机,其特征在于,还包括:
发送装置,用于在执行完所述指定函数后,将所述指定函数的执行返回值、所使用的传入参数、静态域返回至所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310013743.8A CN103927193B (zh) | 2013-01-15 | 2013-01-15 | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310013743.8A CN103927193B (zh) | 2013-01-15 | 2013-01-15 | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927193A true CN103927193A (zh) | 2014-07-16 |
CN103927193B CN103927193B (zh) | 2017-10-17 |
Family
ID=51145425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310013743.8A Active CN103927193B (zh) | 2013-01-15 | 2013-01-15 | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927193B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786621A (zh) * | 2016-02-29 | 2016-07-20 | 四川理工学院 | 基于云计算的安卓手机应用加速系统及方法 |
CN106325973A (zh) * | 2015-06-29 | 2017-01-11 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
CN107154262A (zh) * | 2017-05-31 | 2017-09-12 | 北京安云世纪科技有限公司 | 一种语音操作方法、装置和移动终端 |
CN107924326A (zh) * | 2016-07-12 | 2018-04-17 | 甲骨文国际公司 | 对经更新的类型的迁移方法进行覆盖 |
CN108229147A (zh) * | 2016-12-21 | 2018-06-29 | 武汉安天信息技术有限责任公司 | 一种基于Android虚拟容器的内存检测装置及方法 |
CN108399084A (zh) * | 2017-02-08 | 2018-08-14 | 中科创达软件股份有限公司 | 一种应用程序的运行方法及系统 |
CN109634822A (zh) * | 2018-11-27 | 2019-04-16 | 平安科技(深圳)有限公司 | 一种函数耗时统计方法、装置、存储介质及终端设备 |
CN112698912A (zh) * | 2020-12-29 | 2021-04-23 | 成都融微软件服务有限公司 | 一种Java Card虚拟机运行环境及内存管理方法 |
CN113392416A (zh) * | 2021-06-28 | 2021-09-14 | 北京恒安嘉新安全技术有限公司 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026474A1 (en) * | 2000-08-28 | 2002-02-28 | Wang Lawrence C. | Thin client for wireless device using java interface |
US20080295110A1 (en) * | 2007-05-23 | 2008-11-27 | Fabrizio Muscarella | Framework for Startup of Local Instance of Remote Application |
CN102255961A (zh) * | 2011-06-30 | 2011-11-23 | 重庆新媒农信科技有限公司 | 基于J2ME调用Web Service接口的方法 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
-
2013
- 2013-01-15 CN CN201310013743.8A patent/CN103927193B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026474A1 (en) * | 2000-08-28 | 2002-02-28 | Wang Lawrence C. | Thin client for wireless device using java interface |
US20080295110A1 (en) * | 2007-05-23 | 2008-11-27 | Fabrizio Muscarella | Framework for Startup of Local Instance of Remote Application |
CN102255961A (zh) * | 2011-06-30 | 2011-11-23 | 重庆新媒农信科技有限公司 | 基于J2ME调用Web Service接口的方法 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325973B (zh) * | 2015-06-29 | 2019-10-25 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
CN106325973A (zh) * | 2015-06-29 | 2017-01-11 | 龙芯中科技术有限公司 | 虚拟机指令的解释执行方法和装置 |
CN105786621A (zh) * | 2016-02-29 | 2016-07-20 | 四川理工学院 | 基于云计算的安卓手机应用加速系统及方法 |
CN107924326B (zh) * | 2016-07-12 | 2024-03-01 | 甲骨文国际公司 | 对经更新的类型的迁移方法进行覆盖 |
CN107924326A (zh) * | 2016-07-12 | 2018-04-17 | 甲骨文国际公司 | 对经更新的类型的迁移方法进行覆盖 |
US11733985B2 (en) | 2016-07-12 | 2023-08-22 | Oracle International Corporation | Accessing a migrated member in an updated type |
US11599346B2 (en) | 2016-07-12 | 2023-03-07 | Oracle International Corporation | Accessing a migrated member in an updated type |
CN108229147A (zh) * | 2016-12-21 | 2018-06-29 | 武汉安天信息技术有限责任公司 | 一种基于Android虚拟容器的内存检测装置及方法 |
CN108229147B (zh) * | 2016-12-21 | 2021-11-12 | 武汉安天信息技术有限责任公司 | 一种基于Android虚拟容器的内存检测装置及方法 |
CN108399084B (zh) * | 2017-02-08 | 2021-02-12 | 中科创达软件股份有限公司 | 一种应用程序的运行方法及系统 |
CN108399084A (zh) * | 2017-02-08 | 2018-08-14 | 中科创达软件股份有限公司 | 一种应用程序的运行方法及系统 |
CN107154262A (zh) * | 2017-05-31 | 2017-09-12 | 北京安云世纪科技有限公司 | 一种语音操作方法、装置和移动终端 |
CN109634822A (zh) * | 2018-11-27 | 2019-04-16 | 平安科技(深圳)有限公司 | 一种函数耗时统计方法、装置、存储介质及终端设备 |
CN109634822B (zh) * | 2018-11-27 | 2023-04-14 | 平安科技(深圳)有限公司 | 一种函数耗时统计方法、装置、存储介质及终端设备 |
CN112698912A (zh) * | 2020-12-29 | 2021-04-23 | 成都融微软件服务有限公司 | 一种Java Card虚拟机运行环境及内存管理方法 |
CN112698912B (zh) * | 2020-12-29 | 2024-04-26 | 成都融微软件服务有限公司 | 一种Java Card虚拟机运行环境及内存管理方法 |
CN113392416A (zh) * | 2021-06-28 | 2021-09-14 | 北京恒安嘉新安全技术有限公司 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
CN113392416B (zh) * | 2021-06-28 | 2024-03-22 | 北京恒安嘉新安全技术有限公司 | 获取应用程序加解密数据的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103927193B (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927193A (zh) | Java应用程序函数迁移运行时的加载方法、服务端虚拟机 | |
JP6192534B2 (ja) | 仮想アプリケーション拡張ポイント | |
CN106933610B (zh) | 一种应用程序安装包生成方法、装置及电子设备 | |
CN111324396B (zh) | 一种区块链智能合约执行方法、装置及设备 | |
CN107885540A (zh) | 一种加载应用程序静态资源的方法、装置及终端 | |
US9164735B2 (en) | Enabling polymorphic objects across devices in a heterogeneous platform | |
CN103678098B (zh) | 一种hadoop程序测试的方法和系统 | |
KR101691063B1 (ko) | 콜백을 이용하는 isa 브리징 | |
CN103443763A (zh) | 包含对重写虚拟函数的调用的支持的isa桥接 | |
US11893367B2 (en) | Source code conversion from application program interface to policy document | |
WO2018140487A1 (en) | System and method for encapsulating computer communications | |
US20230100873A1 (en) | Memory tagging and tracking for offloaded functions and called modules | |
US20150007170A1 (en) | Systems and Methods for Providing Hypercall Interface for Virtual Machines | |
US10579520B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
US8316357B2 (en) | Type descriptor management for frozen objects | |
US20110225213A1 (en) | Loop control flow diversion | |
EP3243132B1 (en) | Apparatus and methods for virtual and interface method calls | |
CN106293967A (zh) | 一种远程注入代码的方法及系统 | |
Lyerly et al. | Operating system process and thread migration in heterogeneous platforms | |
CN111324395A (zh) | 调用方法、装置和计算机可读存储介质 | |
US10146791B2 (en) | Open file rebalance | |
US20240126627A1 (en) | Method and apparatus for obtaining information of stack frame in call stack, device, and medium | |
US11983555B2 (en) | Storage snapshots for nested virtual machines | |
US11748136B2 (en) | Event notification support for nested virtual machines | |
US10423792B2 (en) | Identifying exploitable code sequences |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |