什么是javaCard:
JavaCard 是基于Java平台的智能卡技术
java card 的架构
应用层:
所有applet应用,主要是由卡用户实现,通过调用Java相关规范定义的API实现不同的应用
JCRE层:
是智能卡系统的核心(JCRE是用两种语言编写的:JAVA 和C)
系统硬件层:
虚拟机执行的硬件平台
javaCard与普通java开发有什么不同呢?
java card支持的java语言不是标准的java语言,相当于他的子集,主要是考虑Java卡是一个资源极其受限的系统,不支持字符串也不支持多线程。没有像boolean和Integer这样的包装类,也没有Class和System类
javaCard VM生命周期
与卡片生命周期一致,当卡片丢失与毁坏生命周期结束,当卡片掉电,ram中的数据将会丢失,但是rom中的将会保留
javaCard applet生命周期
开始于被下载到javaCard上开始,然后安装于javaCard,结束于applet被删除并注销,当卡片接受到选择这个applet的apdu命令才被激活,激活状态一致保持到掉电,或选择另一个applet时。
事务处理机制
JCRE支持原子事务,原子事务用于安全地更新一个或多个持久对象。如果发生掉电或者程序错误等情况,事务将保护数据的完整性。事务是在系统级支持的。
Java Card事务以对beginTransaction()的调用开始,以对
commitTransaction()或者abortTransaction()的调用结束。在事务过
程中所有的写操作都将被保护。JCRE不支持嵌套事务。
为了方便理解,可以把卡当做一个具有运算功能的主机,读卡器这一端相当于I/O设备,对主机进行操作(通过ADPU通信实现)。
javaCard applet编译下载过程
APDU
定义了主机和JAVA卡之间交互的数据格式,绝大部分卡片遵循此数据格式,当然为了保密或其它原因是可以自定义新的数据格式。APDU分为发送命(C-APDU)和返回命令(R-APDU),是用来向卡发送命令和从卡接收数据的协议。
发送命令(C-APDU)的格式,包含一个必须头部段和一个可选数据段
返回命令(R-APDU)的格式,包含一个可选数据段和一个必须状态值:
具体相关内容可以看我的关于apdu命令的指令
如果你对javaCard技术感兴趣,可以多去看一些资料,以及自己开发一下应用加深对javCard技术的理解。