一个J2ME作者的开发心得
最后,我在聊一下如何加入第三方提供的包和模拟器,就已Nokia为例,Nokia的官方技术网站中提供了很多的针对与不同设备 手机的开发包(主要包括Nokia 60设备,Nokia 40设备,Nokia 7210,Nokia 3300等)。在安装这些开发包之前,必须先安装一个叫做nds_jme的工具包,它主要是提供了不同的Nokia设备SDK之间的管理和一些特殊的工 具,例如音频代码工具和模拟器的管理工具。采用第三方工具的好处就在于它提供了一些依赖于特定硬件的扩充包,可以让我们开发很多底层所提供的功能,现在我 就已Nokia 60为例来具体的介绍一下第三方的扩充开发包。Series 60 MIDP SDK for Symbian OS是Nokia 提供给他的基于60平台(以Symbian为基础平台,主要的设备是Nokia3560 和Nokia7560)的Java开发工具包,现在主要的版本是1.2版。它所提供的API主要分为以下几个部分:1)MIDP 1.0 API 这是由Sun所定义的标准的Kjava的开发包;2)Mobile Media API 这一部分提供了移动媒体的API接口开发,他主要提供了一个多媒体管理播放的接口协议使得MIDlet能更有效地使用各种媒体类型。这些MIDlets能 够播放几种类型的音频和视频文件,还可以使用照相机来抓取图像;3)Bluetooth API 提供了一个无线传输协议-Bluetooth的编程接口,利用它可以对逻辑链路层L2CAP和服务搜索,通过它与远程设备交换数据;4)Wireless Messaging API 提供了一个接收和发送无线短信息的编程接口;5)Nokia UI API 这是Nokia各种设备包括40,3300等设备所通用的,它主要提供了两个Java开发包,com.nokia.mid.sound和 com.nokia.mid.ui主要提供了对声音和用户界面接口(其中包括了背景灯光,全屏等接口)的编程。其中1)为标准的Kjava的API 2)3)4)为60系统提供的开发资源包 5)是Nokia设备通用的开发包,提供了一套在Nokia通用的开发接口。利用这些当然可以开发出功能强大, 用途广泛的应用程序,但是这也恰恰是以牺牲程序的通用性为代价的。所以我建议在Kjava游戏的开发中,最关键的是控制好它的版本,要充分的考虑通用性和 特殊的平台,我先用标准的API设计游戏的内部逻辑和基本的界面,在版本保存后,在进行下一步的特殊平台API的扩充针对于不同的平台生成不同的系统版 本,这样就可以逐渐设计开发出适应于不同手机平台的Kjava游戏来。
在安装nds_jme的工具包后,就可以安装 nS60_jme_sdk的60系统的开发包了,在安装的路径可以选择WTK\wtklib\devices下,这样就可以和你的WTK系统整合起来了。 启动WTK的KtoolBar后,你就可以从devices下来框中看到60系统的设备,这时你就可以启动60设备来调试你的应用程序了,有一点比较关 键,也就是你每次必须要先把Kjava应用程序打成压缩包后再点击运行来启动模拟器来进行调试应用程序。
好了,到此为止,您应该能过了解到手机开发平台的选择和Kjava的基本配置过程,我们下一部分在介绍如何逐步由策划,设计到开发你的第一个手机游戏全过程了。
我的手机开发也正是从Kjava开始的,下面就让我具体的介绍一下Kjava开发手机游戏的步骤吧。
首 先,就是配置Kjava的开发环境,先从Sun的网站中可以下载到j2sdk(简称JDK),1.3或1.4的版本都可以,还有 j2me_wireless_toolkit1.4(简称WTK)。先按要求安装好JDK,然后再按照规定一步一步的安装WTK,在安装的过程中他会自动 配置JDK的路径和开发的环境。现在在Sun的网站上同时提供了WTK1.4和WTK2.0这两个版本,WTK2.0多提供了几个很有用的开发包(主要是 加密,游戏和媒体控制),但是可惜的是现在支持WTK2.0的手机还是很少,所以我安装的还是WTK1.4。L
其次,在安装好这些开发环境这 后,你就可以进入菜单直接启动KtoolBar了,这是一个Kjava的编译,运行,打包的集成环境,可以利用它来新建项目,打开项目,选择运行的目标模 拟器,编译,运行,打包。这个一个可视化的环境。进入到你的安装目录,你可以看到以下几个主要的文件夹:
appdb:这个文件夹主要是用来存放系统所需要的图片和一些数据库文件的。
apps: 这是系统的工程目录,也是最重要的,里面存放的都是具体的应用程序。其中包括了系统自带的和你来创建的应用程序的原文件(*.java),编译后的文件(*.class),打好的压缩包和相关的配置文件(*.jar,*.jad)以及各种资源等。
bin: 这是系统工作目录,里面是系统的各种工具,是WTK系统运行的核心。
docs: 里面放置了详细的说明文件,用户手册以及API,是学习和开发人员的必读之物。
lib: 放置Kjava开发包的地方。
wtklib: 存放了一些WTK需要用到的资源,其中最重要的是devices目录,这个主要是模拟器配置存放的地方,在这里,你就可以配置你的目标设备的模拟器。
下面让我们打开apps,进入一个工程目录内,既可以看到以下几个各有用处的文件夹:
bin: 在完成程序后,压缩包(*.jar)和配置简表(*.jad)存放的路径。
classes: 编译后,类文件(*.class)存放的路径。
res: 程序的资源文件,主要是图片(*.png)。
src: 程序源代码所存放的地方(*.java)
了 解了这些,我们就可以创建我们自己的应用程序了,首先,在KtoolBar中,创建一个新的项目,我们可以填写项目的名称和Midlet(又是一个奇怪的 东西,Sun在制定Java规范的时候总是喜欢将程序片起名为let,譬如Applet,Servelet,还有Spoilet等,其实看到这些,有编写 java经验的老手都会明白Kjava的结构了,基本上和Applet没有多大的区别。J)在接下去的Setting页面中选择默认设置就可以了,然后你 会发现在apps的目录下多了一个应用程序的目录,你就可以在其中src目录下创建你的应用程序java源文件就可以了。
Kjava的程序结 构和Applet非常相似,他的主文件名称叫做Midlet,是从javax.microedition.midlet 包下派生出来的,是Kjava的主要扩展包之一,定义了整个体系的结构。javax.microedition.lcdui是一个封装了各种界面控件的 包,提供了Kjava在用户接口方面的各种支持。javax.microedition.rms主要提供了数据库的接口而 javax.microedition.io则是提供网络支持的重要途径。这是Kjava所区别于Java的三个主要的扩充包。还有java.io(提供 输入输出流的支持),java.lang(提供语言环境的支持),java.util(提供一些重要的工具支持)这些是最主要的从Java中继承下来的核 心开发包。具体的程序编写过程还请参考WTK自带的帮助和API应用手册。
在scr目录下的应用程序编辑好以后,在WTK选择编译,就可以编译你的应用程序了,编译的步骤和结果会显示在下面的信息框中,如果编译顺利通过的话,就可以点击运行启动模拟器来运行你的应用程序了,OK,一切都是那么的简单。
模拟器是可以通过devices的下来菜单来选择的,wtklib\devices目录下有几种系统缺省自带的模拟器,我们可以通过选择来配置我们程序实际的运行环境。
在 一切都顺利之后,就可以将应用程序打包了,打包的时候可以先配置简档文件,在应用程序中点击Setting就可以配置了,具体的配置方法请参考用户指南, 生成的JAD文件实际上是一份说明的注册文件,在应用程序被网络无线用户下载的时候起到了一个说明文件的作用,在一切配置好以后,点击 project\packag\Create Package的菜单项就可以编译打包了。生成的压缩包(*.jar)被配置文件(*.jad)和放置在apps\应用程序名称\bin目录下。把压缩包 上传到实际的设备中就可以运行了。
综上所述,WTK仅仅只是向你提供了一个可视化的工程管理,编译,运行,打包工具,但是却没有提供编辑的环 境,这样你就可以有很大的自由度去选择,我在编辑中使用的工具是UEdit,它提供给我一个非常简单的编辑和管理源代码的工作环境,提供了强大的编辑功 能,给我的学习开发也带来了很多方便,当然你也可以选用IBM的Eclipse(这也是一个非常好的编辑源代码的免费工具,而且是开源),或者Sun的 SunOne for Mobile 以及Broland的Jbuilder 一切都可以根据自己的爱好去选择。
有些人问起了混淆的 问题,由于JAVA程序是半解释的,他的目标文件是字节码,也就是*.class的形式,导致了他很容易被反编译(我见过很多反编译的工具,做的都相当的 漂亮)。混淆就是打乱程序中所有的变量名称和函数名称,让其他人进行反编译后无法看懂你的源文件,这是一个不可逆的过程,由于修改了变量函数的名称(简单 的说就是把你一个很长的名字缩小到一个字母而已,反正机器又不用去记J)所以在编译的时候也能够起到一些压缩的作用。哦,混淆是需要特定包来完成 的,retroguard可以用在WTK1.4上面,用法非常简单,只需要把解压后的retroguard.jar文件放到WTK\bin目录下就可以 了,在打包的时候仅需要选择下面一项打成混淆包就可以了。但是这样也有一些小问题,这个混淆包在混淆时候似乎不能混淆一些扩充的包(比如Nokia的扩充 API包,这个在下文中会讲到的),这时你就可以考虑使用另一个工具proguard(这个工具WTK1.4并不提供支持)了,这个工具的使用还是比较麻 烦的,我在一篇文章中看到他必须要写一个配置文件,还需要制定特定的目录,然后才能在命令行中启动,呵呵,其实还有一种简单的方法,那就是可以把他集成到 WTK2.0中去,WTK2.0提供了对他的支持,安装的方法和retroguard一模一样。他就可以完成对一些特殊的扩充包进行混淆了。
最 后,我在聊一下如何加入第三方提供的包和模拟器,就已Nokia为例,Nokia的官方技术网站中提供了很多的针对与不同设备手机的开发包(主要包括 Nokia 60设备,Nokia 40设备,Nokia 7210,Nokia 3300等)。在安装这些开发包之前,必须先安装一个叫做nds_jme的工具包,它主要是提供了不同的Nokia设备SDK之间的管理和一些特殊的工 具,例如音频代码工具和模拟器的管理工具。采用第三方工具的好处就在于它提供了一些依赖于特定硬件的扩充包,可以让我们开发很多底层所提供的功能,现在我 就已Nokia 60为例来具体的介绍一下第三方的扩充开发包。Series 60 MIDP SDK for Symbian OS是Nokia 提供给他的基于60平台(以Symbian为基础平台,主要的设备是Nokia3560 和Nokia7560)的Java开发工具包,现在主要的版本是1.2版。它所提供的API主要分为以下几个部分:1)MIDP 1.0 API 这是由Sun所定义的标准的Kjava的开发包;2)Mobile Media API 这一部分提供了移动媒体的API接口开发,他主要提供了一个多媒体管理播放的接口协议使得MIDlet能更有效地使用各种媒体类型。这些MIDlets能 够播放几种类型的音频和视频文件,还可以使用照相机来抓取图像;3)Bluetooth API 提供了一个无线传输协议-Bluetooth的编程接口,利用它可以对逻辑链路层L2CAP和服务搜索,通过它与远程设备交换数据;4)Wireless Messaging API 提供了一个接收和发送无线短信息的编程接口;5)Nokia UI API 这是Nokia各种设备包括40,3300等设备所通用的,它主要提供了两个Java开发包,com.nokia.mid.sound和 com.nokia.mid.ui主要提供了对声音和用户界面接口(其中包括了背景灯光,全屏等接口)的编程。其中1)为标准的Kjava的API 2)3)4)为60系统提供的开发资源包 5)是Nokia设备通用的开发包,提供了一套在Nokia通用的开发接口。利用这些当然可以开发出功能强大, 用途广泛的应用程序,但是这也恰恰是以牺牲程序的通用性为代价的。所以我建议在Kjava游戏的开发中,最关键的是控制好它的版本,要充分的考虑通用性和 特殊的平台,我先用标准的API设计游戏的内部逻辑和基本的界面,在版本保存后,在进行下一步的特殊平台API的扩充针对于不同的平台生成不同的系统版 本,这样就可以逐渐设计开发出适应于不同手机平台的Kjava游戏来。
在安装nds_jme的工具包后,就可以安装 nS60_jme_sdk的60系统的开发包了,在安装的路径可以选择WTK\wtklib\devices下,这样就可以和你的WTK系统整合起来了。 启动WTK的KtoolBar后,你就可以从devices下来框中看到60系统的设备,这时你就可以启动60设备来调试你的应用程序了,有一点比较关 键,也就是你每次必须要先把Kjava应用程序打成压缩包后再点击运行来启动模拟器来进行调试应用程序。
好了,到此为止,您应该能过了解到手机开发平台的选择和Kjava的基本配置过程,我们下一部分在介绍如何逐步由策划,设计到开发你的第一个手机游戏全过程了。