从“傻X”到牛X——基础篇(一)准备工作

[size=medium][b]一、什么是J2ME[/b][/size]
[color=darkred]J2ME[/color]:Java 2 Micro Edition。JAVA的微型版,用其编写的程序可用于安装有KVM的小型设备上。
[color=darkred]KVM[/color]:Java平台上最小的虚拟机,用于CLDC配置的虚拟机。
[color=darkred]CLDC[/color]:Connected Limited Device Configuration,有限连接设备配置。它是JAVA定义的一种规范。CLDC定义的硬件参数是,512KB以下的内存,有限能源供应(一般指电池),有限网络连接,简单用户界面,16或32位处理器。CLDC就是用于满足上述条件的设备上。
我们现在的手机一般都远远超过了上述设备条件。(别拿2000年前的产品和山寨机说事儿。)
所以,很多手机上都配备了[color=darkred]CDC[/color](Connected Device Configuration 连接设备配置),CDC又是怎么会事呢?它同CLDC一样,是一种规范,只不过在硬件上的参数条件都高级CLDC。
CDC的参数为,2MB以上内存,具有网络连接能力,32位或64位处理机。这样配备的手机显然可以运行的游戏,要比CLDC上的强得多。
[color=darkred]MIDP[/color]:它基于CLDC,为我们开发移动设备应用程序提供了一些必要的API。
[color=darkred]MIDlet套件[/color]:由MIDP提供,我们要开发手机游戏,都要基于它。等下用到就知道了。

上面有一堆概念,怕麻烦的同学只需要记住一点,[color=olive]我们开发J2ME应用程序时,主类都要继承MIDlet类[/color]就行了。我们今天的目标是[color=darkblue]写一个能在手机上运行的HelloWorld[/color]。

[size=medium][b]二、开发环境的搭建[/b][/size]
在[url=http://conanwsz.iteye.com/blog/361647]扫盲篇(一)[/url]里,我们已经下载安装了WTK和Eclipse,现在我们要做的就是整合他们,并构建一个基于Eclipse的开发环境。

1.下载[url=http://sourceforge.net/project/showfiles.php?group_id=86829&package_id=90314&release_id=588298]EclipseMe[/url]插件。我认为EclipseMe是目前在Eclipse平台上开发J2ME最好插件。目前最新版本是eclipseme.feature_1.7.9。点击[color=brown]eclipseme.feature_1.7.9_site.zip[/color]进行下载。
2.打开Eclipse,选择Help——Software Updates
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/update.png[/img]
出现一个标题栏为Software Updates Add-ons的对话框。点击右边的Add Site按钮。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/add-on.png[/img]
再点Archive按钮[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/Archive.png[/img]选择刚才下载的[color=brown]eclipseme.feature_1.7.9_site.zip[/color],再点OK。
这时,刚才的Software Updates Add-ons对话框中会多出来一项
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/eclipseme.png[/img]
(上面的图中,由于我已经安过EclipseMe,所以先截图时就已经有这一项了。)

选中EclipseMe这一项,点右上角的Install开始安装。安装完后会要求重启Eclipse。
重启后,我们按Ctrl+N新建,会多出J2ME这一项。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/newJ2ME.png[/img]
别慌,配置还没完,先取消掉。我们还要把WTK整合进来。Window——Preferences。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/perferences.png[/img]
选中左边的J2ME,再填写WTK的安装路径。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/wtkSetup.png[/img]
再设置Device Management,点Import。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/wtkSetup2.png[/img]
查找目录填WTK安装路径下的bin目录,点击Refresh。会出现如下图的四种虚拟手机设备,最后Finish。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/wtkSetup3.png[/img]

到此,我们的J2ME开发环境就搭建好了。现在开始正式进入J2ME HelloWorld的编写。

三、HelloWorld
1.Ctrl+N 新建一个J2ME MIDlet Suite,看清楚,是MIDlet Suite。
2.填入工程名称。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/j2me01.png[/img]
3.选择设备,这里我们选默认的彩屏手机。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/j2me02.png[/img]
4.Finish。
这样,我们一个J2ME的工程就建好了。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/j2me03.png[/img]

现在新建一个J2ME MIDlet。(这次是MIDlet了)
去掉TODO标签,默认代码如下:
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Hello extends MIDlet {

public Hello() {
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}

protected void pauseApp() {
}

protected void startApp() throws MIDletStateChangeException {
}

}

我们可以看出,这就是一个普通的类, 只不过继承父类MIDlet。
destroyApp(),pauseApp(),startApp()是由MIDlet给我们提供的三个抽象方法。
说到这里,我们有必要先了解一下J2ME程序运行的三种状态。
暂停状态(Paused),运行状态(Actived)和终止状态(Destoryed)。
程序运行,首先进入startApp()方法里,此时程序是运行状态。
当有电话来了或人为将游戏暂停时,程序进入pauseApp(),此时程序是暂停状态。
当退出程序时,程序会调用destroyApp(),然后中止。
值得一提的是,程序开始运行时,第一个状态并不是运行状态,而是暂停状态,不过只暂停了很短暂的时间,程序就开始调用startApp(),进入运行状态。

我们现在来写一段HelloWorld的代码。

/**
* javax.microedition.lcdui包 中包含了液晶显示屏用户界面的一些类。
* UI操作少不了它。
*/
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
* 继承了MIDlet的类将成为J2ME应用程序的入口类,
* 入口方法也不在是以前J2SE的main()方法。
*/
public class Hello extends MIDlet {
Form f; //声明一个窗体
Display d; //声明一个显示对象,也可以称为屏幕控制对象吧。

/**
* J2ME程序一定要在构造函数中初始化数据。
* 不要写在startApp()里,因为从暂停状态回到运行状态时会调用startApp()方法
*/
public Hello() {
f = new Form("Hello"); //新建一个标题为Hello的窗体对象
f.append("Hello World"); //在窗体中增加一个"Hello World"字符串
d = Display.getDisplay(this); //获得显示对象
}

protected void startApp() throws MIDletStateChangeException {
/**
* 程序开始运行时,用显示对象的setCurrent()方法,来确定显示哪一个窗体。
* J2ME应用程序不像我们PC上的应用程序可以显示多个窗体,
* J2ME一次只能显示一个窗体。
*/
d.setCurrent(f);
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
System.out.println("Bye bye!!"); //程序退出时,控制台输出"Bye bye!!"
}

protected void pauseApp() {
}
}


我们现在点击运行按钮的下箭头,选择运行设置[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/run1.png[/img]
再选中左边的Wireless Tookit Emulator,点击"新建"按钮,此时,会多出一个"New configuration"的设置。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/run2.png[/img]
选中"New configuration",开始设置,运行。
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/run3.png[/img]
运行效果如下:
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/run4.png[/img]

细心的同学可能发现了,退出程序后,控制台怎么没输出"Bye bye!!"啊?
再好好看看手机模拟器上那个退出按钮,对,那根本就不是正常退出,而是关机键……
那自然是没有触发destroyApp()方法。关于怎样触发,我们下次再讲。不过今天的内容还没完,我们的最终目标是[color=darkblue]让它能在正真的手机上运行[/color],那么,还差什么?当然是能在手机上安装的 .jar 文件。

反键点工程名——J2ME——Create Package.
[img]http://www.blogjava.net/images/blogjava_net/conanwsz/3/package.png[/img]
在工程根目录的deployed目录下就会生成一个J2ME01.jar 有兴趣的同学拿到手机上去试验一下吧。嘿嘿,可是不能正常退出哦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值