字节码优化数据库及其建立方法以及字节码优化方法.pdf

上传人:111****112 文档编号:997718 上传时间:2018-03-24 格式:PDF 页数:7 大小:336.31KB
返回 下载 相关 举报
摘要
申请专利号:

CN200810174452.6

申请日:

2008.11.05

公开号:

CN101739404A

公开日:

2010.06.16

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 17/30申请日:20081105授权公告日:20120829终止日期:20121105|||授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20081105|||公开

IPC分类号:

G06F17/30; G06K19/073

主分类号:

G06F17/30

申请人:

爱思开电讯投资(中国)有限公司

发明人:

刘子瑛; 李丞倍; 金亨一; 罗栋元; 李相研

地址:

100084 北京市海淀区中关村东路1号院清华科技园8号楼启迪科技大厦D座9层

优先权:

专利代理机构:

永新专利商标代理有限公司 72002

代理人:

钟胜光

PDF下载: PDF下载
内容摘要

本发明涉及字节码优化数据库及其建立方法以及字节码优化方法。其中,建立JAVA卡字节码优化数据库的方法包括:扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段;构造静态函数来分别对应所获得的特定的字节码段;并且存储特定的字节码段与对应的静态函数的关联关系,以建立JAVA卡字节码优化数据库。利用本发明能显著优化重复的字节码,缩减存储消耗,提高效率并实现兼容。

权利要求书

1: 一种用于建立JAVA卡字节码优化数据库的方法,包括步骤: 扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段; 构造静态函数来分别对应所获得的特定的字节码段;和 存储特定的字节码段与对应的静态函数的关联关系,以建立JAVA卡字节码优化数据库。
2: 如权利要求1所述的用于建立JAVA卡字节码优化数据库的方法,其中,能安装在所述JAVA卡上的应用程序的字节码序列包括: 所述JAVA卡上固有程序库的字节码序列。
3: 如权利要求1所述的用于建立JAVA卡字节码优化数据库的方法,其中,所述特定的字节码段还包括占用资源达到预定水平的字节码段。
4: 如权利要求1-3中任一项所述的用于建立JAVA卡字节码优化数据库的方法,还包括: 将所述静态函数编译成所述JAVA卡的本地代码,并存储所述静态函数与所述本地代码之间的关联关系。
5: 一种JAVA卡字节码优化数据库,包括: 扫描模块,用于扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段; 静态函数构造模块,用于构造与所获得的特定的字节码段相对应的静态函数;和 存储模块,用于存储特定的字节码段与对应的静态函数的关联关系。
6: 如权利要求5所述的JAVA卡字节码优化数据库,其中,所述扫描模块扫描所述JAVA卡上固有程序库的字节码。
7: 如权利要求5或6所述的JAVA卡字节码优化数据库,还包括: 本地代码生成模块,用于将所述静态函数编译成所述JAVA卡的本地代码;并且 所述存储模块还用于存储所述静态函数与所述本地代码之间的关联关系。
8: 一种JAVA卡字节码的优化方法,包括步骤: 将字节码优化数据库设置成应用程序的引用模块,其中,该字节码优化数据库包括特定的字节码段及其对应的静态函数,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段; 将所述字节码优化数据库中所包括的静态函数置于所述应用程序的常量池中; 将所述应用程序所包括的特定的字节码段替换为对应的静态函数;和 更新所述应用程序的字节码序列中的例外处理范围和参考位置。
9: 如权利要求8所述的优化方法,其中,所述字节码优化数据库还包括与所述静态函数相对应的本地代码;并且 当所述应用程序运行时,直接执行所述本地代码。

说明书


字节码优化数据库及其建立方法以及字节码优化方法

    【技术领域】

    本发明涉及智能卡领域,尤其涉及字节码优化数据库及其建立方法以及JAVA卡字节码的优化方法。

    背景技术

    JAVA卡是JAVA虚拟机技术与传统智能卡技术相结合的产物,是一种能运行JAVA程序的智能卡。

    一个能运行在智能卡上的JAVA程序的执行过程如下。首先,由开发人员编写该JAVA程序的JAVA源代码(.java程序文件),源代码经过编译器编译后生成由符合JAVA虚拟机规范的字节码组成的类文件(.class)。当该JAVA程序在智能卡上运行时,类装载器装入来自类文件的字节码,经过检验器安全验证后,由JAVA虚拟机读取字节码,转换为JAVA卡的本地代码,在智能卡的CPU中运行。

    通常,由字节码组成的类文件中存在大量重复的字节码序列,而且不同的安装在JAVA卡上的程序中也存在大量重复的字节码序列,将这无疑会导致存储空间的大量消耗,也势必降低字节码的执行效率。

    为了降低存储空间的消耗并提高字节码执行效率,目前已经提出一种优化技术来优化大量重复的字节码序列。该技术考虑到JAVA虚拟机规范中保留有一些未定义的字节码,于是,利用这些未定义的字节码作为宏定义来代替大量重复的字节码序列。举例而言,JAVA卡上某个应用程序的指令sload 4经常被使用,该指令表示从堆栈中读取第四个参数的值,被编译后的字节码序列为0x16和0x04,将占用两个字节,并在运行时需要扫描两个字节码。按照上述方法,可以用JAVA虚拟机规范中未定义的字节码0xEF作为宏定义来代替0x16和0x04,这样,原来用两个字节码表示的指令现在只需要用一个字节码就可以表示,在执行时也只需要扫描一个字节码,因此可以节省存储空间并提高字节码的执行效率。

    虽然现有的方法可以降低存储消耗并提高效率,但是该方法仍然存在许多问题。首先,由于使用了保留的未定义字节码,因此如果JAVA虚拟机规范升级时使用这些保留的字节码,那么将导致整个JAVA卡系统不兼容。其次,未定义的字节码很有限,这使得现有的方法只能在很有限的程度上降低存储消耗和提高效率。最后,按照上述优化方法优化后的字节码,只能装载到特定的JAVA卡上,由特定的JAVA虚拟机执行,否则将会产生歧义,导致程序无法正常执行。

    【发明内容】

    本发明的目的在于提供字节码优化数据库及其建立方法以及JAVA卡字节码的优化方法,利用本发明能显著优化重复的字节码,缩减存储消耗,提高效率并实现兼容。

    为实现上述发明目的,本发明提出一种用于建立JAVA卡字节码优化数据库的方法,包括步骤:

    扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段;

    构造静态函数来分别对应所获得的特定的字节码段;和

    存储特定的字节码段与对应的静态函数的关联关系,以建立JAVA卡字节码优化数据库。

    本发明还提供一种JAVA卡字节码优化数据库,包括:

    扫描模块,用于扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段;

    静态函数构造模块,用于构造与所获得的特定的字节码段相对应的静态函数;和

    存储模块,用于存储特定地字节码段与对应的静态函数的关联关系。

    本发明也提供一种JAVA卡字节码的优化方法,包括步骤:

    将字节码优化数据库设置成应用程序的引用模块,其中,该字节码优化数据库包括特定的字节码段及其对应的静态函数,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段;

    将所述字节码优化数据库中所包括的静态函数置于所述应用程序的常量池中;

    将所述应用程序所包括的特定的字节码段替换为对应的静态函数;和

    更新所述应用程序的字节码序列中的例外处理范围和参考位置。

    【附图说明】

    本发明的其他特征、目的和益处通过以下结合附图的详细描述将变得更加显而易见。其中:

    图1是用于建立JAVA卡字节码优化数据库的方法流程图;

    图2是用于存储特定的字节码段及其对应的静态函数的示例性关系列表;

    图3是JAVA卡字节码的优化方法的流程图。

    【具体实施方式】

    下面,将结合附图详细描述本发明的各个实施例。

    图1是用于建立JAVA卡字节码优化数据库的方法流程图。该方法在JAVA卡出厂之前执行,并且利用该方法建立的JAVA卡字节码优化数据库置于JAVA卡上。

    在执行该方法之前,首先收集能在JAVA卡上安装的应用程序,包括JAVA卡系统自身所固有的程序库中的应用程序、当前主流应用的JAVA应用程序以及JAVA卡所应用的领域的JAVA应用程序等。这些应用程序的源代码经过编译生成字节码序列。

    如图1所示,对收集到的应用程序经编译所生成的字节码序列进行扫描,以获得这些字节码序列中特定的字节码段,其中,特定的字节码段包括重复使用达到预定次数的字节码段(步骤S100)。

    对每个特定的字节码段都构造一个与之相对应的静态函数(步骤S110)。

    存储每个特定的字节码段与对应的静态函数的关联关系,以建立JAVA卡字节码优化数据库(步骤S120)。

    一个简单的JAVA卡字节码优化数据库如图2所示,其用于存储每个特定的字节码段及其对应的静态函数,以表示二者之间的关联关系,便于在后续使用时,用静态函数代替相应的特定的字节码段。如图2所示,关系列表中存储有两个特定的字节码段及其对应的静态函数,特定的字节码段A对应于静态函数a,特定的字节码段B对应于静态函数b。于是,在安装应用程序时,可以将程序文件中所有的字节码段A都替换成静态函数a,将所有的字节码段B都替换成静态函数b。通常,特定的字节码段所占的存储空间远远大于静态函数所占的存储空间,这样,经过替换,应用程序就不会占用那么大的空间,而且在程序运行时,也仅扫描少得多的代码,于是,可以缩减存储消耗,提高效率。

    下面,参见图3描述具有按照图1所示的方法建立的JAVA卡字节码优化数据库的JAVA卡实现字节码优化的过程。图3示出了JAVA卡字节码的优化方法的流程图。该优化方法在向JAVA卡安装新的应用程序时执行,例如,新的应用程序Y将安装在JAVA卡上,该应用程序的安装文件被编译所生成的字节码序列中存在特定的字节码段,这些特定的字节码段在JAVA卡字节码优化数据库中存在对应的静态函数。

    如图3所示,首先,将置于该JAVA卡上的字节码优化数据库设置成应用程序Y的引用模块,以便在安装应用程序Y的过程中可以使用该字节码优化数据库(步骤S300)。

    然后,将字节码优化数据库中所包括的静态函数置于应用程序Y的常量池中(步骤S310);

    在该应用程序Y安装的过程中,将安装文件中所包括的特定的字节码段都替换为字节码优化数据库中对应的静态函数(步骤S320);

    考虑到JAVA语言程序的例外处理范围和参考位置,由于将特定的字节码段替换成了对应的静态函数,所以安装文件中的例外处理范围和参考位置将有所变化,于是,更新整个字节码序列的例外处理范围和参考位置(步骤S330)。

    进一步地,特定的字节码段也可以包括那些占用存储资源较多的字节码段。这样,凡是包括该字节码段的应用程序都可以在安装时用静态函数代替该特定的字节码段,从而大大缩减存储消耗。

    此外,如果在已知特定的JAVA卡上设置字节码优化数据库,那么还可以预先将静态函数用该特定的JAVA卡的本地代码实现,这样,安装在该JAVA卡上的应用程序在运行时,直接执行本地代码,这将显著提高整个虚拟机和运行环境的效率。

    本领域技术人员应当理解,上面各个实施例公开的方法可以利用软件、硬件或者软硬件结合的方式来实现。

    本领域技术人员应当理解,在本发明上述实施例的启示下,可以得到本发明实施例的各种变形,并且在不偏离本发明的精神或范围的情况下,本文中所定义的一般原理也可以应用到其他实施例中。因此本发明并不局限于本文中所示的实施例,而且要求与本文中所公开的原理和新颖特征相一致的最广的范围。

字节码优化数据库及其建立方法以及字节码优化方法.pdf_第1页
第1页 / 共7页
字节码优化数据库及其建立方法以及字节码优化方法.pdf_第2页
第2页 / 共7页
字节码优化数据库及其建立方法以及字节码优化方法.pdf_第3页
第3页 / 共7页
点击查看更多>>
资源描述

《字节码优化数据库及其建立方法以及字节码优化方法.pdf》由会员分享,可在线阅读,更多相关《字节码优化数据库及其建立方法以及字节码优化方法.pdf(7页珍藏版)》请在专利查询网上搜索。

本发明涉及字节码优化数据库及其建立方法以及字节码优化方法。其中,建立JAVA卡字节码优化数据库的方法包括:扫描能安装在所述JAVA卡上的应用程序的字节码序列,以获得所扫描的字节码序列中特定的字节码段,其中,特定的字节码段包括一个或多个重复使用达到预定次数的字节码段;构造静态函数来分别对应所获得的特定的字节码段;并且存储特定的字节码段与对应的静态函数的关联关系,以建立JAVA卡字节码优化数据库。利用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1