Java卡虚拟机和Applet的生命周期

一、    Java卡虚拟机的生命周期
    正常的PC上的Java虚拟机是作为一个操作系统进程运行。当操作系统进程终止时,Java语言的应用和它们的对象将自动销毁。
    在Java卡技术中,虚拟机的生命周期等同于卡的生命周期。就算卡在没有电源供电的情况下,存储在卡上的信息也会被存储起来。宏观上来看,Java卡虚拟机中创建的用于表现应用信息的对象是永久的,那么Java卡虚拟机呈现出来是永远运行着,当没有电源的情况下,Java卡虚拟机只不过是暂时停止了。

 

二、Java卡Applet的生命周期
    一个Java卡Applet的生命周期从Applet.register()方法开始,直到被删除为止。在Applet生命周期过程中,JCRE通过Applet的公有方法install、select、deselect、process、uninstall与Applet交互。

 

2.1 install方法
    Applet中的install方法的主要任务是使用applet的子类的构造方法创建它的实例,并注册这个实例到Java卡平台中(install方法中调用Applet.register方法完成Applet注册)。JCRE只会调用Applet的静态方法install(byte [], short, byte)创建Applet实例,并且只会调用一次。JCRE不会直接调用Applet的构造方法。
    如果install方法中没有调用Applet.register方法,或者在调用Applet.register前产生异常,亦或在调用Applet.register方法时产生异常,则认为应用没有安装成功。否则,安装成功。

2.2 select方法
    当Applet被显示或隐式选择时,JCRE都会调用Applet的select方法(调用当前选择Applet的select方法前,JCRE会调用前一个应用的deslect方法取消选定之前的Applet,见2.4小节)。
    Select方法分两种情况。单选和多逻辑通道上发生多选时。

  • 发生单选时:

    JCRE会调用Applet的select()方法。如果select方法返回true,则成功选择。否则,选择失败。

  • 发生多选时:

    JCRE会调用Applet的MultiSelectable. select(boolean appInstAlreadyActive)带参方法。如果select方法返回true,则成功选择。否则,选择失败。
    如果Applet的select方法返回true,实际的选择APDU命令会通过后续的process方法的调用来传递给Applet,Applet可以根据策略来决定对选择指令的反馈。
    另外,在Applet选择过程期间,Applet.selectingapplet()方法总是返回true。


2.3 process方法
    Applet的核心方法,为了完成Applet预期的各种业务处理。除了MANAGE CHANNEL命令外的所有指令都将传递给当前被选定的Applet的process方法。

 

2.4 deselct方法
    Applet的deselct方法目的在于允许Applet在取消选定时清除相关状态。
当JCRE接收到选择另一个Applet命令,并且检索成功时,JCRE会调用当前被选定的Applet的deselect方法,或者在多逻辑通道上发生多选的情况下,调用Multiselectable.deselect()方法。
在deselect方法执行过程中,Applet.selectingapplet()方法始终返回false。

 

2.5 uninstall方法
    当JCRE准备删除Applet实例时,将会调用uninstall方法,通知Applet删除请求。


end

你可能感兴趣的:(Java卡虚拟机和Applet的生命周期)