一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

便于应用升级的Java卡和Java卡应用升级方法与流程

2022-05-18 06:27:05 来源:中国专利 TAG:

便于应用升级的java卡和java卡应用升级方法
技术领域
1.本发明涉及java卡技术领域,具体涉及一种便于应用升级的java卡和java卡应用升级方法。


背景技术:

2.java卡应用是使用java语言编写、在java卡上运行的应用,这个应用的编写方式需要符合sun公司的java card api规范,在sun公司的java card api规范中,有一个java卡应用的抽象类,这个抽象类定义了几个抽象方法,应用需要实现其中的抽象方法。
3.当一个java卡应用商业项目发行时,在应用下载及安装之后,需要将一些跟用户有关的初始化数据写入应用中,这个过程叫做应用的个人化,这些数据叫做个人化数据。当应用发行后,这些数据也会根据用户的使用场景而不停地变化。所以,不同的用户,不同的使用场景,其数据都可能是不同的。
4.由于java卡应用程序在编写时,其编码逻辑是根据当时商业化需求来制定的,当需求变化之后,已经安装在java卡中的应用程序就不能满足变化后的需求,就需要进行应用的升级。同时,如果java卡应用程序在编写时,由于疏忽等原因产生了一些错误,在应用已经商业化发行之后,这些错误可能会带来一些问题,造成用户使用上的异常。因此,这种情况也需要应用可以升级更新。
5.但是,由于java card api规范中应用的抽象类没有提供升级的抽象方法,故在解决方案出来之前,只能是先把旧版本应用删除掉,再安装新版本应用,而java卡应用所有的数据都是以应用程序中引用对象的方式存在的,故删除旧版本应用时,所有的数据也就没有了。所以,当旧版本应用删除之后再安装新版本应用的,需要再次做新版本应用的个人化。但是这些新的个人化数据,与旧版本应用的个人化数据可能完全不一样了,这样就会给用户带来困扰。另外,由于很多java卡是带有金融属性的,其发卡是跟用户的金融账户绑定的,所以其使用环境也决定了,很多敏感数据不能被删除或者重新个人化。
6.针对java卡应用的升级需求,java卡的国际组织gp发布了一个api包,这个包定义了一些类和一些方法,通过这些方法先将数据暂存在java卡的nvm中,然后删除旧版本应用,再安装新版本应用,最后将暂存的数据合并恢复到新版本应用中。
7.由于gp发布的升级api包定义了一些命令、类和api方法,实现这些命令、类和方法需要额外占用java卡的空间,在其发布之后,还在不停的升级,升级之后的api和之前的api并不兼容。所以,如果采用gp的解决方式,首先java卡cos(chip operating system,片内操作系统)需要修改,需要额外的空间来实现升级api包规范中定义的命令和api,同时java卡应用也需要额外的空间来调用这些升级api;其次,如果api的版本更新了,使用旧api方法的java卡应用无法升级到使用新api方法的java卡应用,这就引入了升级api如何升级的难题;最后,如果这些用于升级的命令和api的实现本身出现了错误,那么无论怎么升级,都无法消除这些错误。


技术实现要素:

8.针对现有技术中的缺陷,本发明提供一种便于应用升级的java卡和java卡应用升级方法,以解决背景技术中所提出的技术问题。
9.第一方面,本发明实施例提供了一种便于应用升级的java卡,java卡内运行有至少一个负责业务逻辑的业务应用和至少一个负责数据存取的数据应用,所述业务应用的数据实时存储到所述数据应用中;
10.所述业务应用升级后,升级后的业务应用通过调用共享接口从对应的所述数据应用中获取对应的数据。
11.进一步,所述数据应用定义一个扩展的javacard.framework.shareable的类,用于定义可以被其它应用访问的共享接口方法,并在内部实现所述共享接口方法的具体实现过程。
12.进一步,所述业务应用通过getappletshareableinterfaceobject()方法获取共享对象,然后使用所述数据应用中相关共享接口的方法。
13.进一步,所述共享接口的功能包括增加数据、查找数据、更新数据和删除数据。
14.进一步,所述数据应用使用动态数组作为数据存储结构。
15.第二方面,本发明实施例还提供了一种java卡应用升级方法,java卡内运行有至少一个负责业务逻辑的业务应用和至少一个负责数据存取的数据应用,所述业务应用的数据实时存储到所述数据应用中;
16.所述方法包括:
17.对所述业务应用升级后,升级后的业务应用通过调用共享接口从对应的所述数据应用中获取对应的数据。
18.进一步,所述业务应用在使用共享接口前,所述数据应用定义一个扩展的javacard.framework.shareable的类,用于定义可以被其它应用访问的共享接口方法,并在内部实现所述共享接口方法的具体实现过程。
19.进一步,所述业务应用通过getappletshareableinterfaceobject()方法获取共享对象,然后使用所述数据应用中相关共享接口的方法。
20.进一步,所述共享接口的功能包括增加数据、查找数据、更新数据和删除数据。
21.进一步,所述数据应用使用动态数组作为数据存储结构。
22.本发明的有益效果体现在:
23.本技术提供的java卡不需要卡片cos具备gp定义的升级功能,对于现存设备上功能的实现比较友好。通过业务应用与数据应用的设计,达到业务与数据的分离,实现业务应用升级过程中,数据保护的处理方法。采用本方案设计的应用,可以快速检索目标数据,升级时不会影响运行在此平台的其它应用。数据存储独立于业务应用,在一定程序上可以防止业务逻辑及代码异常,影响数据的正确性。
附图说明
24.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
25.图1为本发明实施例提供的一种便于应用升级的java卡的架构示意图;
26.图2为本发明实施例提供的业务应用和数据应用的数据交互架构示意图;
27.图3为本发明实施例提供的升级业务应用的流程图;
28.图4为本发明实施例提供的升级后的业务应用加载数据的流程图。
具体实施方式
29.下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
30.需要注意的是,除非另有说明,本技术使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
31.第一方面,本发明实施例提供了一种便于应用升级的java卡,java卡内运行有至少一个负责业务逻辑的业务应用和至少一个负责数据存取的数据应用,所述业务应用的数据实时存储到所述数据应用中。所述业务应用升级后,升级后的业务应用通过调用共享接口从对应的所述数据应用中获取对应的数据。
32.需要说明的是,java卡内运行的业务应用和数据应用均可以有多个。为了使本发明特征和优点能更明显易懂,如图1所示,假定在java卡片中,存在两个应用,分别为业务应用和数据应用,业务应用中的关键数据,实时存储到数据应用中。
33.业务应用和数据应用的数据交互架构如图2所示。具体的,所述业务应用在使用共享接口前,所述数据应用定义一个扩展的javacard.framework.shareable的类,用于定义可以被其它应用访问的共享接口方法,并在内部实现所述共享接口方法的具体实现过程。所述业务应用通过getappletshareableinterfaceobject()方法获取共享对象,然后使用所述数据应用中相关共享接口的方法。所述共享接口的功能包括增加数据、查找数据、更新数据和删除数据。
34.其中,数据应用共享接口定义如下:
35.public interface sharedinterface extends shareable
36.{
37.public short addnode(byte[]buff,short off,short len);
[0038]
public short searchnode(short id,byte[]outbuff,short offset);
[0039]
public boolean updatenode(short id,byte[]srcbuff,short srcoff,short desoff,short len);
[0040]
public void delnode(short id);
[0041]
};
[0042]
业务应用获取共享对象:
[0043]
void initsio()
[0044]
{
[0045]
if(sio==null)
[0046]
{
[0047]
sio=(sharedinterface)jcsystem.getappletshareableinterfaceobject
(serveraid,(byte)0);
[0048]
if(sio==null)
[0049]
isoexception.throwit(iso7816.sw_command_not_allowed);
[0050]
}
[0051]
}
[0052]
业务应用调用共享方法示例:
[0053]
idx=sio.addnode(buff,offset,len);
[0054]
数据应用主要功能是为存取数据服务,因此其设计应尽可能与业务无关,同时为了提高性能,也要能够满足数据快速存储及读取的要求。因此数据应用使用动态数组作为数据存储结构最为合适,其特点如下:
[0055]
1.快速检索:在申请存储空间时为该空间分配索引,后续使用中只需要使用该索引即可获取相应的数据,无需像链表那样进行耗时的数据检索操作,数据量越大,动态数组的优势越发明显。
[0056]
2.空间灵活:业务应用可以根据实现使用需要,动态地申请大小不同的使用空间,不会浪费宝贵的卡片存储空间。
[0057]
共享接口的功能定义如下:
[0058]
增加数据:
[0059]
short addnode
[0060]
(
[0061]
byte[]buff,//in
[0062]
short off,//in
[0063]
short len//in
[0064]
);
[0065]
输入参数描述:
[0066]
byte[]buff,//数据的存储空间
[0067]
short off,//数据在存储空间的偏移
[0068]
short len//数据的长度
[0069]
输出参数描述:
[0070]

