来源:中国一卡通网 作者:史建成 李萍 发布时间:2008-12-19 09:38:38 字体:[大 中 小]
摘 要:RMI(Remote Method Invocation,远程方法调用)技术是开发Java分布式网络应用的核心技术。本文阐述了移动通信中Jaya智能卡的主要特点。分析了J2SE中RMI技术的体系结构,研究了Java智能卡RMI体系的特点以及与J2SE中的RblI的主要区别,并给出了移动通信中Java智能卡RMI应用程序的开发步骤。
1.引言
Java智能卡(Java Card)技术在第三代移动通信(3G)中有着极其广泛的应用。Jaya 智能卡的出现。使多个应用程序可共存于一张智能卡中。这些应用可以来自同一个卡供应商。也可以来自不同的卡供应商。用户只需刷新智能卡上的程序。就可以得到不同的应用。运营商及开发商摆脱了对卡商的依赖。大大降低了成本。在移动通信的SIM卡中,Java智能卡的应用越来越广泛,景极其看好。由于SIM卡使用Java智能卡的量越来越多,使用频率越来越高。为了更好地发挥网络及其分布在网络中的计算机的处理能力。移动通信中Java智能卡RMI技术在开发应用中变得越来越重要。
2.移动通信中Java智能卡的主要特点
移动通信中,Java智能卡是指运行Java小应用程序的智能卡。卡上必须存在相应的Java虚拟机。符合Java Card技术规范的小应用程序可以运行在该虚拟机上。SUN公司提出了有关Java Card技术规范。包括有关在智能卡上创建Java Card虚拟机和应用编程接口(API)的详细信息。与传统的智能卡系统相比,Java智能卡平台主要有以下特点:
1.跨平台性
移动通信中目前大部分SIM 卡已经支持了Java卡的技术规范,凡符合Java卡API技术规范的Java卡Applets都可以运行在Java卡运行环境(JCRE:Java Card Runtime Environment)。允许开发人员使用相同的Java卡Applets在不同厂商的智能卡上运行,实现了一次程序编写到处运行的功能 即通过JVM 的机制达到跨平台的目的。
2.应用开发便捷性
对于移动通信中Java智能卡上的应用,开发人员无需了解复杂的智能卡硬件和智能卡专用的技术,就可以进行智能卡应用的开发,从而大大减少开发时间,降低开发难度和成本。而且可以使原来的Java程序开发人员来编写智能卡程序。人力资源得到充分的利用,更好地满足了应用程序成倍增长的需要,同时也是时代发展的需要。
3.安全性
在移动通信中,Java智能卡最关键的问题之一。安全性牵涉到多个方面。Java智能卡系统的安全性模式在很多方面作了改进,它的安全策略由Java卡虚拟机(JCVM)和Java卡运行环境共同实现。考虑到智能卡的应用范围和应用场合的特殊性,Java卡支持保护数据的完整性,防止对于敏感数据没有认证的访问。
4.多应用性
在一个Jaya卡运行环境中可以运行多种功能差异很大的不同的应用(Applets),譬如手机上网,移动证券交易,手机玩游戏等等。这些应用既可以来自同一个卡供应商也可以来自不同的卡供应商,这是新一代手机的很重要特点。
3.RMI技术与移动通信中智能卡的RMI技术及其应用
3.1 RMI技术
J2SE中的RMI(Remote Method Invocation,远程方法调用)技术是开发Java分布式网络应用的核心技术与传统的RPC(Remote Procedure Call,远程过程调用)调用远程过程不同,RMI用于调用远程对象中的方法。支持存储于不同地址空间的对象之间的彼此通信。让位于不同JVM 空间中的对象在外观行为上都像是本地的对象一样使用。是纯粹面向对象的Java程序中开发网络分布式应用系统的核心解决方案。
用RMI开发的应用程序由服务器端程序和客户端程序二部分组成。服务器端程序在运行时会创建多个对象实例f称为远程对象),这些对象实例用于向客户提供某种服务。同时服务器端打开监听端口等待客户端程序调用。客户端程序在运行时通过RMI机制从服务器中得到远程对象的引用。调用其中的方法。
RMI的体系结构可以用图1表示:
从图1中可见,RMI体系结构是由多层组成的。stub/skeleton层中使用了存(stub) 框架(skeleton) 的方法来隐藏底层通讯的实现细节。stub代表远程对象的客户端对象。具有和远程对象相同的接口或方法列表。当客户端程序调用远程对象的方法时.实际上调用的是stub对象中的方法。stub将请求转发到远程对象。服务器端的skeleton对象负责将stub传来的信息解码。并将解码后的信息交给实际的远程对象进行处。远程对象处理完毕后将结果传给skeleton对象。再由skeleton对象传给客户端的stub对象,最后stub对象将这些信息传给客户端程序。
3.2 移动通信中Java智能卡的RMI技术及其应用
除了与J2SE中的RMI技术非常相似外, 由于智能卡资源的局限,Java智能卡中的RMI技术与J2SE中的RMI技术是有所区别的。在Java智能卡中,JavaCard小应用程序是服务器.主应用程序是客户端。Java智能卡RMI与J2SE中的RMI的主要区别体现在如下几点:
1)J2SE中的RMI协议通信是通过远程接口实现的存根与远程接口实现的框架完成的,而在Java智能卡中的RMI应用中。客户端应用程序与服务器端应用程序的通信过程是先获取一个RMIService服务,然后由该服务程序再与服务器的应用进行通信。
2)在Java智能卡的RMI模型中。APDU(Applicafion PintocolData Unit,应用协议数据单元)通信的过程被抽象化。不是直接通过APDU命令完成,而是通过处理对象的方式完成的。
3)Java智能卡RMI模型中的软件包与J2SE中RMI的软件也有不同,分别是jave. rmi与javacard.framework.service。其中java.rmi包中定义了Remote接口与RemoteExcepfion类,而javacard.framework.service软件包中定义了JavaCard小应用程序服务类, 包括CardRemoteObject和RMISenrice类。CardRemoteObject类中定义了启动和禁止卡外对象远程访问的方法。而RMIServiee用于处理RMI请求并转化输入的APDU命令为远程方法调用。
编写一个Jaya智能卡的应用程序一般要包含以下几步(下面给出的是典型的电子钱包的例子):
1)定义一个远程服务的接口
该接口负责定义Jaya智能卡小应用程序所能提供的服务,同样该接口必须扩展java.rmi.Remote。
import java.rmi.*;
import javaeard.framework.*;
public interface EPInterfaee extends Remote {
public short getBalance0 throw RemoteExeeption;
//有关电子钱包应用中的方法声明
...
}
推荐文章
论坛热帖