一种存储Java卡运行时环境字节码的方法及系统技术方案

技术编号:5434524 阅读:286 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种存储Java卡运行时环境字节码的方法及系统,包括:将实现Java卡运行时环境的Java代码转换为class文件;将所述class文件转换为cap文件;将所述cap文件转换为字节码并存储到Java卡上,并在包注册表中记录所述字节码的存储位置。本发明专利技术由于将JCRE的Java代码按照应用程序的装载流程进行存储,因此装载过程不需要和COS代码一起编译,修改JCRE的Java代码,不需要修改COS代码,从而达到JCRE的Java代码和底层COS之间的相互独立。

【技术实现步骤摘要】

本专利技术涉及智能卡
,尤其涉及一种存储Java卡运行时环境字节码的方 法及系统。
技术介绍
Java卡是Java技术的一个重要分支,Java卡技术包括Java卡虚拟机(JavaCard Virtual Machine, JCVM)、Java 卡运行时环境(Java Card RuntimeEnvironment, JCRE)禾口 Java 卡应用编程接口(Java Card Application ProgrammingInterface,JCAPI)三部分。JCVM是通过软件模拟实现的虚拟机器,弓丨入JCVM后,Java语言在不同平台上运行时不需要重新编译。Java语言程序只需生成在JCVM上运行的目标代码即字节码, 就可以在多种平台上不加修改地运行。JCVM在执行字节码时,把字节码解释成具体平 台上的机器指令执行。JCRE包括Java卡逻辑通道的处理、应用的选择和命令的分发等功能,采用Java 语言实现。为了使JCRE能够被JCVM解释执行,需要将Java语言形式的JCRE (即JCRE 的Java代码)生成在JCVM上运行的字节码。在Java卡中运行的应用程序叫Applet,Applet被下载到微处理器的内存里,由 JCVM来运行,运行过程中通过JCAPI调用预先定义的相应函数。如前所述,为了使JCRE能够被JCVM解释执行,需要将JCRE的Java代码生成能够在JCVM上运行的字节码,目前对于JCRE的Java代码生成字节码的方式,主要采用 SUN公司提供的解决方法,如图1所示,包括以下步骤1)首先需要将JCRE的Java代码,通过JAVA编译器Javac编译生成二进制代码 文件即class文件;2)然后通过转换器Converter将class文件转换成Java卡的可读汇编文件即JCA文件;被编译后的class不能够被Java卡虚拟机所识别,现有的方法是将上述class文件 转换为JCA文件。3)最后使用SUN公司提供的Maskgen工具将JCA文件转换为字节码,将生成的 字节码存储到Java的存储器中。 JCA文件也不是能够被Java卡虚拟机所识别的文件,Maskgen工具支持JCA文件到字节码的转换,因此,通过上述转换工具可以实现JCA文件到字节码的转换。本地函数Native Method是预先定义的与平台相关的函数,JCRE的Java代码中只给出了哪些位置出现Native函数,但具体配置哪些Native函数,需要在将JCA文件转 换为字节码的过程中进行配置;另外,在将JCA文件转换为字节码的过程中,还需要配 置所生成的字节码在存储器中存储的起始地址ROMBASE。除了完成上述两项参数的配 置外,还需要配置一些其它的参数,这样才能生成最终的字节码。由JCA文件到字节码的转换,需要将JCA文件生成的字节码与实现智能卡操作系统(Card Operating System,COS)的C语言程序一起进行编译,将最终得到的字节码存储到智能卡中。现有将JCRE的Java代码转换成字节码的方法具有如下缺陷如果要对JCRE的 Java代码进行修改,还需要重新按上述方法生成字节码后与COS的C语言一起编译,不 能做到JCRE的字节码的存储与COS之间的分离,因此JCRE字节码的生成与平台关系密 切,不具有通用性;转换成字节码时,配置选项比较多如需要配置R0MBASE及Native 函数名称等参数,使用Maskgen工具配置不方便。
技术实现思路
本专利技术实施例提供一种存储Java卡运行时环境字节码的方法及系统,用以优化 对Java卡运行时环境JCRE字节码的存储,实现JCRE的字节码的存储与COS之间的分1 O本专利技术提供一种存储Java卡运行时环境字节码的方法,包括将实现Java卡运行时环境的Java代码转换为class文件;将所述class文件转换为cap文件;将所述cap文件转换为字节码并存储到Java卡上,并在所述Java卡的包注册表 中记录所述字节码的存储位置。本专利技术还提供一种存储Java卡运行时环境字节码的系统,包括第一转换单元,用于将实现Java卡运行时环境的Java代码转换为class文件;第二转换单元,用于将所述class文件转换为cap文件;第三转换单元,用于将所述cap文件转换为字节码;存储记录单元,用于将所述第三转换单元转换后得到的字节码存储到Java卡 上,并在所述Java卡的包注册表中记录所述字节码的存储位置。利用本专利技术提供的存储Java卡运行时环境字节码的方法及系统,具有以下有 益效果本专利技术由于将JCRE的Java代码按照应用程序的装载流程进行存储Java代 码-class文件-cap文件-字节码,因此装载过程不需要和COS代码一起编译,因此修改 JCRE的Java代码,不需要修改COS代码。从而达到JCRE的Java代码和底层COS之间 的相互独立。附图说明图1为现有存储Java卡运行时环境字节码的方法流程图2为本专利技术提供的存储Java卡运行时环境字节码的方法流程图3为本专利技术提供的存储Java卡运行时环境字节码的系统结构图。具体实施方式下面结合附图和实施例对本专利技术提供的存储Java卡运行时环境字节码的方法及 系统进行更详细地说明。根据前面的描述,Java卡的开发,需要将实现Java卡运行时环境的Java代码生 成能够在Java虚拟机上运行的字节码,并将生成的字节码存储到卡片中,而对于字节码的生成方式及存储形式,一方面,存储结构不统一,另一方面,Java卡运行时环境需要 经常修改,这样就会对存储结构做相应的修改,具有很大的局限性,不利于Java卡系统 的开发。本专利技术提供一种存储Java卡运行时环境字节码的方法,如图2所示,包括步骤S201,将实现Java卡运行时环境JCRE的Java代码转换为class文件;具体地,可以通过现有的JAVA编译器Javac对Java代码编译生成二进制代码形 式的class文件,具体过程这里不再详述。步骤幻02,将所述class文件转换为cap文件;Java卡的虚拟机并不“认识“Java的class文件,为了使开发好的Java代码能在 Java卡中运行,上述对Java代码编译生成的class文件必须被转换成cap文件。cap文件 就是可以被装载到Java卡上的Applet。这一过程需要使用Java卡转换器converter,具体过程这里不再详述。步骤幻03,将所述cap文件转换为字节码并存储到Java卡上,并在所述Java卡的包注册表中记录所述字节码的存储位置。本专利技术步骤幻03之前的步骤均是在Java卡外完成的,当作为Applet的cap文件 生成后,就要进行Applet的安装,通过将cap文件转换为字节码并存储到Java卡的存储 器,因此,Java卡运行时环境能够在Java虚拟机上运行。本专利技术提供的上述存储Java卡 运行时环境字节码的方法,将JCRE的安装按照在Java卡运行的应用程序Applet来对待, 根据Applet的安装过程源代码编辑-源代码编译-cap文件生成-Applet安装,实现了 Java卡运行时环境字节码的存储,可以使JCRE的Java代码与COS代码的存储相互独立。 存储方式具有通用性且方便Java卡运行时环境本文档来自技高网
...

