Java Card Applet开发:OO还是C-style?

近日又在重构PBOC 2.0的EDEP,按客户的需求改了几十个细节。

改动过程中对面向对象的理解有点加深。

例如为了避免两个class相互依赖,可以用一个Interface居中作为解耦。

由于卡内空间有限,资源紧缺,在设计时应注意避免继承层次过深。

个人感觉,由于资源有限,不大可能大量应用各种设计模式。

JAVACARD API中比较显眼的设计模式只有两个:单例模式、Builder模式。

这两个模式的应用也是为了节约资源,以及为applet开发者屏蔽底层硬件细节。

上海有一家芯片公司,曾经试图研发100%java的卡芯片,最后因为成本太高而放弃。

有朋友仍然建议用C的风格来开发java card applet,但我觉得至少可以充分利用try catch finally这种C没有的java语法,让代码逻辑可以变得更清晰。

另外也有朋友建议说不要分多个package,否则应用到TSM平台时,会被烦死。

时间: 2024-11-06 20:17:37

Java Card Applet开发:OO还是C-style?的相关文章

JAVA card 应用开发 创建第一个APPLET

本文讲述在Eclipse环境下,如何创建一个Java卡的项目,新建一个APPLET,运行在Java卡片上. 在建立项目前,必须安装好环境:先下载一个Eclipse,然后安装JCOP即可.(JCOP的下载,需要与NXP签订协议才能拿到安装文件,当然网上可能找到别的版本,这里不讨论).安装次序:安装好Eclipse,然后安装JCOP,然后导入JCOP的授权文件.也可以参考下面这篇文章: 环境搭建:http://blog.csdn.net/menghnhhuan/article/details/761

JAVA card 应用开发(二) 在项目添加APPLET

在上篇博文中.<JAVA card 应用开发创建第一个APPLET>.介绍了一个项目从无到有. 那么.我们建立了这个项目后,仅仅有一个应用(一个可选AID),假设我希望这个项目能够有多个应用(有多个AID可选).就类似卡片初始化后.我能够选择PSE.能够选择PPSE,并且有多个AID存在,那么怎么在项目中加入AID呢? 1.      在已有的项目名称,右键.选择"New",再选择"Java card Applet".例如以下图1. watermark/

JAVA card 应用开发 在项目增加APPLET

在上篇博文中,<JAVA card 应用开发创建第一个APPLET>,介绍了一个项目从无到有. 那么,我们建立了这个项目后,只有一个应用(一个可选AID),如果我希望这个项目可以有多个应用(有多个AID可选),就类似卡片初始化后,我可以选择PSE,可以选择PPSE,而且有多个AID存在,那么怎么在项目中添加AID呢? 1.      在已有的项目名称,右键,选择"New",再选择"Java card Applet",如下图1. 图1. 新建Applet

JAVA card 应用开发 把APPLET(CAP文件)装载到卡片

根据前面两篇博文,我们可以在Eclipse上建立好Applet,并且可以有多个AID,可以选择不同的应用. 那么,以上我们都是基于模拟环境的逻辑,实际上有些函数接口是需要实际的环境,就是说我们需要把Applet下载到卡片里面,实际去调试. 下载Applet的工具,我使用JCOP,JCOP提供了很方便的下载工具,如下图1. 图1.JCOP下载Applet的工具栏 第一步:连接读卡器. 点击这个,下拉选择你的读卡器. 第二步:复位,选择,认证. 点击这个,下拉选择"Default".如果是

JAVA card 应用开发 JCOP的调试方法

本文讲述如何在仿真环境下,调试JAVA card 的APPLET. 通过JCOP在Eclipse进行仿真调试,启动JCOP调试器,我们可以看到如下图: 要仿真调试,就是在命令输入框里面输入JCOP相关的指令,通过阅读JCOP的帮助文档,我们看到JCOP提供的命令不算繁多,大约40个. 下面我挑选常用的几个来说明: 1.      复位卡片:"/atr",如果不加任何参数,表示立即复位. 2.      发送指令:"/send",这是最直观的调试指令.可以逐个指令发送

JAVA card 应用开发(六) 个人化数据的线路安全和数据安全

卡片个人化数据的线路安全和数据安全 说明:以下理论,基于GP2.2规范. 一.线路安全 1. 概念:线路安全,就是对于数据不保密,但要保证数据的完整性和防止被篡改. 2. 方法:在原有的数据基础上,加上8个字节的MAC. 3. 过程: a.在外部认证指令中,设定安全级别.如图1. 图1 b.计算8个字节的MAC附加在后面即可.计算MAC需要注意:完成了外部认证后,除了选择应用的指令以外,都需要加入MAC,否则安全条件不满足.计算MAC以8个字节的0X00为计算的初始向量,输入数据为8个历史字节(

JAVA card 应用开发(七) JAVA 卡数据(永久数据/临时数据)

JAVA 卡对象 JAVA CARD 的存储器件: a.      ROM: 永久保存程序和数据,虚拟机,API等:(Applets也可以放这里) b.      RAM: 栈数据,临时对象: c.      EEPROM: Applet的类,长生命周期的数据:(写操作比RAM慢1000倍) 因此,ROM是存放JCRE的基本程序和数据,而RAM用于保存当前会话需要的临时数据,EEPRO就用于保存跨会话的数据. 下面分别描述: 1.      ROM: 掩膜的时候,把这块的数据固定下来,伴随整个卡

JAVA card 应用开发(九)APDU脚本命令中MAC的校验

终端从后台接收到71或72脚本,解析出脚本指令,发给卡片. 卡片执行该脚本指令,首先要验证MAC,MAC验证通过,才真正执行脚本.因为脚本一般都是更新数据,锁定/解锁应用等敏感操作,所以必须有MAC进行保护. MAC数据计算的大致过程为: 发卡行有主密钥.在发卡的时候,发卡行把主密钥根据卡号分散,卡片得到分散密钥.交易过程中,发卡行接收到包含卡号的交易数据,通过主密钥,根据卡号得到分散密钥,根据ATC和分散密钥,得到过程密钥,使用过程密钥加密数据,得到MAC.而卡片本身已经存储有分散密钥,在交易

JAVA card 应用开发(五) JCOP的调试方法

本文讲述怎样在仿真环境下,调试JAVA card 的APPLET. 通过JCOP在Eclipse进行仿真调试,启动JCOP调试器.我们能够看到例如以下图: 要仿真调试,就是在命令输入框里面输入JCOP相关的指令,通过阅读JCOP的帮助文档,我们看到JCOP提供的命令不算繁多,大约40个. 以下我挑选经常使用的几个来说明: 1.      复位卡片:"/atr".假设不加不论什么參数,表示马上复位. 2.      发送指令:"/send",这是最直观的调试指令. 能