`
conanwsz
  • 浏览: 8396 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

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

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

二、开发环境的搭建
扫盲篇(一)里,我们已经下载安装了WTK和Eclipse,现在我们要做的就是整合他们,并构建一个基于Eclipse的开发环境。

1.下载EclipseMe插件。我认为EclipseMe是目前在Eclipse平台上开发J2ME最好插件。目前最新版本是eclipseme.feature_1.7.9。点击eclipseme.feature_1.7.9_site.zip进行下载。
2.打开Eclipse,选择Help——Software Updates

出现一个标题栏为Software Updates Add-ons的对话框。点击右边的Add Site按钮。

再点Archive按钮选择刚才下载的eclipseme.feature_1.7.9_site.zip,再点OK。
这时,刚才的Software Updates Add-ons对话框中会多出来一项

(上面的图中,由于我已经安过EclipseMe,所以先截图时就已经有这一项了。)

选中EclipseMe这一项,点右上角的Install开始安装。安装完后会要求重启Eclipse。
重启后,我们按Ctrl+N新建,会多出J2ME这一项。

别慌,配置还没完,先取消掉。我们还要把WTK整合进来。Window——Preferences。

选中左边的J2ME,再填写WTK的安装路径。

再设置Device Management,点Import。

查找目录填WTK安装路径下的bin目录,点击Refresh。会出现如下图的四种虚拟手机设备,最后Finish。


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

三、HelloWorld
1.Ctrl+N 新建一个J2ME MIDlet Suite,看清楚,是MIDlet Suite。
2.填入工程名称。

3.选择设备,这里我们选默认的彩屏手机。

4.Finish。
这样,我们一个J2ME的工程就建好了。


现在新建一个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() {
	}
}


我们现在点击运行按钮的下箭头,选择运行设置
再选中左边的Wireless Tookit Emulator,点击"新建"按钮,此时,会多出一个"New configuration"的设置。

选中"New configuration",开始设置,运行。

运行效果如下:


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

反键点工程名——J2ME——Create Package.

在工程根目录的deployed目录下就会生成一个J2ME01.jar  有兴趣的同学拿到手机上去试验一下吧。嘿嘿,可是不能正常退出哦。
分享到:
评论
1 楼 qxinghui 2011-03-15  
为什么我总是要执行:

我们现在点击运行按钮的下箭头,选择运行设置
再选中左边的Wireless Tookit Emulator,点击"新建"按钮,此时,会多出一个"New configuration"的设置。

选中"New configuration",开始设置,运行。

这几步呢?


而不是直接在 run as中显示用MIDlet运行

相关推荐

    用js 仿XP 相当的牛X的

    根据提供的文件信息,本文将详细解析“用JS仿XP相当的牛X的”这一主题,主要探讨如何使用JavaScript(简称JS)技术来模仿Windows XP(简称XP)的操作界面与功能特性。 ### 一、理解标题含义 标题中的“用JS仿XP...

    江苏省永丰初级中学七年级英语StarterLesson6Havenicefood测试题无答案牛津译林预备版

    这篇资料是针对七年级英语学习的一份测试题,主要涵盖了单数名词变复数的规则以及一些基础的短语和句子翻译,旨在帮助学生巩固英语基础知识。以下是对这些知识点的详细解析: 一、单数变复数的规则: 1. 一般情况下...

    2020七年级数学下册第八章二元一次方程组综合检测试卷新版新人教版202004092110

    这篇资料主要涉及的是初中数学,特别是七年级下册第八章的内容——二元一次方程组。二元一次方程组是含有两个未知数的一次方程的组合,解这类问题通常采用代入法或加减消元法。下面将详细阐述相关知识点: 1. **...

    最新学前班拼音试卷7.doc

    - 最后一部分涉及到将拼音与实际生活中的物品、动作等相连,如“chū——出”,“shū——书”,帮助孩子将拼音知识应用到实际语言环境中。 通过这样的复习材料,孩子们不仅可以学习和复习基本的拼音知识,还能...

    语文一年级上册期末测试卷(1)(含答案).doc

    这篇文档是针对小学一年级学生的一份语文期末测试卷,涵盖了拼音、汉字书写、词汇、反义词、选词填空、句子组成、阅读理解和创意写作等多个知识点。以下是这些知识点的详细解析: 1. **拼音与汉字匹配**:这部分...

    HttpServer-python.zip

    首先,Python内置了一个简单的HTTP服务器模块——http.server,它是Python 3.x中的标准库。这个模块提供了一个基础的HTTP服务器,可以用来快速展示静态文件或者进行简单的HTTP服务开发。在命令行中,我们只需要一行...

    互联网精准广告定向技术-by牛国柱-20130707.pdf

    #### 一、基础知识篇 **1. HttpHeader之User-Agent** - **定义**: User-Agent(用户代理)是HTTP协议的一部分,属于头部字段的一种,通常用于向请求的网站提供客户端浏览器的信息,如类型、版本、操作系统及版本、...

    五年级语文上学期期中测试卷(1) 苏教版-苏教版小学五年级全册语文试题.doc

    歇后语如“周瑜打黄盖——一个愿打一个愿挨”、“铁杵磨成针——功到自然成”、“八仙过海——各显神通”;古诗如“只在此山中,云深不知处”、“牧童骑黄牛,歌声振林樾”、“一曲高歌一樽酒,一人独钓一江秋”。 ...

    春八年级生物学教学质量过程检测(一)[精选].doc

    5. 同一分类阶元:所有牛都属于同一个纲——哺乳纲,因为它们有共同的特征,如哺乳。 6. 生物区别:一种生物与另一种生物的根本区别通常体现在形态结构和遗传信息上。 7. 不正确的说法:题目中未给出具体选项,但...

    九年级语文下册第一单元1祖国啊我亲爱的祖国预习测试新人教版20200219232

    这篇资料主要涉及的是九年级语文下册中的一篇诗歌学习——《祖国啊,我亲爱的祖国》,作者是我国当代著名女诗人舒婷。这篇诗歌以第一人称的视角展开,抒发了作者对祖国深沉的爱和强烈的历史责任感。 在预习测试中,...

    六年级数学下册毕业复习精华题式与方程习题精编无答案北师大版20210202115

    这篇资料主要涵盖的是小学六年级数学中的核心概念——代数初步知识,包括式与方程的理解和应用。在学习这部分内容时,学生需要掌握如何用含有字母的式子表示数量关系,以及如何解简易方程。 一、式与方程的基础 1. ...

    Java创建二维码的插件

    首先,我们介绍一个常用的Java库——ZXing(Zebra Crossing),它是一个开源的二维码和条形码读写库。ZXing提供了Java API,可以方便地进行二维码的生成与解析。在我们的案例中,这个插件可能就是ZXing的一个封装或...

    高中_高一化学考试试卷(期中).doc

    1. 化学合成:题目提到了1965年中国科学家首次用化学方法合成具有生物活性的物质——结晶牛胰岛素,这是化学合成技术的一个里程碑,展示了化学在生物科学中的应用。 2. 焰色反应:题目中有提到物质的焰色反应为浅紫...

    天津市静海区四校2020_2021学年高一语文上学期12月阶段性检测试题2021010501119

    这篇资料主要涉及的是高中语文阶段的试题,涵盖了汉字读音、错别字、语病辨析、文言文句式及文学常识等多个知识点。以下是详细解析: 1. 汉字读音:试题中考察了汉字的正确读音,如"颤"(chàn)、"隙"(xì)、...

    山东省滨州市博兴县2015_2016学年七年级生物上学期期中试卷含解析新人教版

    这篇资料主要涉及的是初中生物课程的一些基础知识点,涵盖了生物的定义、生物的生长发育、生物灭绝的原因、显微镜的使用以及植物细胞的结构和功能等多个方面。 1. 生物定义:题目中的选项展示了生物的特征,如克隆...

    三年级语文上册第二单元6泥姑娘预习作业无答案冀教版

    这篇资料涉及的是小学三年级语文的学习内容,主要包括了四个部分:6《泥姑娘》、7《巨人的花园》、8《蚕豆花儿》以及9-10两首古诗和一篇《吹糖人》的课文预习作业。下面将详细解释这些课文中的知识点。 6《泥姑娘》...

Global site tag (gtag.js) - Google Analytics