创建 Java Card 应用程序的典型步骤如下:
编写 Java 源代码。
编译 源代码。
将类文件 转换 为 Converted Applet(CAP)文件。
验证 CAP 是否有效;此步骤为可选。
安装 CAP 文件。
使用 Java 程序设计语言开发传统程序时,前两个步骤是相同的:编写 .java 文件并将它们编译为 .class 文件。虽然您已经创建了 Java Card 类文件,但是该过程仍可改变。
将 Java Card 类载入 Java Card 设备之前,必须将它们转换为标准的 CAP 文件格式,然后选择性地进行验证:
完成验证之后,便可以将 CAP 安装到 Java Card 设备中了。
Sun Java Card 开发工具箱
您可以使用 Sun Java Card 开发工具箱编写 Java Card applet,甚至在没有智能卡或卡片读取器的情况下对它们进行测试。该工具箱包含了需要开发和测试 Java Card applet 的所有基本工具:
Java Card 工作站开发环境(JCWDE)是一个方便且易于使用的 Java Card 模拟工具,使开发人员无需转换和安装 CAP 文件而直接执行类文件。JCWDE 可以使用调试器和 IDE 进行集成。
从这个开发工具箱的2.2.1版本开始,JCWDE 支持 Java Card RMI(JCRMI)。请注意 JCWDE 不是一个成熟的 Java Card 仿真器。它还不支持 JCRE 的许多功能,例如软件包安装、applet 实例创建、防火墙和事务。要了解更多信息,请参考开发工具箱的《用户指南》。
C 语言 Java Card 运行时环境(C-JCRE)是一个用 C 语言编写的可执行参考实现。C-JCRE 是 Java Card API、VM 和运行时环境的完全兼容的实现。它能让开发人员在工作站环境下准确地测试 applet 的行为。
Java Card 转换工具,用于生成 CAP 文件。
Java Card 检验器,用于可选地检查 CAP 和导出文件的有效性。
一个用于发送和接收应用程序协议数据单元(APDU)的 APDU 工具(apdutool)。这就是测试期间如何将 APDU 发送给 Java Card applet 的过程。您可以创建 apdutool 读取的脚本文件,以便将 APDU 发送到 C-JCRE 或 JCWDE。
一个 capdump工具,用于转储 CAP 的内容和一个打印 EXP 文件的 exp2text。
一个 scriptgen 工具,用于将 CAP 文件转换为 APDU 脚本文件。该工具简称为卡片外部安装程序。
支持库(用于 Java Card API 的类文件和导出文件)、文档和示例。
虽然 Sun Java Card 开发工具箱允许编写并测试 Java Card applet,部署真正的端到端智能卡应用程序却要求这些工具不被包含在开发工具箱内,例如:像 OpenCard 和 Global Platform API 这样的终端 API 的使用。可能还要求使用像用户识别模块(Subscriber Identification Module,SIM)这样的工具箱来帮助你管理 SIM。
表 1 显示了工具箱的目录结构(Windows 版本),以及包含开发工具的 bin 目录内容。
图 1a. 开发工具箱目录结构
图 1b. Bin 目录的内容
现在让我们重新访问 Java Card 开发步骤,记住这次要使用 Sun Java Card 开发工具箱:
使用您喜欢的编辑器或 IDE 编写 Java 源代码。
使用您喜欢的编译器或 IDE 编译 源代码。
使用 JCWDE 仿真器测试 Java Card applet。这是一个可选的步骤。请记住 JCWDE 不是一个成熟的 Java Card 仿真器。
使用工具箱中 bin 目录中的 转换器 工具将类文件转换 为 Converted Applet(CAP)。请注意,除了类文件之外,向转换工具的另一个输入为 导出文件,提供由应用程序所导入软件包的相关信息;这些软件包还会被加载到卡片中。导出文件还是转换器工具的一个输出结果。
验证 CAP 的有效性。这一步是可选的。这一步包括使用 verifycap 脚本来验证 CAP 文件的有效性,使用 verifyexp 来验证导出文件,并且使用 verifyrev 验证软件包修订版本间的二进制兼容性。工具 verifycap、verifyexp 和 verifyrev 脚本都在 bin 目录中可以找到。
安装 CAP 文件。使用 scriptgen 工具将 CAP 文件转换为(安装) APDU 脚本文件。然后使用 apdutool 将脚本文件(安装 APDU 命令和 CAP 文件)发送到 Java Card 设备上的 C-JCRE 或 JCRE。JCRE 将 CAP 文件保存卡片内存中。
下列图总结了这些步骤。请注意,每个Java Card 供应商提供自己的工具,但是开发 Java Card applet 的步骤通常在开发工具箱之间是相同的:
图 2. Java Card 开发步骤
要了解关于如何使用 Sun 的 Java Card 开发工具箱方面的更多信息,请参见《 Java Card 开发工具箱用户指南 》,从中找到工具箱文档目录。另一个优秀的参考资料是文章“使用 Java Card 开发工具箱”。