一种Java卡的Java代码补丁方法

文档序号:8339432阅读:377来源:国知局
一种Java卡的Java代码补丁方法
【技术领域】
[0001] 本发明涉及Java智能卡领域,具体涉及一种Java卡的Java代码补丁方法。
【背景技术】
[0002] 随着金融电子化的全面发展,为解决用户对一卡多用的需要,支持多应用的Java 卡得到了越来越多的普及应用。Java卡作为一种智能卡,其存储体系主要由读写存储器 (RAM)、只读存储器(ROM)和可擦写编程存储器(EEPROM)组成,其中RAM用于存放运算过程 中的中间数据和结果数据,ROM用于存放智能卡的操作系统,EEPROM是智能卡的主要存储 器,用于存放卡人的个人信息及发行单位的信息和应用数据。
[0003] 然而,随着用户需求的变更、业务的多样化变化,Java卡产品在投放使用后,很可 能出现缺陷或者对功能提出升级的要求,若固化到Java卡ROM或者EEPROM中的Java代码 无法升级维护,则需要用户更换Java卡,影响用户的生活,若在进行打补丁升级时,使用的 Java卡的空间较大,在处理一些对时间敏感的应用(如快捷支付)时,不能保证Java卡的运 行效率。
[0004] 现有的Java卡补丁方法中如发现原有程序存在缺陷,一般通过删除原程序,下载 并安装新的应用程序的方法,该方法会造成客户数据的丢失,并且由于应用程序本身的内 存较大,需要进行的修改较少,若整个应用程序重新下载,需要较长的时间。

【发明内容】

[0005] 为解决上述问题,本发明的目的是提供一种Java卡的Java代码补丁方法。
[0006] 本发明为实现上述目的,通过以下技术方案实现: 一种Java卡的Java代码补丁方法,包括如下步骤: (1) 在Java卡芯片中预先在EEPROM中分配一块区域作为Java代码的补丁管理表,在 为不同的包打补丁时,动态从EEPROM中分配一块区域作为Java代码的补丁信息表,若每个 包内补丁数目超过10,则需要多级补丁信息表; Java代码补丁由补丁管理表、补丁信息表和补丁代码组成; 补丁管理表大小为固化到ROM区域的Java包的个数X 3字节,其中3字节的数据分别 为1字节的补丁个数和2字节的补丁信息表的偏移地址; 每级补丁信息表的大小为62字节,每级补丁信息表内包含10个补丁方法,补丁信息表 的数据信息包括本级的10个补丁方法X 6字节和2字节的下一级补丁信息表的偏移地址, 其中6字节的数据分别为2字节方法的绝对地址、2字节修正后方法的异常信息偏移地址和 2字节修正后方法的方法体偏移地址; (2) 产生要修改的Java方法的补丁代码,所述的补丁代码包括异常处理信息和方法 体; (3) 将所有方法的Java补丁代码通过应用协议数据单元命令以数据流的方式从卡外 下载到卡内,并存储至ROM区域或EEPROM区域,在卡内实现补丁代码存储的步骤为: 如待打补丁的包的ID小于固化到ROM中Java包的个数,为ROM区域的包;对于ROM区 域的包采取第一补丁方法;如待打补丁的包的ID不小于固化到ROM中Java包的个数,为 EEPROM区域的包;对于EEPROM区域的包采取第二补丁方法; 所述的第一补丁方法为在Java卡芯片中预先分配一定大小的EEPROM作为Java补丁 代码空间,该空间包含补丁管理表和补丁信息表,所述的补丁管理表用于维护固化在ROM 区域的每个包的补丁数及其对应的补丁信息表的偏移地址;所述的补丁信息表的空间不需 要事先分配,而是在打补丁的时候从EEPROM中分配,所述的补丁信息表存储指定个数的方 法的绝对地址、修正后方法的异常信息偏移地址、修正后方法的方法体偏移地址和下一级 补丁信息表的偏移地址。
[0007] 所述的第二补丁方法不采用额外的空间,在原有方法的入口地址处,使用第一个 字节作为是否打补丁的标志位;如果第一个字节不等于0,表示该方法没有打过补丁;如果 等于0,表示方法该打过补丁,则后面2个字节表示新方法的偏移地址。。
[0008] 为进一步实现本发明的目的,还可以采用以下技术方案: 优选的一种Java卡的Java代码补丁方法,第一补丁方法包括以下步骤: ① 将卡片定位到补丁管理表,访问补丁管理表的静态数组变量,增加补丁方法的个数, 检查是否存在补丁信息表,如不存在则需要额外分配空间来存储补丁信息表; ② 在补丁信息表中增加一条新的补丁方法信息,包括三部分内容:方法的绝对地址、修 正后方法的异常信息偏移地址和修正后方法的方法体偏移地址; ③ 如果补丁信息表中补丁信息已满,需要从EEPROM申请新的空间,建立下一级补丁信 息表,并在现有补丁信息表最后写入新表的偏移地址,然后转到第二步继续执行。
[0009] 优选的一种Java卡的Java代码补丁方法,第二补丁方法包括以下步骤: ① 卡片定位到原方法的方法体,将第一字节更新为〇 ; ② 从EEPROM分配空间来存储补丁代码,并将补丁代码的偏移地址写入到原方法的方 法体的第2和第3字节中。
[0010] 本发明的优点在于: 本发明对Java卡内存储于ROM区域Java代码和EEPROM区域Java代码提供了两种不 同处理方式,对于ROM区域的Java代码,只需事先分配补丁管理表,采用多级补丁信息表的 方法,无需事先分配空间给补丁信息表,补丁信息表在打补丁的时候动态分配,这样可以大 大减少事先分配的空间;对于EEPROM区域Java代码,无需开辟额外空间进行管理,直接在 原方法地址进行修改,减少查表的操作,进一步提高方法执行的速度。
[0011] 本发明的Java卡的Java代码补丁方法,解决了 Java智能卡代码出厂后固化到 Java智能卡芯片的ROM或者EEPROM后维护更新难的问题,用户不用更换Java卡即可对 Java卡中的Java方法打补丁,达到功能升级或者缺陷修复的目的;由于本发明Java卡的 Java代码补丁方法打补丁占用的内存小,所以在打补丁后能确保Java卡的运行效率,满足 客户对时间敏感应用的需要,提高了面向用户的Java智能卡应用程序升级的灵活性。本发 明的Java卡的Java代码补丁方法,能够避免更新应用程序造成的客户数据丢失,并且修复 需要的时间短。
【附图说明】
[0012] 如图1为ROM区域的Java包补丁机制;图2为ROM区域代码补丁的更新示意图; 如图3为EEPROM区域的Java包补丁机制。
【具体实施方式】
[0013] -种Java卡的Java代码补丁方法,包括如下步骤: (1) 在Java卡芯片中预先在EEPROM中分配一块区域作为Java代码的补丁管理表,在 为不同的包打补丁时,动态从EEPROM中分配一块区域作为Java代码的补丁信息表,若每个 包内补丁数目超过10,则需要多级补丁信息表; Java代码补丁由补丁管理表、补丁信息表和补丁代码组成; 补丁管理表大小为固化到ROM区域的Java包的个数X 3字节,其中3字节的数据分别 为1字节的补丁个数和2字节的补丁信息表的偏移地址; 每级补丁信息表的大小为62字节,每级补丁信息表内包含10个补丁方法,补丁信息表 的数据信息包括本级的10个补丁方法X 6字节和2字节的下一级补丁信息表的偏移地址, 其中6字节的数据分别为2字节方法的绝对地址、2字节修正后方法的异常信息偏移地址和 2字节修正后方法的方法体偏移地址; (2) 产生要修改的Java方法的补丁代码,所述的补丁代码包括异常处理信息和方法 体; (3) 将所有方法的Java补丁代码通过
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1