【技术保护点】
一种存储Java卡运行时环境字节码的方法,其特征在于,包括:将实现Java卡运行时环境的Java代码转换为class文件;将所述class文件转换为cap文件;将所述cap文件转换为字节码并存储到Java卡上,并在所述Java卡的包注册表中记录所述字节码的存储位置。

【技术特征摘要】
1.一种存储Java卡运行时环境字节码的方法,其特征在于,包括 将实现Java卡运行时环境的Java代码转换为class文件; 将所述class文件转换为cap文件;将所述cap文件转换为字节码并存储到Java卡上,并在所述Java卡的包注册表中记 录所述字节码的存储位置。2.如权利要求1所述的方法,其特征在于,将所述cap文件转换为字节码并存储到 Java卡上,具体包括将所述cap文件转换为应用程序协议数据单元APDU文件,所述APDU文件由Java 卡与外界进行数据交换的基本命令单位组成;将所述APDU文件转换为字节码并存储到Java卡的存储器中。3.如权利要求1或2所述的方法,其特征在于,所述cap文件包括用于存储不同类型 数据的多个组件,将所述class文件转换为cap文件,具体包括利用转换器将所述class文件转换为cap文件的数据格式后,将转换后的数据分入不 同的组件中得到cap文件,其中确定class文件中包含与平台相关的native函数时,按设定 规则将对native函数转换后的数据分入不同的组件中。4.如权利要求3所述的方法,其特征在于,在所述Java卡的包注册表中记录所述字节 码的存储位置,具体包括在所述包注册表中记录cap文件在Java卡的存储器中起始地址,及所述各个组件相对 起始地址的的偏移量。5.如权利要求3所述的方法,其特征在于,还包括在Java卡运行过程中,确定需要调用所述cap文件中内容时,根据所述包注册表定位 所述cap文件的存储位置;确定所调用cap文件中内容所在的组件,其中,所调用cap文件中内容包含native函 数时,按设定规则对所述cap文件进行解析,确定所调用的内容所在的组件; 根据包注册表定位所述组件的存储位置,并执行所定位的组件。6.—种存储Java...

【专利技术属性】
技术研发人员:唐守勤
申请(专利权)人:北京握奇数据系统有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1