[0071]
返回参数:
[0072]
为空间分配的索引。
[0073]
查找数据:
[0074]
short searchnode
[0075]
(
[0076]
short id,//in
[0077]
byte[]outbuff,//out
[0078]
short offset//out
[0079]
);
[0080]
输入参数描述:
[0081]
short id,//数据索引
[0082]
输出参数描述:
[0083]
byte[]outbuff,//输出数据存储空间
[0084]
short offset//输出数据在存储空间的偏移
[0085]
返回参数:
[0086]
查找到的数据长度。
[0087]
更新数据:
[0088]
boolean updatenode
[0089]
(
[0090]
short id,//in
[0091]
byte[]srcbuff,//in
[0092]
short srcoff,//in
[0093]
short desoff,//in
[0094]
short len//in
[0095]
);
[0096]
输入参数描述:
[0097]
short id,//数据索引
[0098]
byte[]srcbuff,//待更新数据存储空间
[0099]
short srcoff,//待更新数据在存储空间的偏移
[0100]
short desoff,//待更新数据在目标空间中的偏移
[0101]
short len//等更新数据长度
[0102]
输出参数描述:
[0103]

[0104]
返回参数:
[0105]
true:更新成功
[0106]
false:更新失败。
[0107]
删除数据:
[0108]
void delnode
[0109]
(
[0110]
short id,//in
[0111]
);
[0112]
输入参数描述:
[0113]
short id,//数据索引
[0114]
输出参数描述:
[0115]

[0116]
返回参数:
[0117]
无。
[0118]
功能升级时,只用更新业务应用,更新过程中不用考虑数据保存问题。更新完成后,直接通过共享接口自动加载数据applet里的数据,如图3所示。
[0119]
数据加载是在新版本业务应用安装成功后,在第一次选择新版本业务应用时,根据数据应用中记录的状态标志数据,同步业务应用当前的状态。具体的,如果该状态标志为未初始化态,则业务应用等待外部初始化操作;如果该状态标志为用户态,则业务应用从数据应用中加载相应的用户数据,这样就可以保证业务应用在运行中继续使用之前的数据,如图4所示。
[0120]
本技术提供的java卡不需要卡片cos具备gp定义的升级功能,对于现存设备上功能的实现比较友好。通过业务应用与数据应用的设计,达到业务与数据的分离,实现业务应用升级过程中,数据保护的处理方法。采用本方案设计的应用,可以快速检索目标数据,升级时不会影响运行在此平台的其它应用。数据存储独立于业务应用,在一定程序上可以防止业务逻辑及代码异常,影响数据的正确性。
[0121]
第二方面,基于相同的发明构思,本发明实施例还提供了一种java卡应用升级方法。java卡内运行有至少一个负责业务逻辑的业务应用和至少一个负责数据存取的数据应用,所述业务应用的数据实时存储到所述数据应用中,所述方法包括:对所述业务应用升级后,升级后的业务应用通过调用共享接口从对应的所述数据应用中获取对应的数据。
[0122]
本实施例中,所述业务应用在使用共享接口前,所述数据应用定义一个扩展的javacard.framework.shareable的类,用于定义可以被其它应用访问的共享接口方法,并在内部实现所述共享接口方法的具体实现过程。所述业务应用通过getappletshareableinterfaceobject()方法获取共享对象,然后使用数据应用中相关共享接口的方法。所述共享接口的功能包括增加数据、查找数据、更新数据和删除数据。
[0123]
本实施例中,所述数据应用使用动态数组作为数据存储结构。
[0124]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献