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卡过程中的记录,有不正确的地方。请注明。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
JAVA card 应用程序开发(七) JAVA 卡数据(永久数据/)时间数据的更多相关文章
- 1、Java语言概述与开发环境——Java程序运行机制
Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...
- 微信小程序开发——后端Java(一)
一.前言 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的,然后 ...
- Java微信小程序开发_00_资源帖
1.微信小程序开发:http://blog.csdn.net/column/details/13721.html?&page=1 2.微信小程序栏目:http://blog.csdn.net/ ...
- 1、Java语言概述与开发环境——Java特性和技术体系平台
一.Java语言的主要特性 1.Java语言是易学的: Java语言的语法与C语言和C++语言很接近,使得大多数的程序员很容易学习和使用Java. 2.Java语言是强制面向对象的: Java语言提供 ...
- 2021 年 iOS 应用程序开发七种最佳语言
移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...
- JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页
一.直接使用JDBC开发的问题 1.当表中的列很多时,需要写很长的SQL语句 还需要写大量 setXXX() 设置参数语句 读取数据时还需要写大量setXXXX()设置属性语句 2.非常容易出错,而且 ...
- 201871010121-王方-《面向对象程序开发设计java》第十四周实验总结
4 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/ ...
- Java微信公众平台开发(七)--多媒体消息回复之图片回复
之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消息的回复方法,[多媒体消息]包含回复图片消息/回复语音消息/回复视频消息/回复音乐消 ...
- 记账本微信小程序开发七
完成所有后续代码 主页代码 教程做的感觉很好,但是自己做出来感觉就low了很多,还是有很多需要改进的地方,这也是我下一步的改进点.
随机推荐
- 从零开始,使用python快速开发web站点(1)
环境:ubuntu 12.04 python版本: 2.73 ok,首先,既然是从零开始,我们需要的是一台可以运行的python的计算机环境,并且假设你已经安装好了python, (ubuntu 或 ...
- -bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录
昨天在windows下用写字板写了个shell脚本,使用winscp上传到linux上运行的时候发现运行不了,提示-bash: ./job.sh: /bin/sh^M: bad interpreter ...
- Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 ...
- SendMessage发送自定义消息及消息响应
控件向父窗体发送自定义消息,父窗体定义处理此消息的函数 效果描述: 指定哪个类添加自定义消息:(当然这个类必须是CmdTarget的子类,不然不能处理消息) 添加消息 实现消息函数:(wParam ...
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...
- (转)ikvmc的使用
IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序.本文将比较详细的介绍这个工具的原理.使用入门(如何java应用转换为.NET应用.), ...
- thinkphp中field的用法
ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. 1.用于查询 在查询操作中field方法是使用最频繁的. $Model ...
- CentOS 如何使用第三方软件库-EPEL与RPMForge、RPMFusion软件库
在CentOS下运行yum install flash-plugin或yum install mplayer的时候,提示库里没有找到这个软件?为什么会这样?因为CentOS是RHEL编译过来的,去掉了 ...
- win7问题解决,凭据管理器和无法访问,不允许一个用户使用一个以上用户名与服务器或共享资源进行多重连接。
WIN7凭据管理器,如果你用一个帐号远程登录以后在电脑中会记住这个信息,假如你想用另外的帐号,那么就到控制面板-凭据管理器里中进行修改或者删除. 如果你登录以后提示,“无法访问.不允许一个用户使用一个 ...
- angularjs入门学习【指令篇】
一.首先我们来了解下指令API 属性 含义 restrict 申明标识符在模版中作为元素,属性,类,凝视或组合,怎样使用 priority 设置模版中相对于其它标识符的运行顺序 Template 指定 ...