zoukankan      html  css  js  c++  java
  • JAVA card 应用程序开发(七) JAVA 卡数据(永久数据/)时间数据

    JAVA 卡对象


    JAVA CARD 存储器装置:

    a.      ROM: 永久保存程序和数据,虚拟机,API等待;(Applets它也可以在这里放)

    b.      RAM: 栈数据,暂时对象。

    c.      EEPROM: Applet的类。长生命周期的数据。(写操作比RAM慢1000倍)

    因此,ROM是存放JCRE的基本程序和数据。而RAM用于保存当前会话须要的暂时数据。EEPRO就用于保存跨会话的数据。

    以下分别描写叙述:

    1.      ROM:

    掩膜的时候,把这块的数据固定下来,伴随整个卡片的生命周期不改变。除非把Applets保存到这个区域。

    2.      RAM:

    Applet执行过程中保存的暂时数据、数组和对象。暂时数据就是栈数据,程序执行过程中的中间数据。而暂时对象,则没那么简单。

    暂时对象并非对象是暂时的,而是对象的数据是暂时的,一个Applet在生命期对一个暂时对象仅仅建立一次,并且把该对象的引用保存在一个永久域里。仅仅有具有基本类型成分的数组或具有对象引用类型成分的数据。才是暂时的,这里面就包含暂时数组和暂时对象。

    暂时对象是通过API建立的。数据不能跨过两个CAD sessions,对于一个域的改动不是原子型的。

    暂时对象的属性使之对于少量的,要常常改动的,但无需在CAD sessions间保留的暂时applet数据是非常理想的对象。有两种类型的暂时数据对象,即CLEAR_ON_RESET 和CLEAR_ON_DESELECT。注意当定义为CLEAR_ON_DESELECT,卡片复位的时候。该暂时对象的数据也会被清空。

    建立类JCSystem中的暂时数组的方法

    方法                                         方法调用的结果

    Public static boolean[]

    MakeTransientBooleanArray(short length,byte event)   建立一个暂时布尔数组

    Public static byte[]

    MakeTransientByteArray(short length,byte event)       建立一个暂时字节数组

    Public static short[]

    MakeTransientShortArray(short length,byte event)       建立一个暂时short数组

    Public static object[]

    MakeTransientObjectArray(short length,byte event)       建立一个暂时对象数组

    3.      EEPROM:

    使用NEW操作符号建立;能够跨CAD sessions保持不变;对于单一域的改动是原子型的;能够被暂时对象引用,也能够引用暂时对象。

    前面就三种存储器的类型分别讨论怎样使用。实际上对于应用开发,仅仅用到ROM和EEPROM,也就是暂时数据和永久数据的差别,最重要的点就是建立的方法不一样,一个是API建立,一个直接new。所以,我们得到一个对象,有可能是通过API建立的。也可能是NEW的,这个时候,我们能够通过:public static byte isTransient(ObjecttheObject)的返回值推断是:CLEAR_ON_RESET 或CLEAR_ON_DESELECT或JCSystem.NOT_A_TRANSIENT_OBJECT指出该对象的属性。能够知道该对象保存在什么地方。

    关于优化:

    智能卡的资源是非常有限的。不能无限制或者杂乱无章地new或者申请暂时数据。否则非常easy由于不够空间而抛出异常。

    由于数据通过new或者API申请空间后,释放(requestObjectDeletion)速度非常慢,甚至有可能卡片不支持垃圾回收机制。


    參考书籍:《java card for smart card》

    说明:《JAVA card 应用开发》系列博文是我在学习Java卡过程中的记录,有不正确的地方。请注明。


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    c#冒泡排序
    C# 虚方法(virtual)覆盖(override) 隐藏(new) 重载
    Javascript 大括号
    C# const.static.readonly.
    热点链接(img map area)
    WeiBo返回错误码的二种方式
    Cookie跨域操作
    synchronized(this)与synchronized(class)
    线程安全场景备忘
    git新建一个分支setupstream
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4617905.html
Copyright © 2011-2022 走看看