JavaCard开发教程之入门篇
使用Java创建简单的卡片游戏

使用Java创建简单的卡片游戏-一个实战教程卡片游戏是一种受欢迎的休闲娱乐活动,它可以让玩家在游戏中享受乐趣并挑战自己的智力。
在这个实战博客中,我们将创建一个基于Java的简单卡片游戏,用于展示如何实现扑克牌或其他类型的卡片游戏。
我们将深入了解Java编程语言,以帮助您构建自己的卡片游戏。
以下是本实战博客的主要内容:项目概述准备工作创建Java项目卡片游戏规则设计卡片类创建卡片牌组实现游戏逻辑构建用户界面总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java卡片游戏,具体来说,我们将实现一个"记忆卡片游戏",玩家需要翻转卡片并找到匹配的卡片对。
这个项目将涵盖以下主要功能:创建卡片:我们将设计和创建卡片对象,每个卡片上都有一个标识符和一个面值。
卡片牌组:我们将创建一个卡片牌组,包含多个卡片,并随机排列它们。
游戏逻辑:我们将实现游戏的核心逻辑,包括卡片的翻转、匹配检查和胜利条件。
用户界面:我们将使用Java Swing库构建用户界面,使玩家能够与游戏互动。
2. 准备工作在开始之前,确保您的开发环境已设置好。
我们将使用Java编程语言,需要以下准备工作:安装Java开发工具,如Eclipse、IntelliJ IDEA等。
了解Java编程基础知识,包括类、对象、集合等。
了解如何使用GUI库创建用户界面。
3. 创建Java项目首先,创建一个新的Java项目,您可以使用Eclipse、IntelliJ IDEA等工具来完成此操作。
在项目中,我们将创建Java类来实现卡片游戏。
4. 卡片游戏规则在"记忆卡片游戏"中,玩家将面对一组卡片,每张卡片上都有一个面值。
游戏的基本规则如下:所有的卡片都面朝下,玩家不能看到它们的面值。
玩家需要依次翻转两张卡片,看它们的面值是否匹配。
如果两张卡片的面值匹配,这对卡片将保持翻开状态。
如果两张卡片的面值不匹配,这对卡片将被翻回面朝下的状态。
java入门教程(一)PPT课件

2021/2/13
3
本章主要介绍以下7个部分的内容:
1. Java 语言的发展历史 2. Java 语言的应用前景 3. J2se程序的分类 4. Java Application程序的编辑、解释和
运行 5. Java Applet程序的编辑、解释和运行 6. Java 语言的特点 7. Java与C/C++语言常见的语法区别
根据结构组成和运行环境的不同,基于 J2SE开发的程序可分为两类:Java Application 和Java Applet 。
1. Java Application :则是Java 语言相 对完整的、独立的程序,需要独立的解释器
来解释运行。它同其它语言编写的程序一 样,可以控制和使用计算机的资源。
4、 Intranet(企业内部网 )上的软件开发 (直接面向企业内部用户 的软件 );
5、 与各类数据库连接查询的 SQL语句实现 ;
6、 进行手机通讯和其他的一些嵌入式的开发(比如手机和网络
游戏)
Wireless ToolKit
7、 其它应用类型的程序。
2021/2/13
7
三、J2se程序的分类
显然可以看到:利用Java 虚拟机就可 以把Java字节码程序跟具体的软、硬件平 台分隔开来,为此只要在不同的计算机上
2021/2/13
13
四、 Java Application程序的分析
一个程序中可能含有多个类,但仅有一个类是 主类(特点:(1)含有main方法的类, (2) public 修饰的类,(3)Java源程序文件名(.java文
件),与主类名相同),并保证大小写的准确,
否则会引发编译错误。
2021/2/13
java的qrcard技术使用流程

java的qrcard技术使用流程
Java的QR码技术是一种广泛使用的二维码技术,可用于识别文本、URL和其他数据。
该技术的使用流程可以分为以下步骤:
1. 准备QR码生成工具:首先,为QR码生成器选择适当的工具
是必要的。
可以使用很多Java库来生成QR码,如ZXing库或QRGen 库。
2. 安装QR码生成工具:将选定的QR码库安装到Java开发环境中。
可以直接下载相应的代码包或在Maven仓库中找到库的坐标并在
项目的pom.xml文件中添加依赖项。
3. 引入QR码生成工具:在代码中导入QR码库,通过在JAVA CLASSPATH中添加QR码库的JAR文件或XML文件来实现。
4. 创建QR码:使用QR码库的API生成QR码。
有很多可以自定
义QR码的属性,如矩阵大小、错误修正级别等。
5. 保存QR码:一旦生成QR码,保存QR码是一个必要的步骤。
使用JAVA IO流将QR码保存到磁盘或服务器上。
6. 打印QR码:如果需要打印QR码,可以将QR码保存为图像文
件并将其发送到打印机。
要创建QR码图像文件,需要将QR码保存为
特定格式,如PNG或JPEG。
7. 读取QR码:要读取QR码,需要一个QR码扫描器应用程序。
可以在移动设备上安装QR码扫描器应用程序,用于通过相机读取QR 码。
同样,也可以通过在计算机上运行QR码扫描器应用来读取QR码。
总之,Java的QR码技术是一种非常有用的技术,可用于许多场景,如扫描付款码、入场券等等。
使用流程简单明了,只需跟随上面
的步骤即可轻松生成和读取QR码。
java入门教程(一)PPT课件

运算符与控制流语句
运算符
Java支持多种运算符,如算术运算符(+、-、*、/、% )、关系运算符(==、!=、>、<、>=、<=)和逻辑 运算符(&&、||、!)等。
控制流语句
Java提供了多种控制流语句,如if语句、switch语句和 循环语句(for、while、do-while)等,用于控制程序 的执行流程。
1995年,Java正式发布,并成为一种独立的开发 平台。
2004年,Java SE 5.0版发布,引入了新特性如泛 型、for-each循环和自动装箱等。
java的应用领域
Web应用程序 开发
Java的Web开发技术, 如Servlet和JSP等,可 以轻松构建高效的Web 应用程序。
企业级应用
05
java开发环境配置
jdk的安装与配置
总结词
JDK是Java开发的核心工具包,需要安装并正确配置。
详细描述
JDK是Java Development Kit的缩写,是Java开发的核 心工具包,需要从Oracle官方网站下载并安装。在安装 过程中,需要选择适合自己系统的版本,并按照提示完 成安装过程。安装完成后,需要通过环境变量设置,将 JDK添加到系统路径中,以便在命令行或者其他IDE中直 接调用Java命令。
2023
java入门教程(一)ppt课件
目录
• java概述 • java基础知识 • java核心技术 • java常用类库 • java开发环境配置 • java入门案例——简易学生信息管理系统的实现
01
java概述
java的定义与特点
1
于开发跨平台应用程序和服务端应用程序等。
JavaCard应用程序开发

制作
JavaCard 应用程序开发三部曲
- 4 规范中定义: 表格 1、ISO 7816 CLA 值
CLA 值
指令类
0x0n, 0x1n ISO 7816 - 4 卡指令,比如文件存取和安全操作
20 to 0x7F 保留
0x8n or 0x9n 你可以用作你的特定的应用程序指令的 ISO/IEC 7816 - 4 格式,根据标准解释' X '
⒈APDU 命令 一个 APDU 命令的结构由它的第一个字节的值控制,大部分情况下看上去如下所示:
图 2、APDU 命令
一个 APDU 命令有一个必须有的头和一个可选的体,包含: · CLA(1 字节):这个必要的字段识别指令的一个特定应用程序类。有效的 CLA 值在 ISO 7816
8
Java 爱好者
2
Java 爱好者
制作
JavaCard 应用程序开发三部曲
图 2a. 带有 Java 功能的智能纽扣
图 2b. 带有 Java 功能的 USB 令牌
请参阅 What is a Smart Card? /products/javacard/smartcards.htm
5
Java 爱好者
制作
JavaCard 应用程序开发三部曲
读取端主应用程序 主应用程序存在于一个例如个人计算机这样的台式机或者终端、电子付款终端、手机或者一个 安全子系统中。 主应用程序处理用户、Java Card 小应用程序和供应商的后端应用程序之间的通讯。 传统的读取端应用程序是使用 C 编写的。近来 J2ME 技术的广泛普及有望使用 Java 实现主应 用程序;例如,它可以在一台支持 MIDP 和安全信赖服务应用编程接口(Security and Trust Services API)手机上运行。 智能卡供应商一般不仅提供开发工具箱,而且提供支持读取端应用程序和 Java Card 小应用程序的 应用程序编程接口。例如 OpenCard Framework /,就是一个基于 Java 的 应用程序编程接口集,隐藏了来自不同供应商的读取器的一些细节,并且提供了 Java Card 远程方 法调用分布式对象模型和安全信任服务应用编程接口(SATSA),我在本文后面一部分讨论它们。
JavaCard Applet开发调试及测试脚本的编写执行

