J2ME开发教程PartI(翻译)
来源:互联网 发布:sql数据库入门教程 编辑:程序博客网 时间:2024/05/08 19:31
——MIDlet开发起步
原文JonathanKnudsenandDanaNourie
February12,2002
Download:HelloMIDlet.java
翻译Ding(wu_yi_ding@163.com)
日期April20,2002
译者说明:本文译自(wireless.java.sun.com网站),其著作权归原著者本人和原文档所在网站所有。译者的翻译未经原著者本人同意。翻译内容仅供自学和参考用,
请读者不要擅自转载、传播本翻译内容。译者Ding对违反上述原则的人不负任何责任。特此说明。
本文是Java[tm]2Platform,MicroEdition(J2ME[tm])技术的入门教程。我们将在文中讲述:如何安装J2ME开发工具;如何编写你的第一个J2ME程序,以及如何编译并在模拟器中运行。本文中将要建立的应用程序被称为MIDlet,它运行在MIDP(MobileInformationDeviceProfile,J2MEspecification中的一种)的参考实现之上。如果你想了解更多的wirelessJava技术的背景,请参考
“IntroductiontoWireless”。
因为运行MIDlet的大多数设备从某种意义上来说都是网络设备,我们将在本教程的第二部分中专门就这一问题进行讨论,在第二部分中,我们会介绍如何建立一个servlet开发环境来编译测试servlet,并最终开发一个MIDlet通过网络连接来访问我们的servlet。
行前准备
MIDP开发的系统要求并不很高,只要你的机子跑得了
Forte[tm]forJava,CommunityEdition即可,ForteforJava是Sun的一个免费的集成开发环境(IDE),可以方便我们开发Java应用程序。
Forte对系统的需求如下:
- 300MHz以上处理器
- 128MbRAM
- 140Mb硬盘空间
MIDP开发软件具有Linux,Solairs,window这三种版本。
J2ME/MIDP开发环境由以下三部分组成:
Java[tm]2StandardEdition(J2SE[tm])SDKversion1.3或更高版本.(请注意:请不要使用beta版的J2SESDK1.4.)
MEwtoolkit/">J2MEWirelessToolkitSun提供用于J2ME无线开发的一个小型的工具包,可以方便的生成和测试MIDlet。
- 任意一种你喜欢的文本编辑器,例如,像是Windows中的笔记本(notepad),或是功能更强大的如
jEdit。
当然,如果你使用ForteforJava的话,也可以使用其内置的编辑器,而且,J2MEWirelessToolkit(J2MEWTK)是可以被集成在Forte中使用的。
安装J2SESDK
在开始其他事情之前,首先你要安装Java2,StandardEditionSoftwareDevelopMEntKit(J2SESDK,也就是以前的JavaDeveloper'sKit,JDK,J2SESDK是现在正式的名称)。请在这里(
http://java.sun.com/j2se/)下载。目前最新版本是1.3.1,请不要使用1.4的beta版。J2SESDK共有Linux,Solaris,和Windows三个版本。
只所以需要安装J2SESDK的原因是:首先,给J2MEWirelessToolkit提供一个Java运行平台。其次,J2MEWTK需要SDK中的编译器和其他工具来编译MIDlet。
当你下载完毕J2SE,你需要进行安装。在windows环境下,直接运行你所下载之文档即可。安装过程中会提示你几个问题,如果你接收默认,J2SE将被安装在目录c:/jdk1.3.1或是c:/jdk1.3.1_01中。然后请对你系统的autoexec.bat文件(Windows95/98中)或系统属性(WindowsNT/2000)中的路径设置做一些调整-把J2SESDK的bin目录添加到路径中去。如,在Windows98中请在autoexec.bat文件中添加下面一行:
path%path%;c:/jdk1.3.1/bin
然后测试一些安装是否正常,请打开一个命令行窗口,(如果你改变的是autoexec.bat文件,请先重启动),键入
java-version
,如果得到类似如下的输出则证明安装正常。
C:/>java-versionjavaversion"1.3.1_01"
Java(TM)2RuntiMEEnvironMEnt,StandardEdition(build1.3.1_01)
JavaHotSpot(TM)ClientVM(build1.3.1_01,mixedmode)
C:/>
安装J2MEWirelessToolkit
下一步安装J2MEWirelessToolkit(J2MEWTK).J2MEWTK方便生成和测试MIDP应用程序的工具包,你可以把它当做一个小型的IDE,可以自动化一些生成MIDP应用相关的任务。
请在链接
MEwtoolkit/">http://java.sun.com/products/j2MEwtoolkit/处下载J2MEWTK,下载完毕后,执行安装文件,安装过程中会自动寻找你的J2SESDK的安装位置;如果此时出现问题,请手工指定J2SESDK的安装位置并确保其正确。下一步,会提示你选择J2MEWTK的运行方式:是“standlone”(即独立运行)还是“integratedwithForteforJava”(与Forte集成)。本文假定J2MEWTK是在standlone模式下运行的。默认情况下J2MEWTK将被安装在c:/J2MEWTK目录下。并在Windows程序菜单上创建了一组快捷方式。
要运行J2MEWTK,请选择KToolbar,单击,你会看到如下所示画面:
OpeningScreenoftheWirelessToolkit
J2MEWTK以项目(project)为开发单位,每个项目的最终完成的结果是一个MIDletsuite。J2MEWTK一次只能打开一个项目。你可以改变当前项目的属性,编译项目,在设备模拟器中运行项目。同时安装的还有几个项目示例,我们后文将会提到。
让我们先建立一个新项目一试身手,点击面板上的NewProject,J2MEWTK提示输入项目名和MIDlet的class文件名。请分别填入
HelloSuite
和HelloMIDlet
,如下图所示:
CreatingaNewProject
当你填毕项目名和class文件名,J2MEWTK这时会给你机会去设置项目的各项设定。这时不要去管他,只需接收默认设定即可。单击OK,完成新项目的创建。这时请注意J2MEWTK的文本输出面板,你会发现一些有用的输出信息,提示你把源程序存放到哪里。在我的机子上,我得到了如下的输出:
Creatingproject"HelloSuite"PlaceJavasourcefilesin"c:/J2MEWTK/apps/HelloSuite/src"
PlaceApplicationresourcefilesin"c:/J2MEWTK/apps/HelloSuite/res"
PlaceApplicationlibraryfilesin"c:/J2MEWTK/apps/HelloSuite/lib"
J2MEWTK把每个项目的文件都存放在apps目录的子目录中.子目录的目录名就是项目的名字。同样,这里我们的项目文件被J2MEWTK创建到c:/J2MEWTK/apps/HelloSuite目录中。每个项目的子目录这种标准的结构,如下图所示:
Projectdirectorystructure
在图中,bin目录包含编译过的MIDletsuite(即一个.jar文件)和MIDletsuite描述文件(即一个.jad文件)。
lib目录可以用来放置你的项目需要的附加的JAR文件。res目录放置图片或是文本文件等资源文件,这些文件会被打包到你的MIDletsuite中。最后,src目录存放你的MIDlet的源程序代码。如果你的代码中使用了Package,src此时为Package机制的起始目录。例如,对于类
users.Root
的源码应该被存放为:src/users/Root.java
当你使用KToolbar编译一个项目后,J2MEWTK又新建了几个子目录,如下图所示:
Projectdirectorystructureafterbuilding
如视,J2MEWTK创建了classes,tmpclasses,和tmplib这三个子目录,对于大多数时候,你可以不用管这些目录的作用,他们是被J2MEWTK内部使用的。
创建一个MIDlet
让我们先写一个简单的MIDlet程序,作为我们MIDP开发的开始。首先我们需要一个文本编辑器,选择什么样的编辑器当然取决于你。
Unix系统下程序员流行使用
emacs
或vi
。某些Windows开发者使用笔记本(textpad),但也许你像更专业一些,我个人喜欢使用
jEdit,它运行在Java2环境中,这样我可以在Windows2000和MacOSX系统上使用相同的编辑器。
当你选定编辑器,请敲入下述代码(你也可以从这里
下载):
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
public classHelloMIDlet
extendsMIDlet
impleMEntsCommandListener {
privateFormmMainForm;
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( booleanunconditional) {}
public void commandAction(Commandc,Displayables) {
notifyDestroyed();
}
}
以文档名为HelloMIDlet.java将源代码保存在本项目的src子目录下。在我的电脑上,该文件被存放为:c:/J2MEwtk/apps/HelloSuite/src/HelloMIDlet.java。
接着,点击KToolbar的Build按键,J2MEWTK将编译你的项目。如果这时有任何编译时错误发生,你会在KToolbar的文本输出区上看到具体的错误输出。修改这些错误直到项目被成功编译。
现在,一切就绪开始测试你的MIDletsuite。点击Run按键。你会发现设备模拟器将会弹出,请参考下图:
HelloSuiterunningontheemulator
模拟器显示当前MIDletsuite中MIDlet列表。在本例中,我们只有唯一的一个MIDlet。我们这里看到名字为HelloSuite,运行的class文件是
HelloMIDlet
。如果你想了解具体的对应关系,请单击KToolbar中的Settings....按键,然后点击MIDlets标签,你会看到该项目中MIDlet的列表。
现在,回到模拟器,点击Launch下面对应的softbutton,开始执行MIDlet。这时屏幕如下图所示。点击Exit退出MIDlet,然后关闭模拟器窗口或是按一下ESC键,来结束我们的测试。
HelloMIDlet
runningontheemulator
这里我们使用的模拟器是DefaultGrayPhone。J2MEWTK还包括其他好几个模拟器:DefaultColorPhone,Motorola_i85s等。你可以使用其他模拟器来测试一下我们的
HelloMIDlet
(注意,你要先安装PalmOSEmulator(POSE),然后MIDPforPalmOS模拟器才可以工作,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有一个bytecodeverifier可以在载入.class文件之前先检查他们。在MIDP世界里,审核(verification)分为两步。首先,类在编译时被预先审核,
然后当设备载入类时进行第二次审核。
这里J2MEWTK又一次简化了我们的工作,当然你也可以使用命令行程序preverify来手工完成这一步骤,但使用J2MEWTK使我们不需考虑这些细节。
最后,MIDlet被打包到MIDletsuite中以便于发布在实际设备上,也就是说把class文件,资源文件打包为一个Jar文件并在该Jar文件的清单(manifest)文件中添加一些额外的信息。
这里,J2MEWTK又一次发挥了它的职责。如果我们想要给MIDletsuite打包,只需要在菜单中选择Project|Package命令,
这样.jad文件和.jar文件就轻而易举的在该项目的bin子目录中生成了。
PartII内容简介
译者:略...
相关资源
J2MEWTK附带的UserGuide包含了许多有用的信息如applicationdevelopMEntcycle,MIDletattributes,如何配置模拟器,如何在命令行下使用J2MEWTK,如何与ForteforJava,集成使用等等。
如果你是MIDP的新手你会发现下述文章会对你有所帮助:
IntroductiontoWireless
IntroductiontoWirelessProgrammingwiththeMIDProfile
AllMIDPartIcles
AbouttheAuthors:JonathanKnudsen
[e-mail] [hoMEpage]istheauthorofseveralbooks,including MobileJava, TheUnofficialGuidetoLEGOMINDSTORMSRobots, LearningJava,and Java2DGraphics.JonathanhaswrittenextensivelyaboutJavaandLegorobots,includingamonthlyonlinecolumncalled Bite-SizeJava,andarticlesforJavaWorld,EXE,NZZFolio,andtheO'ReillyNetwork.JonathanholdsadegreeinMEchanicalengineeringfromPrincetonUniversity.
DanaNourieisaJDCWebdeveloperandwriter.SheenjoysexploringeMErgingJavatechnologieslikeJ2ME,anddevelopingInternetapplicationswithJDBC,servlets,andJavaServerPages[tm]technologies.Inaddition,sheisaddingtotheNew-to-JavaProgrammingCenterandwelcoMEsideasandcomMEntsfrombuddingdevelopers.
关于译者:Ding(wu_yi_ding@163.com),WWW.chinajavaworld.com论坛J2ME版版主,Java研究组织J2ME项目负责人(http://www.javaresearch.org/column.jspcolumn=3)。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- J2ME开发教程PartI(翻译)
- J2ME开发教程PartII(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- Gulp开发教程(翻译)
- 二、J2ME开发环境搭建[J2ME入门开发教程]
- j2me学习五_翻译教程-牧羊犬游戏1
- j2me学习六_翻译教程-牧羊犬游戏2
- j2me学习七_翻译教程-牧羊犬游戏3
- 三、第一个J2ME程序[J2ME入门开发教程]
- J2ME中文教程 7 开发无线网络应用程序
- J2ME移动开发环境配置教程
- J2ME移动开发环境配置教程
- j2me框架教程(1)
- 自定义右键菜单
- 告诉你J2ME是什么
- 让你的图标动起来
- J2ME(CLDC/MIDP)简介
- 多变主页
- J2ME开发教程PartI(翻译)
- 一个带图片的旋转特效
- J2ME开发教程PartII(翻译)
- 教你制作多彩的弹出式说明窗口
- J2ME编程实例之数字键测试
- 检测客户端浏览器是否支持JavaScript和Cookies
- MIDP中多线程例子
- 网页状态栏特效全攻略
- 确保无线J2ME的安全