J2ME编程之Nokia 7210配置篇

2/11/2004来源:移动短信技术人气:39500

  一、引言

  最近有朋友推荐能否写一些有关J2ME编程方面的文章。心想最近正好有心把自己工作所学整理一下,那天又在网上看到有人询问这方面的教程,于是便答应了,既能把心中所学系统地归纳一下,也希望能给一起爱好和学习J2ME的朋友和同道们一点借鉴,只是不足之处,还望包涵包涵!

  二、J2ME介绍

  J2ME, 简称java 2平台,袖珍版(Java 2 Platform,Micro Edition (J2ME)),是sun公司在J2SE和J2EE之后,致力于消费产品和嵌入式设备的最佳解决方案。J2ME将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机); 另外一种是运算能力相对较佳、并请在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机上盒(set-top box))。因为这两种区分,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中; 而另外一种装置则规范为Connected Device Configuration(CDC)规格。也就是说,J2ME先把所有的嵌入式装置利用configuration的概念区隔成两种抽象的型态。MIDP 层,移动信息设备框架(Mobile Information Device PRofile(MIDP)),是一个 Java API 集合,它处理诸如用户界面、持久存储和联网这样的问题。J2ME CLDC的先决条件是一个紧缩的JVM,称为K 虚拟机(K Virtual Machine(KVM))。KVM是为小存储器、资源受限的网络连接设备设计的。

  三、发展趋势

  在我们今天的生活中,个性化的智能信息用品已经是必需品。这些用品包括移动电话、双向寻呼机、智能卡、个人电脑记事本(personal organizer)和掌上电脑(palmtop)。它们的趋势是成为目的特定的、资源有限的网络连接设备,而不是我们迄今已知的通用台式机。专门满足这一巨大的消费空间,Java 2平台袖珍版(J2ME) 提供了极多的创新Java技术。而其应用于手机就是最有说服力的证明之一。Nokia、motorola、siemens等世界各大手机厂商已经开发出多款支持J2ME的手机型号,而市场潜力呢?以中国为例,据调查,中国的移动用户将近3亿(http://arch.pconline.com.cn/news/dxgd/10211/108337.html),如此庞大的基数,可见其强大的需求量。

  四、J2ME开发配置

  在我们对J2ME有了初步的了解之后,心里有个底,就应该开始J2ME程序开发了。工欲善其事,必先利其器,学J2ME还得从配置开始的。不然helloWord都不知道怎么弄的。这里,我主要以nokia模拟器为例,说一下wtk+nokia的配置和jbuilder+mobileset+nokia的配置。

  4.1 nokia模拟器配置:sun J2ME Wireless Toolkit+ nokia 7210

  1、先安装wtk,相关资源可到http://www.cnjm.net上下载,本例假设安装在c:

  2、然后将nokia模拟器安装在wtk的device目录(c:\J2MEwtk\wtklib\devices)

  3、打开wtk目录下的bin目录下的ktoolbar.exe 或者ktoolbar.bat, 就会出现wtk的运行界面(打开ktoolbar.bat的同时会出现一个dos窗口),我们主要使用第二排的六个按钮:

  a New project

  作用: 新建一个J2ME项目,会要求你输入项目名和该项目的MIDlet主类。完成后,你就建立了一个新的J2ME项目啦。你会在apps(c:\J2MEwtk\apps)目录下发现你的新建项目的文件夹。在这个文件夹(你的项目名命名)里,有四个文件夹(bin,lib,res,src)。

  Bin文件:这里用来保存结果文件的目录,有jar,jad和MF文件。

  JAR包文件(JAR File):java 压缩文件包,里面包含该MIDlet项目所需要的所有class文件和资源文件;
描叙文件(Descriptor File,jad文件)文件用来描叙一个MIDlet Suite之基本资料,以及该MIDlet Suite内所包含的MIDlet相关信息,比如类别名称、图示、程序名等的内部文件(存储在jar文件内部);

  清单文件(nifest File,MANIFEST.MF):作用和内容jad文件差不多,都是描叙MIDlet项目的文件,不同在于它不包含于jar文档src 文件夹: 放置java源文件

  res 文件夹: 放置资源文件bin 文件夹: 放置目标文件,如jad、mf、jar文件

  b Open project

  作用:打开一个已经存在的项目,然后你会发现其他如setting、build、run、device选项才由灰色(不可使用)转为黑色。

  c setting

  对一个已经打开的项目,进行一些基本的设置。这些设置信息保存在jad描叙文件中。这些信息对您的项目来说是非常重要的,点击setting按钮,在setting对话框,有四个选项栏:

  required: 这是必须要求填写的信息,有些信息是有wtk自动生成的,不过在实际项目中通常需要你进行修改,这里只简单介绍几个常用的变量:MIDlet-jar-size是指该jar文件的大小; MIDlet-jar-URL是指该jar文件的当前地址,默认就是jar文件名,说明的是它和jad文件是在当前默认同一路径下,以后如果你的MIDlet作品在OTA(Over The Air,意指从网络下载MIDlet程序)服务器上发布的时候,这里你的MIDlet-jar-URL就需要修改了,改成该jar的url形式地址,比如:http://
ota.com.cn/path/yourjar.jar; MIDlet-Name是指该MIDlet项目主类名字。

  MIDlet-vonder一般指向公司名字。值得注意的是在这些信息,是大小写相关的。

  Optional: 这里是一些可选可不选的信息,比如项目的Icon,文字描叙等。

  这里就不作详细的介绍了,自己可查相关资料。

  User defined: 这里是你在程序中自己从外部定义的一些变量,他们是key-value类型的,比如你定义:key:Key007,value:Value007(注意大小写)。那么你在程序中就可以使用MIDlet的getAppProperty("Key007")取得一个。

  String:Value007

  MIDlets: 这里最常用的设置Icon,这个Icon就是在手机游戏菜单出现的图片,如果需要删除或者修改,点击下面的edit按钮和remove按钮即可。

  好,现在就可以用wtk+nokia来做J2ME程序了。用这种配置做程序,对于使用过其他语言编程的人来说,开始还是比较简单实用的。在src目录下新建你的Java类,如果你的J2ME程序使用图片或者其他的数据,就放到res目录下。程序写好后,在device下拉框选择你的模拟器,点击wtk的build按钮,如果没有出现错误,就run,ok,很简单吧!简单的东西,当然有缺陷。这里你可以使用记事本作为编辑器,ultra edit ,或者Jcreator等作为编辑器,我推荐使用Jcreator,它会为你在编译程序中提示错误,当然还需要配置,就是把nokia的包加入编译路径。但是,还有一种集成开发工具可以更方便的编译,debug,运行J2ME程序,就是我马上要说到的Juilder+mobileset。

  4.2 Jbuilder+mobileset+nokia配置

  1、安装好Jbuilder8(这里以Jbuilder8为例,Juilder7也可,Jbuilder9已经集成了mobileset)。

  2、然后安装mobileset3.0,在安装之后,Jbuilder根目录下,你会发现多了一个J2MEwtk文件夹,不用说,这就是sun公司的wtk工具。你会在Files->new,就会看到多了一个micro页面,就对了。

  3、安装nokia 7210模拟器 ,这里建议选择安装如4.1安装在jwtk的device目录下。

  4、配置Jbuilder

  好了,打开Jbuiler,当然要注册啦。首先,在菜单栏上,选择option->configure JDKs,就会发现,左栏窗口有一个J2ME Wireless Toolkit 1..0.4.01,这就是上面说到的wtk啦,ok,选择它。如果你想用它来编译基于nokia 7210模拟器的手机程序,还要在右下那个class大白框中添加nokia编译使用的api包。选择add按钮,在select one or more derictorys对话框下选择你的nokia模拟器的安装目录下的lib包里的classes.zip加上,就ok了。然后在micro页面选择你的模拟器,这里是nokia 7210模拟器。

  5、然后,新建一个project,输入项目名,选择项目的安置地点,就finished。现在Files->new,选择micro页面的MIDlet, 即新建一个MIDlet类。一般来说,在MIDlet向导栏中,输入MIDlet名字和包名,(如果不需要包,则置空)。还有一种方法是,在你的项目目录下将会有src目录,你可以先在src目录下(如果没有,自己建立src目录即可,如果有,拷贝即可)建一个Java文件,作为你这个项目的主类名,即MIDlet.。
注:如果有项目源代码,可以直接拷贝源代码放到src目录就可以了。

  现在来配置一下Jbuilder的如何使用nokia模拟器。

  打开Jbuilder,tools->configure jdk, 在该对话框中,选择jdk为J2ME wireless toolkits,点击OK。
如果你在Files->new, 对话框选择micro新建MIDlet类,Jbuilder会为你自动创建好它的配置。如果你不是这么做,就有必要自己设置了。在Jbuilder里面,选择该项目,打开菜单栏project->project properties,在project properties属性对话框里,在path 页面,JDK一项,点击后面的按钮,选择一个jdk, 这里选择J2ME Wireless Toolkit 1.0.4.01,然后确定; 点击run页面,如果如果是第一次用,就会是空白,这时选择new按钮,出现一个对话框,这是非常重要的一个配置对话款。详细配置说明如下:

//n7210_jme_sdk_v1_0
Name //可以写上你的project name
在run页面,
Type //这里是指明你的项目类型是什么,下拉会看到有一个MIDlet选项,(如果
//你没看到,就是安装mobileset出现了错误,请重新安装。)
如果你选择了MIDlet,就会看到下面的页面发生了变化,这里我们只需要设置两项
Main class  //选择项目的主类,在brower和search都可以找这里选到主类名,如果没有,
//自己在项目的src目录下建立一个主类java文件
Emulator device //就是选择你要使用的模拟器,选择nokia模拟器 

  现在设置已经完毕!你可以测试一下啦!好,接着看。

  4.3 测试配置是否成功

  打开刚才新建的项目,也许你会发现一个displayable.java,我建议你可以把这个Java类删除,只剩下一个主MIDlet类,修改如下:

  1、 删除

private Displayable2 displayable = new Displayable2();

  2、使用以下代码

Form from= new Form("HelloWorld",null);
Display.getDisplay(this).setCurrent(displayable); 

  代替

Display.getDisplay(this).setCurrent(displayable); 

  Ok,就这么简单,编译,运行,就会弹出红色的nokia模拟器界面,最终会出现一个叫HelloWorld的空的Form界面。恭喜你,你成功了!

  注:1、如果你使用jb做J2ME项目,如果需要使用图片或者其他资源,需要把这些资源文件放到classes文件夹中就行了。

  2、如果出现异常或者编译错误,就是你上面的配置出现了错误。请打开你的project properties, 重新检查你的设置,主要看jdk配置,run的配置。

  五、关于J2ME程序的开发

  开发J2ME程序,需要扎实的Java基本功。J2ME本身包括的东西并不是很复杂,它的很多接口和方法都是J2SE的微型版和简化版。它具备简单的继承关系,既有基本的ui高级组件,也有相对自由的Canvas。
它独具特色的是它的微型数据库RMS。所有这些,只需要你用心的了解和研究,都会有收获的。限于篇幅,这里不再详细讲解具体的J2ME编程。

  六、关于J2ME的后话

  其实,个人认为J2ME的程序开发相对来说是比较容易的,只要具备基础的Java知识,然后对J2ME的API熟悉之后,就会很容易上手,而最难的就是开始的学习。包括配置、编译、运行,我在初学的时候深有体会(开始一直是自学)。所以,我写下了这些基本的东西,希望能给同道们一些帮助。

  目前J2ME最流行的就是做手机游戏方面,目前我就是一直从事这方面的工作和研究。但我认为J2ME的前景会非常广泛,并且不会只局限于游戏,移动应用软件也是其一个非常重要的方面。随着科技的发展,kvm也有很大的进步,随之发展的肯定就是J2ME的应用限制的扩展。