JCOP开发调试JavaCard程序及测试脚本的编写执行一.JCOP插件的安装第一步在eclipse里安装JCOP的插件,安装过程简述:Help->Software Updates->Find and Install调出安装窗口如下图第二步选择:Search for new features to install,出现如下图的窗口第三步点击new Local Site按钮,打开JCOP插件所在目录,并选中,如下图所示,确定然后一直点下一步下一步就可以了,安装完了二.创建工程通过创建工程向导创建一个JavaCard工程(如,TestApp)。
创建过程如下图Project name填写工程的名字点next选择Java Card API的版本,选择GP版本,点next勾选Create a Java Card application using one of the templates(使用模板创建一个JAVACARD的应用) 选择模板的类型,比如Basic Java Card applet 点next输入Package(包名)和Applet class name(Applet的类名),点next输入Package AID和Applet AID,前5个字节要保持一致。
点Finish,一个JAVACARD的工程就创建完成了代码模板包括一个install方法和process方法,install方法是用来安装applet的,process方法是用来处理apdu指令的下面在模板代码的基础上我们来实现一个取随即数的功能ISO7816规定取随机数的apdu命令是:00 84 00 00 08(04)最后一个字节表示要取的随机数的长度三.写代码实现功能四.编译运行测试程序如下图,选择工程,右键,Run As->Run 打开run对话框如下面两个图所示双击左测的Java Card Application,创建一个与工程同名的运行项目,选中上面的Java Card simulation可以在虚拟仿真环境下运行程序,如果选择下面的Card reader,然后再选读卡器,插入Java卡片,就可以直接把程序下载并安装到java 卡上,并执行,点run,程序开始执行如下图所示, 就可以看到程序下载到仿真环境过程中的字节码,还有applet安装成功后的信息在cmd>命令框里输入/send 00A4040006111111111122 选择applet返回9000再输入/send 0084000008 取随机数返回8个字节的随机数01 F5 B4 11 5B 88 C3 B2 后跟9000表示命令执行成功如下图所示五.DeBug调试程序DeBug调试需要在要调试的程序段下断点,如图所示,双击33行左侧的空位置,就会设上断点,如下图蓝色的小圆点,如果取消断点,只需在小圆点上再次双击一下。
JAVA自学教程(完整版)PPT课件
而在Java语言中,Java自带的虚拟机很好地实现了跨平台 性。Java源程序代码经过编译后生成二进制的字节码是与平台 无关的,但是可被Java虚拟机识别的一种机器码指令。Java虚 拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使 得Java语言具备跨平台性。
2. 面向对象
面向对象是指以对象为基本粒度,其下包含属性和方法。 对象的说明用属性表达,而通过使用方法来操作这个对象。面 向对象技术使得应用程序的开发变得简单易用,节省代码。 Java是一种面向对象的语言,也继承了面向对象的诸多好处, 如代码扩展、代码复用等。
图1.8 Applet显示“Hello World!”
习题
1. 简述Java的特点。 2. 简述Java的分类情况。 3. 进行Java环境的安装和配置。 4. 编写应用程序,屏幕上输出“欢迎来到Java世界!”。 5. 编写Applet,输出“欢迎来到Java世界!”。
第2章 Java基本语法
1.4 JDK包的下载与安装
Java Develop Kit简称为JDK,是Sun公司免费发行的软件包, 可以从Sun网站免费下载,也可以从其它国内 地址下载。JDK版本从1.02开始,目前版本发展到1.4,其中高 级版本对低级版本实现向下兼容。运用这个软件包,就可以对 Java源程序进行编译和运行。本书中下载使用的JDK包为j2sdk1_4_0_012-windows-i586.exe。 下载后双击图标,即可进行安装, 默认的安装目录为C:\j2sdk1.4.0_01。本书作者将安装目录改为 D:\j2sdk1.4.0_01。
图1.4 编辑lib变量
选中path变量,单击“编辑”按钮,弹出标题为“编辑用 户变量”的对话框,如图1.5所示。在变量值一栏的最后添加 “; D:\j2sdk1.4.0_01\bin”,“;”表示与前面的各项隔开,后面的 路径是JDK包的安装路径下的bin目录。图1.5为作者修改path变 量的情况,注意你的安装路径可能与作者的有所不同,同样要 以你的安装路径为基准进行修改。
《java基础教程》课件
这类异常在编译时被检查,必须显式地处理它们,否则程序将无法通过编译。常见的检查型异常包括IOException、ClassNotFoundException等。
非检查型异常
这类异常在运行时被抛出,不需要显式地处理它们。常见的非检查型异常包括NullPointerException、ArrayIndexOutOfBoundsException等。
常用操作
HashMap类提供了多种遍历键值对的方法,如keySet()、entrySet()等。
遍历
05
Java异常处理
异常的分类
Java中的异常分为两大类,即检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。检查型异常在编译时被检查,而非检查型异常在运行时才被抛出。
用于组合布尔值,返回值为布尔值。
03
跳转语句
控制程序流程的转移,包括break语句、continue语句和return语句。
01
条件语句
根据条件选择执行不同的语句块,包括if语句和switch语句。
02
循环语句
重复执行一段代码,包括for循环、while循环和do-while循环。
函数定义
定义一个具有特定功能的代码块,包括返回值类型、函数名和参数列表。
动态数组
ArrayList类提供了多种常用操作,如添加元素、删除元素、获取元素等。
常用操作
ArrayList类提供了多种遍历数组的方法,如for循环、迭代器等。
遍历
HashMap类是一个键值对存储的集合,可以通过键快速查找对应的值。
键值对存储
HashMap类提供了多种常用操作,如put()、get()、remove()等。
JAVA卡技术概述
JA V A卡技术概述---------------------------------------------------------------------------------------------------------------------- 编辑整理:编辑:王鹏来源:门禁关键字:JA V A爪哇卡(JavaCard)技术可使以爪哇语言所写成的程序,在智能卡和其它资源受限装置上执行。
本文将让您一览爪哇卡技术,包括该系统的结构和组件。
本概述的目的在让您对爪哇卡技术有一个整体性了解,并介绍有关爪哇卡系统的重点和基本概念,以利程序开发者设计程序之用。
一、爪哇卡技术之组件爪哇卡技术包括下列部分:*精简后之爪哇程序语言以及适合智能卡应用的虚拟机(JavaCardVirtualMachine,JCVM)定义*核心之爪哇卡应用程序接口(ApplicationProgrammingInterface,API)及其延伸部分*爪哇卡之执行时期环境(JavaCardRuntimeEnvironment,JCRE)爪哇卡应用程序接口和执行时期环境是以智能卡工业标准ISO7816为模型而设计,因此,爪哇卡平台可轻易支持跟ISO7816第一到第六部分兼容的智能卡系统和应用。
爪哇卡应用程序被称为applets。
爪哇卡平台可支持多重应用(multiapplication)环境。
爪哇卡应用程序则是在爪哇之执行时期环境内处理和执行。
二、精简之爪哇卡语言若智能卡的程序可使用爪哇程序语言的所有功能写成当然最好,不过对智能卡和其它资源受限装置来说,由于运算资源有限,要完全支持爪哇程序语言是不可能也不切实际的事。
一般智能卡是以1K的随机存取内存(RAM),以及16K的非挥发性内存(EEPROM或RAM)和24K的只读存储器(ROM)规格出现,因此,爪哇卡平台仅能支持经小心选取且已规格化而有精简功能的爪哇语言。
此精简爪哇语言包含之功能,适于设计智能卡以及其它小型装置的程序,同时还能保留爪哇程序语言以对象为导向(object-oriented)的能力。
JAVA卡开发技术详解
金邦达宝嘉集团上海办事处 孟宏文 上海市银城东路101号汇丰大厦13F,200120
关键词: JavaCard,卡片操作系统(COS),智能卡
摘要
本文介绍如何优化Java卡的软件开发,及如何构造一个通用的软件类库来 针对多变的应用需求,快速开发出合乎市场需求的卡片操作系统。
} } //-----------------------------------------------private void fverify_pin(APDU apdu) throws ISOException {
// 取APDU 数据数组 // 检查P1,P2是否合法 // 检查Lc,data 或 Le 是否正确 // 比较 口令 // 返回结果 } //-----------------------------------------------private void fread_binary(apdu) throws ISOException { // 取APDU 数据数组 // 检查P1,P2是否合法 // 检查Lc,data 或 Le 是否正确 // 读取 文件数据 // 返回结果 } }
回来再考虑一下“应用”本身,智能卡应用都是以ISO7816为基础,然后 再添加具体的应用需求,它应有比如应用类型和状态等属性,还有处理事件(输 入数据)的方法。在做C++程序时,我们通常会设计一个纯虚类作为父类,定义 好所有的公共行为供子类重载。Java也支持纯虚类和单重派生(考虑一下为何 不支持多重派生?),如果我们将应用设计成虚类,最后的具体实现至少是第三 级子类了,因为我们肯定会将ISO标准的指令和一些通用指令放在二级类。考 虑到Java是编译型的,在虚拟机上运行时,过多的类继承将在寻址上极大的降 低程序运行的速度,毕竟Java卡的硬件不可能和PC相提并论啊!所以基类应当 设计成一个包含ISO指令及其他公共指令的不含纯虚函数的类,它不用派生子 类就可以直接运行。一个通用的、标准的、可重复构建的小型COS诞生了,它 是一个最简单的“应用”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JavaCard开发教程之规范多年以前,Sun微系统公司实现了智能卡和类似的资源约束设备的潜能,并且定义了一组Java技术子集规范来为它们创建应用程序,Java Card小应用程序。
支持这些规范的设备称为Java Card平台。
在一个Java Card平台上,来自不同的供应商的多个应用程序可以安全地共存。
一个典型的Java Card设备有一个8或16位的运行在3.7MHz的中央处理器,带有1K 的RAM和多于16K的非易失性存储器(可编程只读存储器或者闪存)。
高性能的智能卡带有单独的处理器和加密芯片,以及用于加密的内存,并且有一些还带有32位的中央处理器。
Java Card技术规范目前是2.2版,由三部分组成:·Java Card虚拟机规范,定义了用于智能卡的Java程序语言的一个子集和虚拟机。
·Java Card运行时环境规范,进一步定义了用于基于Java的智能卡的运行期行为。
·Java Card应用编程接口规范,定义了用于智能卡应用程序核心框架和扩展Java程序包和类。
Sun还提供了Java Card开发工具箱(JCDK) /products/javacard/,包含了Java Card运行期环境和Java Card虚拟机的引用实现,和其它帮助开发Java Card 小应用程序的工具。
本文的第二部分将详细讲述JCDK。
Java Card技术和J2ME平台让我们比较一下Java Card和J2ME平台技术:图. Java Card技术和J2ME平台CDC和CLDC配置以及它们JavaCard开发教程之程序元素完整的Java Card应用程序由一个后端应用程序和系统、一个主机(卡外)应用程序、一个接口设备(读卡器)和卡上小应用程序、用户证书和支持软件组成。
所有的这些元素共同组成一个安全的端到端应用程序:图1. Java Card应用程序的体系结构一个典型的Java Card应用程序不是孤立的,而是包含卡端、读取端和后端元素。
让我们更详细的讲述一下每个元素。
后端应用程序和系统后端应用程序提供了支持卡上Java小应用程序的服务。
例如,一个后端应用程序可以提供到安全系统和卡上的证书的连接,提供强大的安全性。
在一个电子付款系统中,后端应用程序可以提供到信用卡及其他付款信息的访问。
读取端主应用程序主应用程序存在于一个例如个人计算机这样的台式机或者终端、电子付款终端、手机或者一个安全子系统中。
主应用程序处理用户、Java Card小应用程序和供应商的后端应用程序之间的通讯。
传统的读取端应用程序是使用C编写的。
近来J2ME技术的广泛普及有望使用Java实现主应用程序;例如,它可以在一台支持MIDP和安全信赖服务应用编程接口(Security and Trust Services API)手机上运行。
智能卡供应商一般不仅提供开发工具箱,而且提供支持读取端应用程序和Java Card小应用程序的应用程序编程接口。
例如OpenCard Framework /,就是一个基于Java的应用程序编程接口集,隐藏了来自不同供应商的读取器的一些细节,并且提供了Java Card远程方法调用分布式对象模型和安全信任服务应用编程接口(SATSA),我在本文后面一部分讨论它们。
读取端卡片接受设备卡片接受设备(CAD)是处于主应用程序和Java Card设备之间的接口设备。
一个CAD 为卡片提供电力,以及与之进行电子或者射频通信。
一个CAD可能是一个使用串行端口附于台式计算机的读卡器,或者可能被整合到终端内,例如饭店或者加油站内的电子付款终端。
接口设备从主应用程序到卡片转送应用程序协议数据单元( Application Protocol Data Unit,简称APDU)命令(在后面讨论),并且从卡片向主应用程序转送响应。
一些CAD有用于输入个人识别号码的键盘,有的可能还有显示屏。
卡片端小应用程序和环境Java Card平台是一个多应用程序环境。
在图4中我们可以看到,卡片上可能存在一个或多个Java Card小应用程序,还有支持软件--卡片的操作系统和Java Card运行时环境(JCRE)一起。
JCRE由Java Card虚拟机、Java Card Framework和应用程序编程接口以及一些扩展应用程序编程接口组成。
所有的Java Card小应用程序扩展Applet基本类,并且必须实现install()和process()方法;JCRE在安装小应用程序的时候调用install(),并且在每次有一个进入的用于小应用程序的APDU的时候调用process()。
Java Card小应用程序在被装载的时候实例化,并且在断电的时候保持运行。
Java Card小应用程序起一个服务器的作用,并且是无源的。
在一张卡片被加电以后,每个小应用程序都保持非运行的状态直到它被选择,在此时可能会做初始化。
小应用程序只有在一个APDU 被发送给它以后才被激活。
一个小应用程序如何激活(被选择)在"一个Java Card小应用程序的生命周期"一节中描述。
与Java Card小应用程序通讯(访问智能卡)你可以使用两种模型中的任何一种来在一个主应用程序和一个Java Card小应用程序之间通信。
第一个模型是基本消息传送模型,第二种是基于Java Card远程方法调用(JCRMI),这是J2SE RMI分布式对象模型的一个子集。
此外,SATSA通过一个基于更加抽象的应用编程接口的普通连接框架(Generic Connection Framework,简称GCF)应用编程接口,让你要么使用消息传递要么使用JCRMI来访问智能卡。
JavaCard开发教程之消息模型图1中说明的消息传递模型是所有Java Card通信的基础。
它的核心就是应用程序协议数据单元(APDU),CAD和Java Card框架之间交换的一个逻辑数据包。
JavaCard框架接收任何CAD发送进来的APDU命令并且传送到相应的小应用程序中。
小应用程序处理APDU命令,然后返回一个响应APDU。
那些APDU遵守国际标准规格ISO/IEC 7816 - 3和7816 - 4。
图1使用消息传递模型通讯读卡器和卡之间的通信通常基于下面两种连接协议的一种,面向字节的T = 0,或者面向数据块的T = 1。
还可能会用到被称为T = USB和T = RF的替换协议。
JCRE APDU类向应用程序隐藏了一些协议细节,但不是全部,因为T = 0协议相当的复杂。
⒈APDU命令一个APDU命令的结构由它的第一个字节的值控制,大部分情况下看上去如下所示:图2、APDU命令一个APDU命令有一个必须有的头和一个可选的体,包含:· CLA(1字节):这个必要的字段识别指令的一个特定应用程序类。
有效的CLA值在ISO 7816 - 4规范中定义:表格1、ISO 7816 CLA值·理论上,你可以使用所有的CLA值0x80或者更高值来用于特定应用程序指令,但是在许多现在的Java Card实现中,只有黑体显示的是实际认可的。
· INS(1字节):这个必需的字段指明CLA字段中标示的指令类中的一个特定指令。
ISO 7816 - 4标准指定用于访问卡上的数据的基本指令,当它根据在像标准中定义的卡上的文件系统那样结构化的时候。
附加功能已经在这个标准中的其它地方说明,其中一些是安全功能。
表2中是一个ISO 7816指令的列表。
只有当使用一个相应的CLA字节值时,你才可以根据标准定义你自己的特定应用程序的INS值,。
表格2、当CLA = 0x时的ISO 7816 - 4 INS值· P1(1字节):这个必需的字段定义指令参数1。
你可以使用这个字段来检验INS字段,或者用于输入数据。
· P2(1字节):这个必需的字段定义指令参数⒉你可以使用这个字段来检验INS字段,或者用于输入数据。
· Lc(1字节):这个可选的字段是命令的数据字段的字节数。
·数据字段(可变的,字节Lc数):这个可选的字段保存命令数据。
· Le(1字节):这个可选的字段指定在期望响应的数据字段中的极限字节数。
取决于命令数据的存在与否以及相应是否必须,命令APDU有四种变化。
只有在你使用协议T = 0时,你才需要关心这些变化:图3、APDU命令的四个可能的结构一个典型的应用程序将以不同的结构方式使用不同的APDU命令。
2、响应APDU响应APDU的格式很简单的:图4、响应APDU和一个APDU命令相似,响应APDU有可选择的和必要的字段:·数据字段(可变长度,由APDU命令中的Le确定):这个可选择的字段包含小应用程序返回的数据。
· SW1(1字节):这个必要的字段是状态字1。
· SW2(1字节):这个必要的字段是状态字2。
这些状态字的值在ISO 7816 - 4规范中定义:图5、响应状态码Java Card框架应用编程接口中的ISO7816 Java接口定义了许多常数来帮助规范返回错误代码。
3、过程APDU每当有一个进入的APDU用于所选择的小应用程序,JCRE就调用小应用程序的process ()方法,把进入的APDU作为一个参数传送。
这个小应用程序必须解析APDU命令,处理数据、生成一个响应APDU,然后把控制权返回给JCRE。
RMI(JCRMI)通讯模型第二种通信模型依靠J2SE RMI分布式对象模型的一个子集。
在RMI模型中,一个服务器应用程序创建并生成可访问的远程对象,并且一个客户应用程序获得到远程对象的远程引用,然后调用它们的远程方法。
在JCRMI中,Java Card 小应用程序是服务器,而主应用程序是客户端。
JCRMI由类RMIService提供到扩展程序包javacardx.rmi中。
JCRMI消息被封装到传入RMIService方法的APDU对象中,换句话说,JCRMI提供了一个基于APDU消息传递模型的分布式对象模型机制,通过这个机制服务器和客户端通信,来回传送方法信息、参数和返回值。
JavaCard 开发教程之虚拟机Java Card 虚拟机(JCVM)规范定义了Java 程序设计语言的一个子集和一个用于智能卡的兼容Java 的虚拟机,包括二进制数据表示和文件格式,以及JCVM 指令集。
用于Java Card 平台的虚拟机是两部分实现,一部分在卡外,一部分运行在卡本身。
卡上的Java Card 虚拟机解释字节码、管理类和对象等等。
外部Java 虚拟机部分是一个开发工具,一般称为Java Card 转换工具,装载、检验和进一步地准备卡片小应用程序Java 类,用于在卡上执行。