一种Dalvik虚拟机兼容不同文件格式java应用的方法及装置制造方法

文档序号:6490975阅读:202来源:国知局
一种Dalvik虚拟机兼容不同文件格式java应用的方法及装置制造方法
【专利摘要】本发明公开了一种Dalvik虚拟机兼容不同文件格式java应用的方法及装置,涉及java应用技术,所述方法包括如下步骤:Dalvik虚拟机对来自外部java程序的文件格式进行判断;若判断该java程序的格式为dex文件格式,则按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载;若判断该java程序的格式为jar文件格式,则按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。本发明能够使Android自带的Dalvik虚拟机兼容jar文件格式的java应用。
【专利说明】—种Dalvik虚拟机兼容不同文件格式java应用的方法及
装置
【技术领域】
[0001]本发明涉及java应用技术,特别涉及一种Dalvik虚拟机兼容不同文件格式java应用的方法及相关装置,用于为Dalvik虚拟机增加功能,使其支持jar文件格式的java应用。
【背景技术】
[0002]Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。Android的应用程序都按dex字节码格式生成,所以Android自带的Dalvik虚拟机,不支持原有的按jar字节码格式生成的java程序。
[0003]为保护原有劳动成果,需要让Dalvik虚拟机支持jar字节码格式的java程序。需要使Dalvik虚拟机增加支持,以兼容原有java程序。

【发明内容】

[0004]本发明的目的在于提供一种Dalvik虚拟机兼容不同文件格式java应用的方法及装置,能更好地解决Dalvik虚拟机兼容不同文件格式java应用的问题。
[0005]根据本发明的一个方面,提供了一种Dalvik虚拟机兼容不同文件格式java应用的方法,包括如下步骤:
[0006]Dalvik虚拟机对来自外部java程序的文件格式进行判断;
[0007]若判断该java程序的格式为dex文件格式,则按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载;
[0008]若判断该java程序的格式为jar文件格式,则按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。
[0009]优选地,Dalvik虚拟机读取java程序的文件头,并根据所读取的文件头,判断所述java程序的格式是dex文件格式还是jar文件格式。
[0010]优选地,所述按jar文件格式对该java程序进行检验的步骤包括:
[0011]Dalvik虚拟机创建jar校验器,并利用所述jar校验器对所述java程序的元数据进行校验。
[0012]优选地,对所述jar文件格式的java程序校验成功后,还包括:
[0013]Dalvik虚拟机对所述jar文件格式的java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。
[0014]优选地,所述加载步骤包括:
[0015]Dalvik虚拟机利用jar文件格式的类加载器加载jar文件格式的java程序,并按照jar文件格式解析并执行所加载的java程序。
[0016]优选地,所述按dex文件格式对该java程序进行校验的步骤包括:
[0017]Dalvik虚拟机利用其dex校验器对所述dex文件格式的java程序的元数据进行校验。
[0018]优选地,对所述dex文件格式的java程序校验成功后,还包括:
[0019]Dalvik虚拟机对所述dex文件格式的java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。
[0020]优选地,所述加载步骤包括:
[0021]Dalvik虚拟机利用dex文件格式的类加载器加载dex文件格式的java程序,并按照dex文件格式解析并执行所加载的java程序。
[0022]根据本发明的另一方面,提供了一种Dalvik虚拟机兼容不同文件格式java应用的装置,包括:
[0023]格式判断模块,用于对来自外部java程序的文件格式进行判断;
[0024]dex文件格式java程序处理模块,用于在判断该java程序的格式为dex文件格式时,按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载;
[0025]jar文件格式java程序处理模块,用于在判断该java程序的格式为jar文件格式时,按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。
[0026]优选地,还包括:
[0027]数字签名处理模块,用于对Dex文件格式或jar文件格式的java程序是否存在数字签名进行判断,并在判断所述j ava程序存在数字签名时,对所述数字签名进行校验。
[0028]与现有技术相比较,本发明的有益效果在于:本发明能够使dalvik虚拟机兼容jar字节码格式的java程序。
【专利附图】

【附图说明】
[0029]图1是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的方法原理框图;
[0030]图2是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的流程图;
[0031]图3是本发明实施例提供的对java程序加载的判断流程;
[0032]图4是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的装置框图。
【具体实施方式】
[0033]以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0034]图1是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的方法原理框图,如图1所示,步骤包括:
[0035]步骤101、Dalvik虚拟机对来自外部java程序的文件格式进行判断。
[0036]在所述步骤101中,Dalvik虚拟机读取java程序的文件头,并根据所读取的文件头,判断所述java程序的格式是dex文件格式还是jar文件格式。
[0037]步骤102、若判断该java程序的格式为dex文件格式,则按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载。[0038]在所述步骤102中,首先,Dalvik虚拟机创建jar校验器,并利用所述jar校验器对所述java程序的元数据进行校验。其次,对所述java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。然后,利用jar文件格式的类加载器加载jar文件格式的java程序,并按照jar文件格式解析并执行所加载的java程序。
[0039]步骤103、若判断该java程序的格式为jar文件格式,则按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。
[0040]在所述步骤103中,首先,Dalvik虚拟机利用其dex校验器对所述dex文件格式的java程序的元数据进行校验。其次,对所述dex格式的java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。然后,利用dex文件格式的类加载器加载dex文件格式的java程序,并按照dex文件格式解析并执行所加载的java程序。
[0041]也就是说,java程序有文件头,对于jar字节码格式的java程序,其文件头以PK为magic number开头,对于Dex字节码格式的java程序,其文件头以dex开头。因此,通过对java程序的文件头进行校验,能够区分java程序的文件格式,从而按照不同的标准进行解释。
[0042]图2是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的流程图,如图2所示,包括:
[0043]步骤200、Dalvik虚拟机判断java程序的文件格式是dex字节码格式还是jar字节码格式,并在判断所述java程序是dex字节码格式时,执行步骤202,在判断所述java程序是jar字节码格式时,执行步骤201。
[0044]步骤201、当所述java程序是jar字节码格式的java程序时,首先创建用于解析所述java程序的jar校验器,并执行步骤203。
[0045]步骤202、当所述java程序是dex字节码格式的java程序时,利用其dex校验器,解析校验dex字节码格式的java程序的元数据,并执行步骤204。
[0046]步骤203、利用所创建的jar校验器,解析校验jar字节码格式的java程序的元数据,并执行步骤205。
[0047]步骤204、校验成功后,Dalvik虚拟机判断所述dex字节码格式的java程序是否具有数字签名,若存在数字签名,则对所述数字签名进行校验,并在校验成功后,执行步骤206,若不存在数字签名,则直接执行步骤206。
[0048]步骤205、校验成功后,Dalvik虚拟机判断所述jar字节码格式的java程序是否具有数字签名,若存在数字签名,则对所述数字签名进行校验,并在校验成功后,执行步骤207,若不存在数字签名,则直接执行步骤207。
[0049]步骤206、利用dex类加载器,加载dex字节码格式的java程序,并执行步骤208。
[0050]步骤207、利用jar类加载器,加载jar字节码格式的java程序,并执行步骤209。
[0051]步骤208、按照dex字节码格式,解析并执行所加载的dex字节码格式的java程序。
[0052]步骤209、按照jar字节码格式,解析并执行所加载的jar字节码格式的java程序。[0053]图3是本发明实施例提供的对java程序加载的判断流程,如图3所示,包括:
[0054]步骤301、判断java程序文件头前四个字节是否与magic number匹配。
[0055]通过读取java程序文件头的前4个字节,判断java程序是否是jar文件格式或dex文件格式,若前4个字节就是magic number,则判断结果为匹配,并执行步骤302,否则执行步骤308。
[0056]步骤302、判断是否需要创建jar校验器。
[0057]如果是dex文件格式的java程序,则按dex文件格式校验java程序,并按原有流程进行,如果是jar文件格式的java程序,则创建jar校验器,并执行步骤303,否则,执行步骤308。
[0058]步骤303、解析校验java程序的元数据。
[0059]利用所创建的jar校验器,对所述jar文件格式的java程序进行校验,若校验成功,则执行步骤304,否则,执行步骤308。
[0060]步骤304、判断所述java程序是否具有数字签名。
[0061]按照规范校验jar文件格式的java程序的元数据后,确定所述java程序是否具有数字签名,若存在数字签名,则对所述数字签名进行校验处理,并在校验成功后依次执行步骤305至步骤307,否则,执行步骤308,若不存在数字签名,则依次执行步骤305至步骤307。
[0062]步骤305、校验通过后,使用jar类加载器加载jar文件格式的java程序。
[0063]步骤306、按照jar文件格式解释执行所述java程序,即根据所述java程序,生成jar字节码格式的目标代码。
[0064]步骤307、运行所述java程序,也就是说,在执行jar字节码时,把jar字节码解释成机器指令执行。
[0065]步骤308、出现错误,退出流程。
[0066]图4是本发明实施例提供的Dalvik虚拟机兼容不同文件格式java应用的装置框图,如图4所示,包括:
[0067]格式判断模块401,用于对来自外部java程序的文件格式进行判断;
[0068]dex文件格式java程序处理模块403,用于在判断该java程序的格式为dex文件格式时,按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载;
[0069]jar文件格式java程序处理模块402,用于在判断该java程序的格式为jar文件格式时,按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载;
[0070]数字签名处理模块404,用于对dex文件格式或jar文件格式的java程序是否存在数字签名进行判断,并在判断所述java程序存在数字签名时,对所述数字签名进行校验。
[0071]所述格式判断模块401判断java程序的文件格式,并根据得到的不同判断结果,由不同的处理模块处理java程序,即判断为jar文件格式时,由jar文件格式java程序处理模块402处理java程序,判断为dex文件格式时,由dex文件格式java程序模块403处理java程序。jar文件格式java程序处理模块402处理jar文件格式的java程序时,首先创建jar校验器,并利用所述jar校验器对java程序的元数据进行校验处理,并在校验成功后,利用jar类加载器,加载所述java程序,并对所加载的java程序进行解释执行。dex文件格式java程序处理模块403处理dex文件格式的java程序时,利用其自身的dex校验器对java程序的元数据进行校验处理,并在校验成功后,利用dex类加载器,加载所述java程序,并对所加载的java程序进行解释执行。
[0072]当所述java程序具有数字签名时,在java程序加载前,可以使用数字签名处理模块404对所述java程序的合法性进行确认,并在确认成功后,再进行java程序的后续处理步骤。
[0073]尽管上文对本发明进行了详细说明,但是本发明不限于此,本【技术领域】技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
【权利要求】
1.一种Dalvik虚拟机兼容不同文件格式java应用的方法,其特征在于,包括如下步骤: Dalvik虚拟机对来自外部java程序的文件格式进行判断; 若判断该java程序的格式为dex文件格式,则按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载; 若判断该java程序的格式为jar文件格式,则按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。
2.根据权利要求1所述的方法,其特征在于,Dalvik虚拟机读取java程序的文件头,并根据所读取的文件头,判断所述java程序的格式是dex文件格式还是jar文件格式。
3.根据权利要求1或2所述的方法,其特征在于,所述按jar文件格式对该java程序进行检验的步骤包括: Dalvik虚拟机创建jar校验器,并利用所述jar校验器对所述java程序的元数据进行校验。
4.根据权利要求3所述的方法,其特征在于,对所述jar文件格式的java程序校验成功后,还包括: Dalvik虚拟机对所述java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。
5.根据权利要求4所述的方法,其特征在于,所述加载步骤包括: Dalvik虚拟机利用jar文件格式的类加载器加载jar文件格式的java程序,并按照jar文件格式解析并执行所加载的java程序。
6.根据权利要求1或2所述的方法,其特征在于,所述按dex文件格式对该java程序进行校验的步骤包括: Dalvik虚拟机利用其dex校验器对所述dex文件格式的java程序的元数据进行校验。
7.根据权利要求6所述的方法,其特征在于,对所述dex文件格式的java程序校验成功后,还包括: Dalvik虚拟机对所述dex文件格式的java程序是否存在数字签名进行判断,并在判断该java程序存在数字签名时,对所述数字签名进行校验。
8.根据权利要求7所述的方法,其特征在于,所述加载步骤包括: Dalvik虚拟机利用dex文件格式的类加载器加载dex文件格式的java程序,并按照dex文件格式解析并执行所加载的java程序。
9.一种Dalvik虚拟机兼容不同文件格式java应用的装置,其特征在于,包括: 格式判断模块,用于对来自外部java程序的文件格式进行判断; dex文件格式java程序处理模块,用于在判断该java程序的格式为dex文件格式时,按dex文件格式对该java程序进行检验,并在校验成功后对其进行加载; jar文件格式java程序处理模块,用于在判断该java程序的格式为jar文件格式时,按jar文件格式对该java程序进行检验,并在校验成功后对其进行加载。
10.根据权利要求9所述的装置,其特征在于,还包括: 数字签名处理模块,用于对dex文件格式或jar文件格式的java程序是否存在数字签名进行判断,并在判断所述java程序存在数字签名时,对所述数字签名进行校验。
【文档编号】G06F9/445GK103809992SQ201210452681
【公开日】2014年5月21日 申请日期:2012年11月13日 优先权日:2012年11月13日
【发明者】黄宇轩, 尹成水, 路芳芳 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1