Sun Java Wireless Toolkit for CLDC 用户指南
|
|
本附录介绍如何通过命令行运行 Sun JavaTM Wireless Toolkit for CLDC,并详细说明生成和运行应用程序所需执行的步骤。本附录还介绍称为 MEKeyTool 的 Sun JavaTM Wireless Toolkit for CLDC 证书管理器实用程序,以及称为 JadTool(Java 应用程序描述符工具)的 MIDlet 签名实用程序。
B.1 先决条件
通过命令行生成和运行应用程序之前,请验证 Java SE 软件开发工具包的版本是否不低于 1.4.2。请确保 jar 命令位于路径中。要查看开发工具包的版本,请运行 jar 命令,然后在命令行中运行 java -version。
有关更多示例,请参见位于演示应用程序 bin 目录下的文件 build.bat 和 run.bat。可以在以下位置找到这些文件:
对于 Windows 系统:
|
toolkit\apps\demo\bin
|
对于 Linux 系统:
|
toolkit/apps/demo/bin
|
toolkit 是 Sun JavaTM Wireless Toolkit for CLDC 的安装目录,demo 是其中一个演示应用程序的名称。
B.2 开发周期
有关开发 MIDP 应用程序的完整说明,请参见第 2 章。本节介绍如何从命令行中完成开发周期的各个步骤。
B.2.1 生成
在用户界面中,生成项目只需一步。但实际上需要执行两个步骤。首先,将 Java 源文件编译到 Java 类文件中。接下来将预校验这些类文件,以确定其是否已为 CLDC KVM 做好准备。
使用 Java SE 开发工具包中的 javac 编译器编译 Java 源文件。可以使用现有的 Sun JavaTM Wireless Toolkit for CLDC 项目目录结构。用户需使用 -bootclasspath 选项通知编译器要使用 MIDP API,并使用 -d 选项通知编译器放置编译完的类文件的位置。
以下示例说明如何编译 MIDP 2.0 应用程序,即从 src 目录下取得源文件,然后将类文件放置在 tmpclasses 目录下。为了清晰起见,进行换行显示。
Windows
javac
-bootclasspath ..\..\lib\cldcapi10.jar;..\..\lib\midpapi20.jar
-d tmpclasses
src\*.java
Linux
javac
-bootclasspath ../../lib/cldcapi10.jar;../../lib/midpapi20.jar
-d tmpclasses
src/*.java
如果要使用工具包支持的可选 API,请将这些 API 的 JAR 文件添加到 -bootclasspath 选项中。
有关 javac 的更多信息,请参阅 Java SE 文档。
下一步是预校验类文件。Sun JavaTM Wireless Toolkit for CLDC 的 bin 目录下,有一个名为 preverify 的便利实用程序。预校验命令的语法如下:
preverify [options] files | directories
其中某些选项如下:
-classpath classpath
指定装入类的目录或 JAR 文件(以分号分隔列表的形式提供)。
-d output-directory
指定输出类的目标目录。该目录必须在预校验前就已存在。如果不使用该选项,预校验器会将类置于名为 output 的目录下。
请按照示例进行编译,使用以下命令验证已编译的类文件。与前面一样,为了清晰起见,进行换行显示。
Windows
preverify
-classpath ..\..\lib\cldcapi10.jar;..\..\lib\midpapi20.jar
-d classes
tmpclasses
Linux
preverify
-classpath ../../lib/cldcapi10.jar;../../lib/midpapi20.jar
-d classes
tmpclasses
执行该命令后,会将预校验的类文件置于 classes 目录下。如果应用程序使用的是 WMA、MMAPI 或其他版本的 CLDC 或 MIDP,请确保在类路径中包含相关的 .jar 文件。
B.2.2 打包
要将 MIDlet 套件打包,必须创建清单文件、应用程序 JAR 文件,最后还要有一个 MIDlet 套件描述符。
创建包含 MIDP 规范中所指定的相应属性的清单文件。可以使用任何文本编辑器创建清单文件。清单可能包含下列内容,例如:
MIDlet-1: My MIDlet, MyMIDlet.png, MyMIDlet
MIDlet-Name: MyMIDlet
MIDlet-Vendor: My Organization
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC -1.0
MicroEdition-Profile: MIDP -2.0
创建包含清单文件以及套件的类和资源文件的 JAR 文件。要创建 JAR 文件,请使用 Java SE 软件开发工具包附带的 jar 工具。语法如下:
jar cfm file manifest -C class-directory . -C resource-directory .
参数如下:
- file — 要创建的 JAR 文件。
- manifest — MIDlet 的清单文件。
- class-directory — 包含应用程序类的目录。
- resource-directory — 包含应用程序资源的目录。
例如,要创建名为 MyApp.jar 的 JAR 文件(此文件的类位于 classes 目录下,资源位于 res 目录下),请使用以下命令:
jar cfm MyApp.jar MANIFEST.MF -C classes. -C res .
创建包含 MIDP 规范中所指定的相应属性的JAD 文件。可以使用任何文本编辑器创建 JAD 文件。该文件的扩展名必须为 .jad。
注 - 用户需要将 MIDlet-Jar-Size 条目设置为在上一步骤中创建的 JAR 文件的大小。
|
例如,JAD 文件可能具有以下内容:
MIDlet-Name: MyMIDlet
MIDlet-Vendor: My Organization
MIDlet-Version: 1.0
MIDlet-Jar-URL: MyApp.jar
MIDlet-Jar-Size: 24601
B.2.3 运行
可以通过命令行运行仿真器。Sun JavaTM Wireless Toolkit for CLDC 的 bin 目录包含 emulator 命令。emulator 命令的语法如下:
emulator options
常规选项如下:
- -help — 显示有效选项列表。
- -version — 显示仿真器的版本信息。
- -Xquery — 按标准输出流方式打印仿真器样机信息并立即退出。这些信息包括样机名称、屏幕大小以及其他功能。
专门用于运行 MIDlet 套件的选项如下:
- -Xdevice:skin-name — 使用给定的样机名称在仿真器上运行应用程序。有关样机名称列表,请参见第 4.1 节“仿真器样机”。
- -Xdescriptor:jad-file — 使用给定的 JAD 文件在本地运行应用程序。
- -classpath classpath — 指定运行应用程序所需的库的类路径。请在从本地运行应用程序时使用此选项。
- -Dcom.sun.midp.io.http.proxy — 运行时设置 HTTP 和 HTTPS 代理服务器。例如:
-Dcom.sun.midp.io.http.proxy=proxy-host:proxy-port
- -Dcom.sun.midp.midlet.platformRequestCommand — 指定应用程序呼叫 URL 时要使用的浏览器。例如:
-Dcom.sun.midp.midlet.platformRequestCommand=browser
样例呼叫可能类似于:
emulator -Dcom.sun.midp.midlet.platformRequestCommand=firefox -Xjam:install=URL-to-app-using-platformRequest-method
如果希望每次均使用相同的浏览器,则可以将以下行添加到 toolkit/lib/system.config:
com.sun.midp.midlet.platformRequestCommand: 浏览器
Windows:在 Windows 中,如果未指定此参数,则将使用默认浏览器。
Linux:对于 Linux,则必须指定此参数,因为 Linux 系统通常不具有默认浏览器。如果未指定此参数,则应用程序尝试打开 URL 时,将无任何反应。
- -Xjam:command=application — 使用应用程序管理软件 (Application Management Software, AMS) 远程运行应用程序,以使用 OTA 置备进行运行。如果未使用参数指定应用程序,则会运行图形式 AMS。命令如下:
install=jad-file-url | force | list | storageNames|
将带有指定 JAD 文件的应用程序安装到设备上。
此外
run=[storage-name | storage-number]
运行先前安装的应用程序。可通过应用程序的有效存储名称或存储号码来指定应用程序。
remove=[storage-name | storage-number | all]
删除先前安装的应用程序。可通过应用程序的有效存储名称或存储号码来指定应用程序。如果指定 all,将删除所有先前安装的应用程序。
- transient=jad-file-url — 安装、运行和删除带有指定 JAD 文件的应用程序。如果指定 transient,则会执行安装应用程序,运行该应用程序,然后将其删除这三步。
B.2.4 调试
可以对仿真器使用下列选项来进行调试和追踪。
- -Xverbose:trace-options — 显示追踪输出,如逗号分隔的选项列表所指定的,
如下:
- gc — 追踪垃圾回收
- class — 追踪类装入
- all — 使用所有追踪选项
- -Xdebug — 启用运行时调试。还必须使用 -Xrunjdwp 选项。
- -Xrunjdwp:debug-settings — 启动 Java 调试有线协议会话,如逗号分隔的调试设置列表所指定。还必须使用 -Xdebug 选项。有效的调试设置包括以下内容:
- transport=transport-mechanism — 用来与调试器进行通讯的传输机制。唯一支持的传输机制是 dt_socket。
- address=host:port — 调试器连接的传输地址。可以不必提供 host。如果省略 host,则假定 localhost 为主机。
- server={y|n} — 启动作为服务器的调试代理。调试器必须连接到指定的端口。可能的值为 y 和 n。当前仅支持 y(仿真器必须充当服务器)。
B.3 启动工具包 GUI 组件
Sun JavaTM Wireless Toolkit for CLDC 的组件均可从命令行启动。每个组件均位于工具包的 bin 目录下。
表 B-1 工具包组件命令
命令
|
描述
|
DefaultDevice
|
显示对话框,供用户选择默认仿真器样机
|
ktoolbar
|
启动用户界面。
|
prefs
|
启动工具包首选项
|
utils
|
启动工具包实用程序窗口
|
B.4 设置仿真器首选项
用户可以通过使用 -emulator 命令的 --Xprefs 选项从命令行更改仿真器首选项。格式如下:
-Xprefs:filename
提供作为属性文件的完整路径名的 filename,其值将覆盖首选项对话框中的值。属性文件可以包含下表中描述的属性。
表 B-2 仿真器首选项 属性列表
属性名
|
属性描述和合法值
|
http.version
|
网络配置 > HTTP 版本
值:HTTP/1.1 | HTTP/1.0
|
http.proxyHost
|
网络配置 > HTTP 地址
值:主机名
|
http.proxyPort
|
网络配置 > HTTP 端口
值:整型
|
https.proxyHost
|
网络配置 > HTTPS 地址
值:主机名
|
https.proxyPort
|
网络配置 > HTTPS 端口
值:整型
|
kvem.memory.monitor.enable
|
监视器 > 启用内存监视器
值:true | false
|
kvem.netmon.comm.enable
|
监视器 > 启用 Comm 监视
值:true | false
|
kvem.netmon.datagram.enable
|
监视器 > 启用数据报监视
值:true | false
|
kvem.netmon.http.enable
|
监视器 > 启用 HTTP 监视
值:true | false
|
kvem.netmon.https.enable
|
监视器 > 启用 HTTPS 监视
值:true | false
|
kvem.netmon.socket.enable
|
监视器 > 启用套接字监视
值:true | false
|
kvem.netmon.ssl.enable
|
监视器 > 启用 SSL 监视
值:true | false
|
kvem.profiler.enable
|
监视器 > 启用 Profiling
值:true | false
|
netspeed.bitpersecond
|
性能 > 位/秒组合框
值:整型
|
netspeed.enableSpeedEmulation
|
性能 > 启用网络吞吐量仿真
值:true | false
|
screen.graphicsLatency
|
性能 > 图形图元时延
值:整型
|
screen.refresh.mode
|
性能 > 显示刷新(单选按钮)
值:默认 | 立即 | 定时
|
screen.refresh.rate
|
性能 > 显示刷新(滑块)
值:整型
|
vmspeed.bytecodespermilli
|
性能 > 启用虚拟机速度仿真(复选框)
值:整型
|
vmspeed.enableEmulation
|
性能 > 启用虚拟机速度仿真(滑块)
值:true | false
|
storage.root
|
存储 > 存储根目录
值:字符串(appdb 的相对路径)
|
storage.size
|
存储 > 存储大小
值:整型
|
mm.control.capture
|
MMedia > 音频捕获
值:true | false
|
mm.control.midi
|
MMedia > MIDI 音调
值:true | false
|
mm.control.mixing
|
MMedia > 音频混合
值:true | false
|
mm.control.record
|
MMedia > 音频录音
值:true | false
|
mm.control.volume
|
值:true | false
|
mm.format.midi
|
MMedia > MIDI 格式
值:true | false
|
mm.format.video
|
MMedia > 视频格式
值:true | false
|
mm.format.wav
|
MMedia > WAV 音频格式
值:true | false
|
wma.client.phoneNumber
|
WMA > 下一个仿真器的电话号码
值:整型
|
wma.server.firstAssignedPhoneNumber
|
WMA > 首次指定的电话号码
值:整型
|
wma.server.percentFragmentLoss
|
WMA > % 随机消息片段丢失
值:整型
|
wma.server.deliveryDelayMS
|
WMA > 消息片段发送延迟(毫秒)
值:整型
|
B.5 使用安全功能
通过命令行还可以使用 Sun JavaTM Wireless Toolkit for CLDC 的所有安全功能。用户可以调整仿真器的默认保护域、签名 MIDlet 套件以及管理证书。
B.5.1 更改仿真器的默认保护域
要调整仿真器的默认保护域,请使用 emulator 命令的下列选项:
-Xdomain domain-type
为 MIDlet 套件指定安全域。域类型包括 untrusted、trusted、minimum 和 maximum。
B.5.2 签名 MIDlet 套件
JadTool 是用于根据 MIDP 2.0 规范使用公钥密码学签名 MIDlet 套件的命令行接口。签名 MIDlet 套件是指向 JAD 文件添加签名者证书和 JAR 文件的数字签名的过程。JadTool 还可以签名付费更新 (JPP) 文件。
JadTool 仅使用 Java SE 平台密钥库中的证书和密钥。Java SE 软件提供用于管理 Java SE 平台密钥库的命令行工具 keytool。
JadTool 打包在 JAR 文件中。要运行该工具,请打开命令提示符,将当前目录更改为 toolkit\bin,然后输入以下命令:
java -jar JadTool.jar command
命令如下:
打印 JADTool 的使用指导。
- -addcert -alias alias [-keystore keystore] [-storepass password]
[-certnum number] [-chainnum number] [-encoding encoding] -inputjad | inputjpp input-file -outputjad | outputjpp output-file
将给定密钥库中的密钥对证书添加到 JAD 文件或 JPP 文件中。
- -addjarsig -jarfile jarfile -keystore keystore -alias alias -storepass password -keypass password -inputjad input-jadfile -outputjad output-jadfile
将给定 JAR 文件的数字签名添加到指定的 JAD 文件中。-jarfile 的默认值为 JAD 文件中的 MIDlet-Jar-URL 属性。
- -showcert [([-certnum number] [-chainnum number]) |-all [-encoding encoding] -inputjad filename
显示给定 JAD 文件中的证书列表。
- -addjppsig -alias alias -keypass password [-keystore keystore] [-storepass password] [-encoding encoding] -inputjpp filename -outputjpp filename
将输入 JPP 文件的数字签名添加到指定的输出 JPP 文件中。
默认值如下:
- -encoding — UTF-8
- -jarfile — JAD 文件中的 MIDlet-Jar-URL 属性
- -keystore — %HOMEPATH%\.keystore
- -certnum — 1
- -chainnum — 1
B.5.3 管理证书
MEKeyTool 用于管理证书授权机构 (CA) 的公钥,这在功能上类似于 Java SE SDK 附带的实用程序 keytool。可以使用密钥来增强跨越 SSL 的安全 HTTP 通讯 (HTTPS)。
使用 MEKeyTool 之前,必须首先具有对 Java 加密扩展密钥库的访问权限。可使用 Java SE keytool 实用程序创建一个。
Windows
http://java.sun.com/javase/6/docs/technotes/tools/windows/keytool.html
Linux
http://java.sun.com/javase/6/docs/technotes/tools/solaris/keytool.html
要运行 MEKeyTool,请打开命令提示符,将当前目录更改为 toolkit\bin,然后输入以下命令:
对于 Windows 系统:
|
toolkit\bin\mekeytool.exe -command
|
对于 Linux 系统:
|
toolkit/bin/mekeytool -command
|
接下来会出现命令关键字。请注意,当 MEKeyTool 从安装目录中运行时,默认密钥及您所创建的密钥将位于您的个人目录 workdir\appdb 中。
打印 MEKeyTool 的使用指导。
- -import -alias alias [-keystore JCEkeystore] [-storepass storepass] -domain domain-name
使用给定 Java 加密扩展密钥库口令将给定的 JCE 密钥库中的公钥导入到 ME 密钥库中。默认的 ME 密钥库为 workdir\appdb\_main.mks,默认的 Java 加密扩展密钥库为 user.home\.keystore。
列出 ME 密钥库中的密钥,包括每个密钥的所有者及有效期。ME 密钥库为 workdir\appdb\_main.mks。
- -delete (-owner owner | -number key-number)
从给定的 ME 密钥库中删除指定所有者的密钥。ME 密钥库为 workdir\appdb\_main.mks。
注 - Sun JavaTM Wireless Toolkit for CLDC 包含名为 _main.mks 的 ME 密钥库,该密钥库位于 appdb 子目录下。该密钥库中包含 Java SE SDK 安装中附带的默认 Java SE 平台密钥库中的所有证书。
|
B.6 使用桩模块生成器
移动客户机可使用桩模块生成器访问 Web 服务。wscompile 工具可生成用于 Java API for XML (JAX) RPC 客户机和服务的桩模块、绑定、串行器和 WSDL 文件。该工具读取指定 WSDL 文件、模型文件或编译的服务端点接口的配置文件。桩模块生成器命令的语法如下:
wscompile [options] configuration-files
B.6.1 选项
表 B-3 wscompile 命令的选项
选项
|
描述
|
-d output directory
|
指定存放生成的输出文件的位置
|
-f:features
|
启用给定的功能
|
-features:features
|
与 -f:features 相同
|
-g
|
生成调试信息
|
-gen
|
与 -gen:client 相同
|
-gen:client
|
生成客户机工件(如桩模块等)
|
-httpproxy:host:port
|
指定 HTTP 代理服务器(默认端口为 8080)
|
-import
|
仅生成接口和值类型
|
-model file
|
将内部模型写入给定的文件
|
-O
|
优化已生成的代码
|
-s directory
|
指定存放生成的源文件的位置
|
-verbose
|
输出消息,说明编译器正在执行的操作
|
-version
|
打印版本信息
|
-cldc1.0
|
将 CLDC 版本设置为 1.0(默认值)。浮点型和双精度型变为字符串型。
|
-cldc1.1
|
将 CLDC 版本设置为 1.1(可以是浮点型和双精度型)
|
-cldc1.0info
|
显示所有 CLDC 1.0 信息和警告消息。
|
注 - 必须仅指定一个 -gen 选项。-f 选项要求提供功能的逗号分隔列表。
|
表 B-4 列出 -f 选项所包含的功能(逗号分隔)。wscompile 工具可读取作为输入的 WSDL 文件、已编译的服务端点接口 (Service Endpoint Interface, SEI) 或模型文件。“文件类型”列指出可与某项特定功能一起使用的文件。
表 B-4 wscompile 的命令支持的功能 ( -f )
选项
|
描述
|
文件类型
|
explicitcontext
|
打开显式服务上下文映射
|
WSDL
|
nodatabinding
|
关闭文字编码的数据绑定
|
WSDL
|
noencodedtypes
|
关闭编码类型信息
|
WSDL、SEI、模型
|
nomultirefs
|
关闭对多重引用的支持
|
WSDL、SEI、模型
|
novalidation
|
关闭已导入 WSDL 文档的完整验证
|
WSDL
|
searchschema
|
对模式进行侵入式搜索以查找子类型
|
WSDL
|
serializeinterfaces
|
打开接口类型的直接串行化
|
WSDL、SEI、模型
|
wsi
|
启用 WSI 基本配置文件功能(默认)
|
|
resolveidref
|
解析 xsd:IDREF
|
|
nounwrap
|
不展开。
|
|
示例
wscompile -gen -d generated config.xml
wscompile -gen -f:nounwrap -O -cldc1.1 -d generated config.xml
Sun Java Wireless Toolkit for CLDC 用户指南
|
|
|
版权所有 © 2007, Sun Microsystems, Inc. 保留所有权利