(JavaCard) 技术入门 2 -- 搭建JCDK开发环境

2024-02-24 17:58

本文主要是介绍(JavaCard) 技术入门 2 -- 搭建JCDK开发环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以我自己实现的版本JCDK 2.2.2为例子:

1.到 http://java.sun.com/javacard 网站上下载一个Java Card Development Kit 2.2.2 (即所谓的JCDK)

2.将JCDK解压到固定的位置(比如C:\java_card_kit-2_2_2)下,在doc\en\guides\pdf子目录下面可以看到安装手册cJDK Users Guide (注:OS以windows为例子,其它OS请参照安装手册)

3.到 http://java.sun.com/j2se 网站上下载一个JDK 1.5.0_19 并安装(比如C:\j2sdk1.5)(注:版本1.5,每个JCDK都对应自己支持的JDK版本,具体的要求在JCDK的手册中)

4.JCDK的bin目录下有一些虚拟卡工具,如果你希望该工具支持实卡操作,那么你需要一个符合TLP224规范的读卡器,并需要安装javax.comm包,该包位于http://java.sun.com/products/javacomm。当然你也可以选择不支持该特性,而使用其它的工具来操作实卡。(比如GPShell)

5.JCDK的bin目录下有一些工具和批处理,为了能正确运行,需要设置windows的环境变量 set JC_HOME=C:\java_card_kit-2_2_2 来指向JCDK的路径,set JAVA_HOME=C:\j2sdk1.5 来指向JDK的路径(该环境变量将在JCDK的批处理工具中使用),在环境变量PATH中增加两个路径 set PATH=%JC_HOME%\bin;%JAVA_HOME%\bin;%PATH% 用来提供JCDK和JDK的运行路径。(注:请直接修改环境变量,在cmd窗口运行将只能临时更新环境变量)

6.JCDK自带了ant-task提供了若干的自定义ant任务,这些自定义任务是为了提供给用户实现ant方式的编译和转化工作(samples目录中的例子全部使用了ant进行编译和转化),所以运行态需要ant工具支持。在http://ant.apache.org下载一个1.62版的ant安装包(1.7的经过试验也能用),解压到固定目录。并将此目录的bin目录加入注册表的系统路径中。解压ant-task包到JCDK的子目录C:\java_card_kit-2_2_2\ant-tasks中,对应会有两个子目录C:\java_card_kit-2_2_2\ant-tasks\docs 和 C:\java_card_kit-2_2_2\ant-tasks\lib来存储文档和任务的jar包。

到目前为止,开发环境配置就完成了,让我们到samples子目录下去试验一下。

到simples目录,运行build_samples.bat,将会自动的调用ant来执行build_samples.xml中的ant任务。

...........................

<!--   Compile sources -->        
<target name="compile_samples" description="compile sample classes" >
     <javac debug="yes" destdir="${CL_DIR}" optimize="no" srcdir="${source_home}">
        <classpath refid="classpath"/>
      </javac>
</target>


<!--  Conversion Targets -->    
<target name="convert_helloworld" description="converts HelloWorld sample"> 
    <convert
        dir="${CL_DIR}"
        Configfile="${source_home}/com/sun/javacard/samples/HelloWorld/HelloWorld.opt">
        <classpath refid="classpath"/>
    </convert>
</target>

可以看到,任务的主要task就是 javac 和 convert,这两个task对应了JDK和JCDK的主要工作。

JDK的编译器javac将java源代码编译成class字节码,而JCDK的转化器converter将字节码进一步转化为卡内结构CAP,以及相应的一些辅助文件。


在创建和编译javacard工程的时候,可以有命令行的方式,或者用ant的方式。

当前java的主流IDE是eclipse,我们有没有可能像J2SE/J2EE那样写完代码就编译和调试呢?国外有雷锋同志已经做了这个plugin,可以在我的空间下载:

http://download.csdn.net/source/3570039

http://eclipse-jcde.sourceforge.net 有原作者最新版插件下载和安装用户手册,我就不转发了。


另外,JCOP有自己的eclipse插件,预置jdk,jcdk 2.1和GP 2.1,拥有基于GP的安全域管理和应用下载功能。是个快速开发不错的选择。需要注意的是,JCOP对converter在不违背JCVM中格式规定的前提下,做了自己的优化。虽然不影响运行,但是和sun的JCDK转化出来的CAP可能不尽相同。这个插件现在已经不是免费的了,可以到我的空间下载破解版的:

http://download.csdn.net/source/3568630

安装好eclipse,将com.ibm.bluez.jcop.eclipse_3.1.1.b安装到eclipse的plugins下,待激活。

激活方法:
在eclipse的WorkSpace下,有“.metadata\.plugins\org.eclipse.core.runtime\.settings”目录,
在这个目录下,建立一个文件,命名为“com.ibm.bluez.jcop.eclipse.prefs”,文件内容如下:
com.ibm.bluez.jcop.eclipse.views.bytecode.weights.1=333
com.ibm.bluez.jcop.eclipse.views.bytecode.weights.0=666
eclipse.preferences.version=1
com.ibm.bluez.jcop.eclipse.views.shell.trace=true
com.ibm.bluez.jcop.eclipse.token=23cb832f9bc9c8bffe21d53e8f02e5bc
这就完成了,如果你要更换WorkSpace,将上述文件复制过去就ok了。

至于这两个插件怎么用,鉴于本人实在是懒得抓图,上传图片,自己摸索一下吧。

这篇关于(JavaCard) 技术入门 2 -- 搭建JCDK开发环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742891

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加