移动通信中RMI技术及其应用
扫描二维码
随时随地手机看文章
1.引言
Java智能卡(Java Card)技术在第三代移动通信(3G1中有着极其广泛的应用。Jaya智能卡的出现.使多个应用程序可共存于一张智能卡中.这些应用可以来自同一个卡供应商。也可以来自不同的卡供应商.用户只需刷新智能卡上的程序。就可以得到不同的应用.运营商及开发商摆脱了对卡商的依赖。大大降低了成本。在移动通信的SIM卡中,Java智能卡的应用越来越广泛,景极其看好。由于SIM卡使用Java智能卡的量越来越多,使用频率越来越高。为了更好地发挥网络及其分布在网络中的计算机的处理能力。移动通信中Java智能卡RMI技术在开发应用中变得越来越重要。
2.移动通信中Java智能卡的主要特点
移动通信中,Java智能卡是指运行Java小应用程序的智能卡。卡上必须存在相应的Java虚拟机。符合Java Card技术规范的小应用程序可以运行在该虚拟机上 SUN公司提出了有关Java Card技术规范.包括有关在智能卡上创建Java Card虚拟机和应用编程接1:3(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卡虚拟机fJCVM)和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) 框架(ske1eton) 的方法来隐藏底层通讯的实现细节。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.*;
importjavaeard.framework.*;
public interface EPInterfaee extends Remote {
public short getBalance0 throw RemoteExeeption;
//有关电子钱包应用中的方法声明
...
}
2)编写远程类的服务器实现和相应的支持类
在Java智能卡中,小应用程序是RMI服务器端,一个典型的小应用程序如图2所示n1:
图中MyRemoteC1ass是远程服务器类.可以实现远程接口MyRemote来实现Remote。也可以通过扩展一个相应的智能卡远程对象类f图中(CardRemoteObject)来实现Remote。总之所有远程应用的实现类都必须实现Remote接口 RMIService负责将APDU调用转换为RMI调用.Dispatcher负责将收到的APDU命令分发给RMIService 从图中可知,服务器的实现主要包括Jaya智能卡小应用程序、远程服务接口的实现类及与应用程序相关的类。下面是小应用程序的结构:
3)写使用远程服务类的客户机端程序
客户端程序通常包括初始化OpenCard框架、等待新卡插入、获取OCFCardAccessor实例、创建JavaCardRMIConnect实例及选择智能卡Applet和调用远程对象的方法。(限于篇幅,程序略)
3.3移动通信中Java智能卡的RMI程序的流程Java智能卡的RMI程序的流程可用下图[l]表示。
图中HostAppheafion是客户端应用程序。通过传送APDUs到卡上的JCRE进行RMI调用。依次传送到智能卡上的小应用程序f图中的(MyApplet)。 小应用程序通过Dis.Datcher将收到的APDUs命令分发给RMIService。RMIService逐个处理APDU并将这些命令转化为远程方法调用。
4.小结
移动通信中Java智能卡的应用越来越广,在目前的软件设计中。分布式程序设计越来越被软件开发人员重视。在移动通信中随着应用范围的不断扩展。程序和需要处理的数据流量将会有一个非常大的膨胀。而这些程序和处理的数据以及实际的计算都会广泛地分布在网络上。基于RMI的应用既可以共享网络及网络中计算机等软硬件的资源。也可以平衡各个计算机的处理能力。