选择显示字体大小

j2me开发教程

j2me开发教程

——midlet 开发起步

原文 jonathan knudsen and dana nourie
february 12, 2002
download: hellomidlet.java
翻译 ding(
wu_yi_ding@163.com
日期 april 20,2002

译者说明:本文译自(wireless.java.sun.com网站),其著作权归原著者本人和原文档所在网站所有。译者的翻译未经原著者本人同意。翻译内容仅供自学和参考用, 请读者不要擅自转载、传播本翻译内容。译者ding对违反上述原则的人不负任何责任。特此说明。

本文是java[tm] 2 platform, micro edition (j2me[tm])技术的入门教程。我们将在文中讲述:如何安装j2me开发工具;如何编写你的第一个j2me程序,以及如何编译并在模拟器中运行。本文中将要建立的应用程序被称为midlet,它运行在midp(mobile information device profile,j2me specification中的一种)的参考实现之上。如果你想了解更多的wireless java技术的背景,请参考“introduction to wireless”。

因为运行midlet的大多数设备从某种意义上来说都是网络设备,我们将在本教程的第二部分中专门就这一问题进行讨论,在第二部分中,我们会介绍如何建立一个servlet开发环境来编译测试servlet,并最终开发一个midlet通过网络连接来访问我们的servlet

行前准备
midp开发的系统要求并不很高,只要你的机子跑得了forte[tm]for java, community edition即可,forte for java是sun的一个免费的集成开发环境(ide),可以方便我们开发java应用程序。

forte对系统的需求如下:

300 mhz 以上处理器

128 mb ram

140 mb 硬盘空间


midp开发软件具有linux,solairs,window这三种版本。

j2me/midp开发环境由以下三部分组成:

java[tm] 2 standard edition (j2se[tm]) sdk version 1.3 或更高版本. (请注意: 请不要使用beta版的j2se sdk 1.4.)

j2me wireless toolkitsun提供用于j2me无线开发的一个小型的工具包,可以方便的生成和测试midlet。

任意一种你喜欢的文本编辑器,例如,像是windows中的笔记本(notepad),或是功能更强大的如jedit。
当然,如果你使用forte for java的话,也可以使用其内置的编辑器,而且,j2me wireless toolkit (j2mewtk)是可以被集成在forte中使用的。

安装 j2se sdk
在开始其他事情之前,首先你要安装java 2, standard edition software development kit (j2se sdk,也就是以前的java developer%314%159%26s kit ,jdk,j2se sdk是现在正式的名称)。请在这里( http://java.sun.com/j2se/)下载。目前最新版本是1.3.1,请不要使用1.4的beta版。j2se sdk共有linux, solaris,和windows三个版本。

只所以需要安装j2se sdk的原因是:首先,给j2me wireless toolkit提供一个java运行平台。其次,j2mewtk需要sdk中的编译器和其他工具来编译midlet。

当你下载完毕j2se,你需要进行安装。在windows环境下,直接运行你所下载之文档即可。安装过程中会提示你几个问题,如果你接收默认,j2se将被安装在目录c:jdk1.3.1或是c:jdk1.3.1_01中。然后请对你系统的autoexec.bat 文件(windows 95/98中) 或系统属性(windows nt/2000)中的路径设置做一些调整-把j2se sdk的bin目录添加到路径中去。如,在windows98中请在autoexec.bat文件中添加下面一行:

path %path%;c:jdk1.3.1in


然后测试一些安装是否正常,请打开一个命令行窗口,(如果你改变的是autoexec.bat文件,请先重启动),键入java -version,如果得到类似如下的输出则证明安装正常。

c:>java -versionjava version "1.3.1_01"java(tm) 2 runtime environment, standard edition (build 1.3.1_01)java hotspot(tm) client vm (build 1.3.1_01, mixed mode)c:>
安装 j2me wireless toolkit


下一步安装j2me wireless toolkit (j2mewtk). j2mewtk方便生成和测试midp应用程序的工具包,你可以把它当做一个小型的ide,可以自动化一些生成midp应用相关的任务。

请在链接http://java.sun.com/products/j2mewtoolkit/处下载j2mewtk,下载完毕后,执行安装文件,安装过程中会自动寻找你的j2se sdk的安装位置;如果此时出现问题,请手工指定j2se sdk的安装位置并确保其正确。下一步,会提示你选择j2mewtk的运行方式:是“standlone”(即独立运行)还是“integrated with forte for java”(与forte集成)。本文假定j2mewtk是在standlone模式下运行的。默认情况下j2mewtk 将被安装在c:j2mewtk目录下。并在windows程序菜单上创建了一组快捷方式。

要运行j2mewtk,请选择ktoolbar ,单击,你会看到如下所示画面:

opening screen of the wireless toolkit


j2mewtk以项目(project)为开发单位,每个项目的最终完成的结果是一个midlet suite。j2mewtk一次只能打开一个项目。你可以改变当前项目的属性,编译项目,在设备模拟器中运行项目。同时安装的还有几个项目示例,我们后文将会提到。

让我们先建立一个新项目一试身手,点击面板上的new project,j2mewtk 提示输入项目名和midlet的class文件名。请分别填入hellosuite和hellomidlet,如下图所示:

creating a new project


当你填毕项目名和class文件名,j2mewtk这时会给你机会去设置项目的各项设定。这时不要去管他,只需接收默认设定即可。单击ok ,完成新项目的创建。这时请注意j2mewtk的文本输出面板,你会发现一些有用的输出信息,提示你把源程序存放到哪里。在我的机子上,我得到了如下的输出:

creating project "hellosuite"place java source files in "c:j2mewtkappshellosuitesrc"place application resource files in "c:j2mewtkappshellosuite
es"place application library files in "c:j2mewtkappshellosuitelib"

j2mewtk把每个项目的文件都存放在apps目录的子目录中. 子目录的目录名就是项目的名字。同样,这里我们的项目文件被j2mewtk 创建到c:j2mewtkappshellosuite目录中。 每个项目的子目录这种标准的结构,如下图所示:



project directory structure

在图中,bin目录包含编译过的midlet suite (即一个.jar文件)和midlet suite描述文件 (即一个.jad文件)。 lib目录可以用来放置你的项目需要的附加的jar文件。res目录放置图片或是文本文件等资源文件, 这些文件会被打包到你的midlet suite中。最后,src目录存放你的midlet的源程序代码。如果你的代码中使用了package,src此时为package机制的起始目录。例如,对于类users.root 的源码应该被存放为:src/users/root.java

当你使用ktoolbar编译一个项目后, j2mewtk又新建了几个子目录,如下图所示:

project directory structure after building


如视,j2mewtk 创建了classes, tmpclasses, 和 tmplib这三个子目录,对于大多数时候,你可以不用管这些目录的作用,他们是被j2mewtk内部使用的。

创建一个midlet


让我们先写一个简单的midlet程序,作为我们midp开发的开始。首先我们需要一个文本编辑器,选择什么样的编辑器当然取决于你。 unix系统下程序员流行使用emacs 或 vi。某些windows 开发者使用笔记本(textpad), 但也许你像更专业一些,我个人喜欢使用jedit,它运行在java 2环境中,这样我可以在windows 2000和mac os x 系统上使用相同的编辑器。

当你选定编辑器,请敲入下述代码(你也可以从这里下载):

import javax.microedition.lcdui.*;import javax.microedition.midlet.*;public class hellomidletextends midlet implements commandlistener {private form mmainform;public hellomidlet() {mmainform = new form("hellomidlet");mmainform.append(new stringitem(null, "hello, midp!"));mmainform.addcommand(new command("exit", command.exit, 0));mmainform.setcommandlistener(this);}public void startapp() {display.getdisplay(this).setcurrent(mmainform);}public void pauseapp() {}public void destroyapp(boolean unconditional) {}public void commandaction(command c, displayable s) {notifydestroyed();}}
以文档名为hellomidlet.java 将源代码保存在本项目的 src 子目录下。在我的电脑上,该文件被存放为:c:j2mewtkappshellosuitesrchellomidlet.java

接着,点击ktoolbar的build按键,j2mewtk将编译你的项目。如果这时有任何编译时错误发生,你会在ktoolbar的文本输出区上看到具体的错误输出。修改这些错误直到项目被成功编译。

现在,一切就绪开始测试你的midlet suite。点击run按键。你会发现设备模拟器将会弹出,请参考下图:

hellosuite running on the emulator


模拟器显示当前midlet suite中midlet列表。在本例中,我们只有唯一的一个midlet。我们这里看到名字为hellosuite,运行的class 文件是hellomidlet。如果你想了解具体的对应关系,请单击ktoolbar中的settings....按键,然后点击midlets 标签,你会看到该项目中midlet 的列表。

现在,回到模拟器, 点击launch下面对应的soft button,开始执行midlet。这时屏幕如下图所示。点击exit 退出midlet,然后关闭模拟器窗口或是按一下esc键,来结束我们的测试

hellomidlet running on the emulator

这里我们使用的d馄魇?b>defaultgrayphone。j2mewtk 还包括其他好几个模拟器:defaultcolorphone,motorola_i85s等。你可以使用其他模拟器来测试一下我们的hellomidlet ( 注意,你要先安装palm os emulator(pose),然后midp for palmos 模拟器才可以工作,pose可以在这里下载。) 要使用其他的模拟器只需在ktoolbar的device列表框中选择所需设备,然后再次点击run 键即可。

你是不是已经玩腻了hellomidlet,试着运行一下j2mewtk本身附带的示例,你可以试试demos, games, 和 photoalbum 这些简单的示例.

底层一瞥


好,现在我们已经玩了好一会了,让我们坐下来谈谈j2mewtk到底替我们做了那些工作。虽说没有什么复杂的底层机制,但j2mewtk确实替我们做了好几项繁琐的步骤,使得工作只是轻而易举的按几下按键。

首先,当我们按下build 键时发生了什么? j2mewtk 首先找到src目录下所有.java文件并编译他们。然而由于我们的源文件需要在midp 环境下编译而不是通常的j2se 环境,这就使得编译过程有其特殊之处。你可以这样理解,midlet使用的java.lang.system 类是与j2se中相应的api是不同的。 也就是说,当j2mewtk 编译midlet时,使用的是midp版的 java.lang.system类文件。

当然你也可以手工达到同样的效果,即在命令行窗口中使用javac命令并添加-bootclasspath 参数。但使用j2mewtk就显得简单多了。

除了编译外,生成的midp类文件还必须先被预审核(preverified),然后他们才能midp设备上运行。你也许会记起j2se有一个bytecode verifier 可以在载入.class文件之前先检查他们。在midp世界里, 审核(verification)分为两步。首先,类在编译时被预先审核,然后当设备载入类时进行第二次审核。

这里j2mewtk又一次简化了我们的工作,当然你也可以使用命令行程序preverify 来手工完成这一步骤,但使用j2mewtk使我们不需考虑这些细节。

最后,midlet被打包到midlet suite中以便于发布在实际设备上,也就是说把class文件,资源文件打包为一个jar文件并在该jar文件的清单(manifest)文件中添加一些额外的信息。 这里,j2mewtk又一次发挥了它的职责。如果我们想要给midlet suite打包,只需要在菜单中选择project package 命令, 这样.jad 文件和.jar 文件就轻而易举的在该项目的bin 子目录中生成了。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons