首页 > 技术文章 > 嵌入式开发 > J2ME > 手机J2ME程序开发初步认识

手机J2ME程序开发初步认识

52RD.com 2005年12月23日 吴鹏荣            评论:9条 查看 我来说两句

 

 

 

前言
         JAVA的一个重要特性就是跨平台,它允许程序设计师仅需撰写一次程序代码,便可以在各种不同的平台上执行(例如: windows, linux…),这样的特性所带来的好处是不言可喻的。而这种跨平台的特性对于手机上的应用程序开发更是重要,试着想想,每一家手机厂商都有其自己的作业平台,若是有一家软件公司想要在手机上开发应用程序,那么便需要针对各家手机平台来开发可以在上面执行的应用程序,其工程之浩大可想而知,再加上手机平台不断的推陈出新,若是每次有新的手机出来,软件厂商都必须再为其重新开发一次应用程序,那么便显得有些不切实际。因此,J2ME就在这样的情况下诞生了,手机厂商只要在其作业平台上提供可以执行J2ME的JAVA虚拟机器,便可以执行利用J2ME所开发出来的应用程序,这提高了软件厂商在手机上开发应用程序的意愿。

何谓J2ME
         J2ME (Java 2 Platform, Micro Edition)是Sun Microsystems所发展出来针对一般的消费性小型设备进行程序开发的工具,由于这些设备的种类繁多,并且之间的特性又大不相同,针对这个问题J2ME引入了二种新的概念,分别是Configuration以及Profile,Configuration主要的目的是针对消费性电子产品的网络连结能力、处里器速度,内存容量等特性为之分类。Configuration针对所使用的装置,定义了一些较基本的核心类别函式库,凡是属于该Configuration的装置,其上所附的JAVA虚拟机器应该要支持Configuration中所定义的类别函式。目前J2ME已定义了二种Configuration:

1.

CDC (Connected Device Configuration)
适用于较高文件的消费性电子产品,例如:交互式电视机上盒、网络电话。

2.

CLDC (Connected, Limited Device Configuration)
适用于较低文件的消费性电子产品,例如:手机、PDA。


         另一方面,虽然Configuration已经将消费性电子产品做了简单的分类,但是毕竟各种装置的特性仍然有许多的不同点,例如CLDC虽然包含了手机与PDA,但是手机和PDA的显示能力却不完全相同,PDA的显示屏幕比起手机大的多。因此,J2ME利用Profile再针对各个不同的装置在做更细部的分类,Profile可以说是在Configuration之上定义另一组额外的类别函式。以手机来说,J2ME便为其定义了MIDP (Mobile Information Device Profile),MIDP针对手机定义了适用于手机的类别函式,例如简讯的传送,声音的处理等。

         在本文中,我们讨论的是手机上的J2ME程序开发,因此我们将使用CLDC及MIDP,然而因篇幅有限,我们无法将CLDC与MIDP所定义的函式库一一的作说明,更详细的MIDP的版本及所支持的函式库,读者可以参考J2ME的官方网站:
http://java.sun.com/j2me/

第一个J2ME程序
下载并安装J2ME Wireless Toolkit
         虽然,目前有许多开发程序可以用来开发J2ME的应用程序,但是对于初学者来说,J2ME Wireless Toolkit应该可以算是其中最容易取得的工具(从Sun Microsystems网站上便可以直接下载),因此本文将以J2ME Wireless Toolkit为主。

         在安装J2ME Wireless Toolkit之前必须先安装J2SE,若读者没有安装J2SE,可以自行从Sun Microsystems网站上下载,并依照其指示安装J2SE,若已经安装过J2SE,则可以省略此步骤。

下载J2SE网址
http://java.sun.com/j2se/

         在安装好J2SE之后,便可以安装J2ME Wireless Toolkit,一样从Sun Microsystems下载,在撰写这篇文章时,最新版本为J2ME Wireless Toolkit 2.1,所以本文中将以此为操作版本,然而,本文中所提到的程序代码,亦可正常于之前的版本中执行,只是操作画面会有些许不同,其过程仍是大同小异。

