您的位置:首页 > 编程语言 > Java开发

亲密接触Java手机程序设计(三):第一个Java手机程序--Hello World

2012-02-01 02:05 543 查看
======================================================

注:本文源代码点此下载

======================================================

亲密接触java手机程序设计(三)
第一个java手机程序--hello world
通过前二部分的学习,想必大家对java手机程序运行平台j2me和开发工具wtk工具包都有一定程度的了解吧。ok,有了这些基础知识,我们就开始踏上开发java手机程序的神秘之旅吧!
1、hello world手机程序
像学习其它编程语言一样,我们先试着编写一个最简单的经典hello world手机版程序。常言道:“麻雀虽小,五脏其全”,hello world程序虽然小的不能解决什么问题,但是它具备有midp程序必需的框架代码。下面我们将重点以hello world为蓝本,介绍midp程序的框架和实现过程。
首先,请启动wtk工具中的ktoolbar程序,点击“新建项目…”,项目名和midp类名都输入为hello。此时,wtk的apps子目录下创建了一个hello目录,请使用打开hello目录下的src子目录,在该目录下创建一个新文件hello.java,使用notepad(或ue等)打开hello.java文件,输入如下代码(注意:每行代码前的行号不要输入,这是方便讲解而加的):
(1)import javax.microedition.midlet.*;
(2)import javax.microedition.lcdui.*;
(3)public class hello extends midlet
{
(4)private display display;
(5)public hello()
{
(6)display = display.getdisplay(this);
}
(7)public void startapp()
{
(8)textbox t = new textbox("first midp programe","hello world!",50,textfield.any);
(9)display.setcurrent(t) ;
}
(10)public void pauseapp()
{ }
(11)public void destroyapp(boolean unconditional)
{ }
}
写完这些代码后,请一定要记住保存。再次切换到ktoolbar程序,点击“生成”按钮,如果你在录入程序代码时未出现错误的话,编译过程一定是成功的,但是如录入有误,编译时会在中间的文本框中显示错误行号和信息。如编译成功,点击“运行”按钮,启动模拟器,选择启动软键(或select键),运行hello world程序,运行结果如图一所示:


图一:hello world程序运行结果
2、解读hello world程序
hello world程序是我们第一个java手机程序,虽然它简单的仅仅只能在手机屏幕上显示hello world字符串,但是它足以激动人心。下面让我们一起认识一下这些代码。
程序代码中的第(1)和(2)行,分别对代码中使用的类库进行预先声明。hello world程序代码中仅调用了javax.microedition.midlet.*和javax.microedition.lcdui.*两个类库中的类,所以只用声明输入这两个类库即可。其中,javax.microedition.midlet.*类库是j2me/midp程序的必须的最基本类库,如果没有输入该库,程序将不能通过编译。javax.microedition.lcdui.*类库主要是提供由clcd层提供的服务,如果midp程序中不调用任何clcd层服务,则可以不输入该类库。但是,在一般应用中大部分midp程序都会调用clcd层提供的基本的界面服务。
从第(3)行开始,为程序的真正实现代码部分,纵观这些代码,它仅实现了一个hello类,该类为根据javax.microedition.midlet.midlet的派生子类。根据j2me/midp2.0规范规定,每个midp程序至少提供一个从midlet类中派生出的子类,并通过基类midlet为midp程序提供基本的kvm底层服务。
该hello类由一个构造函数和三个成员函数组成。其中,构造函数主要完成一些初始化工作,此处用于初始化获取当前屏幕对象display,通过这个屏幕对象才可以处理有关屏幕界面操作,在startapp函数中将使用该对象显示字符串。除了构造函数以外,hello类还提供了startapp、pauseapp和destoryapp三个成员函数,它们在midlet基类中都是声明为抽象函数,所以要求每个midlet子类都必须实现这三个函数。其中这三个函数的作用分别表示启动、停止和消灭midp程序,它们直接影响到midp程序的整个生命周期,后面我们将重点介绍midp程序的生与死。
由于hello world程序仅实现在手机屏幕显示一行字符串,所以我们只在startapp函数中提供了二行显示字符串相关的代码。首先,创建一个textbox对象t,类似于pc机界面上的文本框,其四个构造参数分别表示为标题名、文本、最大长度和允许输入的字符类型。再使用display.setcurrent(t)语句将t对象设置为当前手机屏幕的显示界面,此时整个手机屏幕将被一个textbox对象填充。
3、midp程序生与死
通过对hello world程序代码的解析,我们对midp程序的基本框架有了一个直观的认识。但是事实上,midp程序在j2me平台上的运作稍微复杂一点,下面我们要仔细探讨midp程序的运作细节,也就是midp程序的生命周期。
每个midp程序都必须工作上j2me平台下,也就是说只有你的手机配置有j2me才能运行hello world程序。当用户选择运行midp程序时,工作在后台的jam(java application manager程序管理器)的服务程序将加载该midp程序代码,jam自动查找midp程序中实现的midlet子类,为其创建对象并通过构造函数进行相关初始化操作,至此该midp程序的生命周期就开始了。(图二展示了midp程序的生命周期状态转换关系。)midp程序的生命周期完全由jam控制,也就是说,当midp从一个工作状态变成另外一个工作状态时,jam将会调用相应的状态改变函数,如startapp、pauseapp和destoryapp等。在整个生命周期中,midp程序只可能处于三种状态中的一种,这三种状态分别为启动/激活状态(active)、停止状态(paused)和消灭状态(destroyed)。jam成功加载后,midp程序就进入了停止状态,然后jam将其状态转换为启动状态并调用startapp函数。请大家一定要记住,midp程序的状态的改变只能由jam来完成,应用程序不能直接通过调用状态改变函数,如startapp、pauseapp和destoryapp,来改变状态。当程序进入启动状态时,表示该midp程序真正进入了工作状态,此时程序按照事件过程运行。在程序处于运行过程中,有时由于jam为了某些需要,必须先停止该midp程序的运行,例如手机来了电话、闹铃响了、或者用户切换到其它程序运行等,在这些情况下,为了避免midp程序占用太多系统资源,所以jam就会调用pauseapp函数,将该midp程序切换到停止状态,所以我们应该在pauseapp函数之中放置一些需要释放一些非必需的资源。当相应的任务完成后,jam会再次调用startapp函数,重新切换到启动状态。如果用户按了手机了停止键或通过程序界面退出程序时,jam将调用destoryapp函数,并将程序状态切换到消灭状态,到此该midp程序的生命终止。



图二:midp程序生命周期中工作状态转换图
4、下载hello world程序到手机上
当我们将编译过的midp程序放在模拟器上调试成功之后,接下来就可以将该midp程序下载到你的手机上运行了,这才是我们真正所需要的。一般你可以根据实际情况选择两种方法下载程序到手机,一种是利用手机所提供的传输线,让你的midp程序能够从pc或其他设备下载到手机上;另一种方法是将你的midp程序配置到一个互联网上的web服务器上,再用你的手机通过互联网下载程序。其中第一种方法会根据不同的手机厂商及手机款式各有所不同,所以本文将不能逐一介绍,你可以参考手机说明书。下面我们将重点介绍第二种方法下载程序到手机。
首先,你需要在安装一个web服务器到pc机上,建议下载免费的apache服务器,下载网站为www.apache.com,限于篇幅,apache服务器的安装和配置细节省略,可参考安装和配置文档。现假设你的pc上已经成功了apache,安装目录为c:\apache。
接下来,打开c:\apache\conf\mime.types文件,在该文件text/…中增加一行:
text/vnd.sun.j2me.app-descriptorjad
编辑完该文件一定要记得保存啊。
最后,将hello world程序的bin子目录下的hello.jar和hello.jad拷贝到c:\apache\htdoces\hello目录下即可。如果当前已经启动了apache服务器,需要先停止服务后重新启动服务才能生效。
现在可以打开手机,选择从互联网下载java程序,ip地址填写运行apache服务器的pc的ip地址即可,手机将自动将hello world程序下载到手机上。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: