(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

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。