下载J2ME网址
http://java.sun.com/j2me/

         在下载完毕后便可以开始进行安装,首先我们必须指定J2SE的所在路径,本文中的例子,我们将J2SE安装在C:\j2sdk1.4.2_04。


 

         接下来设定J2ME Wireless Toolkit的安装位置,若不想更动则直接使用默认值,直接按Next即可。


         接着设定J2ME Wireless Toolkit,在程序集中的名称。


         最后,安装程序会将刚刚使用者所设定的参数显示在画面中,若一切正确无误,则按Next。


         安装完成。


关于中文化
         在Sun Microsystems的网站上有提供J2ME Wireless Toolkit的中文化套件,但是笔者在一次的程序撰写经验中发现,中文化后的J2ME Wireless Toolkit在有些讯息的显示上不太正确(讯息有被截断的情况),因此笔者认为,若非绝对必要,否则不一定要更新中文化套件,没有更新中文套件并不会影响中文程序的撰写。

第一次激活J2ME Wireless Toolkit
         我们可以在程序集中找到刚刚所安装的J2ME Wireless Toolkit,要激活J2ME Wireless Toolkit请执行 ”程序集->J2ME Wireless Toolkit 2.1->KToolbar”。 KToolbar是J2ME Wireless Toolkit最常使用的工具,它可以用来建立项目、编译项目、以及激活仿真器来执行我们所撰写的应用程序。


         在J2ME Wireless Toolkit中内建四种可供选择的仿真器


         仿真器的操作


简单的J2ME范例程式
建立项目
         在安装好J2ME Wireless Toolkit之后,我们将撰写一个简单的范例程式,以示范如何利用J2ME Wireless Toolkit来撰写手机上的Java程序。

         首先我们建立一个新项目,激活KToolBar,按下New Project(建立新项目)之后,会出现下面的画面,我们必须指定项目的名称以及MIDlet Class的名称,在这里我们要建立的项目名称为MyFirstProject,而MIDlet Class为HelloWorld,当指定完毕之后便可以按下Create Project建立项目。


         在按下”Create Project”(建立项目)之后,会出现一个项目设定画面,我们可以针对我们的项目做一些细部的设定。在这里我们使用默认值及即可,所以直接按”OK”。


         然后我们会看到主控台出现了一些讯息,其主要的内容是告诉我们,刚刚我们所建立的项目,被放置在什么位置。


以文中所建立的项目为例,J2ME Wireless Toolkit为我们建立的相关目录如表中所示:

 项目目录位于

 C:\WTK21\apps\MyFirstProject

 Java原始档

 C:\WTK21\apps\MyFirstProject\src

 应用程序资源

 C:\WTK21\apps\MyFirstProject\res

 应用程序函式库

 C:\WTK21\apps\MyFirstProject\lib


程序代码撰写
        
J2ME Wireless Toolkit已经为我们建立好项目所需的相关档案及目录,接下来我们便可以利用任何我们所喜欢的编辑器来帮助我们编辑程序代码,我在刚刚建立项目时指定了HelloWorld为我们要建立的MIDlet,所以现在我们撰写一个HelloWorld.java,并将它放置在C:\WTK21\apps\MyFirstProject\srca目录中。

