Java Applet开发指南

前言

本指南主要是基于《Gemalto_JavaCard_DevelGuide.pdf》进行整理

Applet开发指南

本章节主要介绍了在使用卡片内存资源时的一些指导原则。下面的列表并不详尽,为了优化Applet,你可能需要进行不同的测试:

不要使用:

1:Unicode 字符
2:32-bit和64bit的整数
3:Float和double整数
4:线程
5:多维数目

  1. 只创建一个Class’ ???
  2. 在构造器中创建所有对象
  3. 整理代码,删除不必要的方法、变量、和操作
  4. 消除代码中的冗余
  5. 使用基本类型。避免从基本类型创建对象。开发一个类来封装基本类型可以提供比基本类型本身更多的功能,但是它会占用卡片空间??
  6. 使用常量,通过关键字static和final实现,这样效率更高
  7. 避免使用局部对象和数组。创建局部对象和数组会耗用卡片资源,如果当前Java Card不支持垃圾回收,那么占用的资源永远不会被释放
  8. 尽可能的重用局部变量。变量越多消耗的卡片资源也越多
  9. 使用变量来存储数组元素。访问数组元素通常需要比访问局部变量更多的字节码。如果一个数组元素在相同的方法中从不同的位置被多次访问,则在第一次访问时将数组值保存在一个局部变量中,然后在后续访问中使用该变量
  10. 通过使用临时对象来存储中间结果或频繁更新的数据来节约卡上执行时间,更新RAM比更新EEPROM快1000倍。
  11. 使用switch替换掉if-else语句,通常前者速度更快
  12. 使用复合算术语句,而不是单独的赋值。原因是单独的赋值需要额外的指令来首先存储所有中间值,然后将它们加载回去进行下一次计算。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
javacard applet 开发实例 正常运行 带jar包 package mifare; import com.ibm.jz.JZSystem; import javacard.framework.APDU; import javacard.framework.Applet; import javacard.framework.ISO7816; import javacard.framework.ISOException; import javacard.framework.Util; public class AmbiqApplet extends Applet { byte[] mifarePassDefault={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] mifarePass8={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] mifarePass9={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] adminPass={(byte)0x40,(byte)0x41,(byte)0x42,(byte)0x43,(byte)0x44,(byte)0x45,(byte)0x46,(byte)0x47,(byte)0x48,(byte)0x49,(byte)0x4a,(byte)0x4b,(byte)0x4c,(byte)0x4d,(byte)0x4e,(byte)0x4f}; public static void install(byte[] bArray, short bOffset, byte bLength) { // GP-compliant JavaCard applet registration new AmbiqApplet().register(bArray, (short) (bOffset + 1), bArray[bOffset]); } public void process(APDU apdu) { short i; byte[] send=new byte[52]; byte[] send2=new byte[24]; // Good practice: Return 9000 on SELECT if (selectingApplet()) { return; } byte[] buf = apdu.getBuffer(); if(buf[ISO7816.OFFSET_CLA]==AmbiqConstant.CLS_AMBIQ) { switch (buf[ISO7816.OFFSET_INS]) { case AmbiqConstant.INS_GET_MIFARE: if(buf[ISO7816.OFFSET_P1]!=0 || buf[ISO7816.OFFSET_P2]!=0) { ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2); return; } /*Get Entire Mifare Ticket data * Returns back the content of the entire sector 8 (3 block 8.0, 8.1, 8.2) and the first 4 bytes of block 9.0; total 52bytes. Filed Length (in bytes) Data Comments CLA 1 0x80 Fixed class for the applet INS 1 0x20 Read entire data P1 1 0x00 Sector number P2 1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值