HelloWorld.java程序代码内容如下

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {

TextBox text;
private Command enterCommand; // 确定钮
private Command exitCommand; // 离开钮
private Display display; // display代表手机上可显示的装置

/*
HelloWorld的建构子
*/
public HelloWorld() {
display = Display.getDisplay(this);
text = new TextBox("请输入您的大名", "", 256, 0);
enterCommand = new Command("确定", Command.SCREEN, 1);
exitCommand = new Command("离开", Command.SCREEN, 2);
}

/*
程序的起始点,其中设定了二个按钮以及一个用来显示文字的TextBox
*/
public void startApp() {
text.addCommand(enterCommand);
text.addCommand(exitCommand);
text.setCommandListener(this);
display.setCurrent(text);
}

/*
当应用程序被暂停时,此方法会被呼叫
*/
public void pauseApp() {
}

/*
当应用程序被关闭时,此方法会被呼叫
*/
public void destroyApp(boolean unconditional) {
}

/*
当使用者按下确定按钮,或离开按钮时,此方法被呼叫,其中cmd 会
传入是哪一个按钮被使用者按下。确定钮被按下时,程序将显示欢迎
讯息。离开纽被按下时,程序将被关闭。
*/
public void commandAction(Command cmd, Displayable s) {
if (cmd == enterCommand) {
text.setTitle("欢迎来到J2ME的世界");
text.setString("Hi, "+text.getString() +". 很高兴认识你.");
}else if (cmd == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
}


编译项目
        
存盘之后,我们便可以利用J2ME Wireless Toolkit帮我们编译刚刚所撰写的程序,按下Build将刚刚所编辑的应用程序利用J2ME Wireless Toolkit编译,若是没有出现错误讯息则表示编译成功。若是编译的过程中出现错误,则会在主控台中显示相关的错误讯息,使用者必须重新检查并修正程序中的错误,然后重新编译一次。


执行
        
若是编译成功,则可以直接按下Run以执行我们所建立的应用程序,此时J2ME Wireless Toolkit会自动开启所选择的仿真器来执行我们刚刚所写的程序。

执行结果
        
以下我们秀出程序的执行结果
 

步骤一
程序一执行,便出现要求使用者输入姓名的画面。

步骤二
输入姓名之后,按下Menu会出现确定、离开二个选项,利用上下键可以在选单中做选择,这时候请先按下确定。

步骤三
接着会出现欢迎讯息。

步骤四
接着使用者欲结束程序,可按下Menu并选择离开,于是程序便会结束掉。

结语
         本文中简单的介绍了J2ME以及实际下载开发工具并撰写了一个简单的范例程式,希望读这在阅读了这篇文章之后,能够对J2ME在手机上的程序开发有初步的认识,若是文章内容有错误的地方,或是对文章内容有任何疑问,欢迎来信指教或讨论,谢谢。

 

(52RD.com)
读取...
顶一下
 更多J2ME资源 到J2ME论坛讨论
·热门文章 HOT
·功率放大器设计的关键:输出匹配电路...
·SD和MMC记忆卡介面技术
·uClinux下Nor Flash的JFFS2文件系统...
·新手必读:关于Linux,你所不了解的...
·Windows Mobile 5.0 模拟器
·移动终端天线设计技巧
·手机结构设计的一般准则
·智能手机:下一代嵌入式系统的界面
·未来手机功能的重大改进 (英)
·EMI防治技巧与挑战
·诺基压8801 EDGE手机拆解
·天线收发技术、构型设计动向
·Dopod 696上跑Windows Mobile 5.0
·Windows CE 模拟器和远程调试工具
·2006年手机产业发展方向(上)
·提高PA效率来增加手机的通话时间(英)
·Windows CE 3.0 源代码下载
·I²C介面的特性与应用
·手机外观设计新趋势
·GSM小区BCCH频点和BSIC规划设计的探讨
·精彩评论 HOT
·赞助商链接 SUPPORT
·相关文章 CORRELATION
·手机J2ME程序开发初步认识[12-23]
·特别推荐 RECOMMEND
·评  论 COMMENT
9楼 tster 发表于 2008-5-12 2:51
  我是一个新手,这个对我来说还是很有用的,谢谢这位朋友哈!
8楼 seazheng 发表于 2008-1-16 9:37
  good
7楼 caohuaqiao 发表于 2007-7-28 16:10
  黑暗中的一盏灯,谢谢这位朋友
6楼 zydolphin 发表于 2006-7-2 20:53
  我也是啊,看不懂:(
5楼 xiaoju 发表于 2006-6-13 13:41
  我是做硬件的,很想学点这方面的。但是看不懂:(
4楼 匿名 发表于 2006-6-7 17:38
  老师,见到你很高兴!
3楼 tongliangl 发表于 2006-5-18 16:41
  对我这样的初学者来说,很有用啊!
能不能多写点?呵呵,谢谢了!
2楼 ilvan 发表于 2006-4-26 13:53
  那是相当的有用!
1楼 匿名 发表于 2006-1-26 10:40
  good
共有评论9篇 查看所有评论
推荐朋友 打印本页