J2ME实验验指导书.doc

上传人:文库蛋蛋多 文档编号:2393690 上传时间:2023-02-17 格式:DOC 页数:63 大小:1.42MB
返回 下载 相关 举报
J2ME实验验指导书.doc_第1页
第1页 / 共63页
J2ME实验验指导书.doc_第2页
第2页 / 共63页
J2ME实验验指导书.doc_第3页
第3页 / 共63页
J2ME实验验指导书.doc_第4页
第4页 / 共63页
J2ME实验验指导书.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《J2ME实验验指导书.doc》由会员分享,可在线阅读,更多相关《J2ME实验验指导书.doc(63页珍藏版)》请在三一办公上搜索。

1、J2ME程序设计-实验指导书实验1:J2ME-Eclipse IDE的安装与配置实验目的:学会基本编程环境的安装与配置实验内容: 按照配置安装步骤,自行练习实验方式:教师指导为辅,学生自己动手为主实验步骤:1、下载安装EclipseME1.5 EclipseME1.5的下载地址: EclipseME1.5目前只有英文版,我已经在图片上把界面中的英文做了相应翻译。将下载下来的EclipseME1.5压缩包解压,解压后会有两个文件夹features和plugins。将两个文件夹内的内容分别拷贝到Eclipse安装目录下的features和plugins目录下。这时启动 Eclipse。2、配置Ec

2、lipseME1.5 在此,我假设你已经安装了WTK。如果没有,请到Sun公司的网站上下载。Eclipse启动后点击窗口-首选项(如图1)。(图1)弹出(图2)显示的首选项对话框。如果EclipseME插件安装成功,则在对话框左侧的树中能够看到J2ME节点。中选择J2ME进行相关配置。Step 1、设置WTK根目录点击左侧树中的“J2ME”,出现如下图界面。这里唯一需要配置的是WTK Root。在这一项中要填入WTK的安装根目录。例如,我的WTK安装在D:WTK22。其余的使用默认即可。值得一提的是Antenna JAR这一项。Antenna JAR不是一个必设项,但是使用Antenna Ja

3、r能够编写Ant文件,轻松打包J2ME程序。(有时间我会介绍如何用Antenna JAR编写打包J2ME程序的Ant脚本。)(图2)Step 2、设备管理点击“Device Management”,出现(图3)配置界面。点击“Browse”,选择WTK安装目录下的bin文件夹。例如我的bin文件夹的路径为D: WTK22bin。然后再单击“Refresh”。插件会自动搜索出可用的设备。(图3)完成上面工作后,可以说你的J2ME环境基本上就搭建好了。你可以在上面新建、编译、测试、打包你的程序了。怎么样简单吧?但是有一个问题,我们没有设置混淆器,不能使用“Create Obfuscated Pac

4、kage”。混淆器对减小Jar包大小,防止程序被反编译很有用,因此很有必要在J2ME开发环境中设置混淆器。(图4)Step 3、设置混淆器Proguard 设置前请先下载Proguard。目前Proguard的最新版本是3.6Beta(4.0正在开发中)。我用的是3.5。你可以在此下载到: EclipseME单击“Obfuscation”,出现下图界面。在“Progurd Root Directory”填入Proguard的安装目录。(图5)好了,这样你的J2ME开发环境就搭建好了,你可以开始用Eclipse进行J2ME开发了。实验2:用命令行环境开发MIDLETS实验目的:学会使用WTK工具

5、开发J2ME程序实验内容: 按照实验步骤,开发一个基于命令行的J2ME程序实验方式:教师指导为辅,学生自己动手为主实验步骤:1 什么是J2ME Wireless ToolkitWTK 的全称是Sun J2ME Wireless Toolkit Sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。使用其中的工具可以开发与 Java Technology for the Wireless Industry (JTWI, JSR 185) 规范兼容的设备上运行的j2me 应用程序。该工具箱包含了完整的生成工具、实用程序以及设备仿真器。到本文写作时为止可以获取有四个版

6、本,分别是1.0.4, 2.0, 2.1和2.2。每个版本都包括英语,日语,简体中文,繁体中文4个语种包。1.0.4版只能够开发MIDP1.0 应用程序。2.0 版只能够开发MIDP2.0 应用程序。2.1版则可以同时开发MIDP1.0、 JTWI(CLDC 1.0, MIDP2.0, WMA1.1)可改用CLDC1.1或加入MMAPI1.1),自定义(自己随机组合Configuration, Profile以及Optional Package)三种环境下的应用程序。2.2版中,WTK全面的支持JTWI规范。具体的说,即MIDP 2.0, CLDC 1.1, WMA 2.0, MMAPI 1.

7、1, Web Services (JSR 172), File and PIM APIs (JSR 75), Bluetooth and OBEX APIs (JSR 82), and 3D Graphics (JSR 184);同时您也可以使用该版本开发面向CLDC1.0 和MIDP1.0的应用程序。系统要求上,WTK2.2至少需要 50MB可用硬盘,128MB系统RAM和800MHZ Pentium III CPU。你可以在sun的官方网站免费下载。WTK2.2 下载链接:WTK是Sun提供的一个开发工具包。目前各大手机厂商往往把WTK经过自身的简化与改装,推出适合自身产品,如SonyEr

8、icsson,Nokia Developers suit等,都属于此种类型;而通过JBuilder, Eclipse等IDE,J2ME开发包工具可以被绑定在这些集成开发环境中,进一步提高开发效率。2 J2ME WTK的内容和目录结构2.1 安装过程在说明WTK文件结构之前,让我们首先把它安装起来。WTK的安装程序与普通程序一样简单,只有一点需要注意,由于WTK自身并没有附带Java的运行环境JDK,所以,在WTK安装之前你需要安装自己的 JDK(我们这里选用的是JDK1.4.2)。WTK会首先自动检测当前系统已有的Java虚拟机,然后显示出当前虚拟机所在路径您在确定无误后,就可以继续了,最后安

9、装成功后,您将得到一个包括多种实用工具的开发包。以下是安装显示的菜单项。2.2 目录结构无论哪个版本的WTK都会包括以下几个目录:appdb目录: RMS数据库信息apps目录: WTK自带的demo程序bin 目录: J2ME开发工具执行文件docs目录: 各种帮助与说明文件lib目录:J2ME程序库,Jar包与控制文件session目录:性能监控保存信息wtklib目录: JWTK主程序与模拟器外观WTK 是用来开发MIDP的,为了让MIDlet可以顺利编译和执行,WTK必须具有CLDC和MIDP的类库,WTK可以帮助我们省去额外安装调试这些类库的时间。而不同版本的WTK包含的程序库内容是

10、不一样的,比如说2.0中包含了midpapi.jar, wma.jar, mmapi.jar,而在2.1中则变为了cldcapi10. jar, cldcapi11.jar, midpapi10.jar, midpapi20.jar, wma.jar以及mmapi.jar;在2.2中,wma.jar又细分为wma11.jar, wma20.jar。如果您在开发中需要某个特定的jar包而当前的WTK版本又没有时,您可以简单把这个jar包拷贝如当前WTK的lib文件夹即可。apps 目录中包括了许多Demo程序,为我们演示了J2ME的一些技术实例,这些往往是很好的学习材料。3 使用J2ME WTK

11、创建工程3.1 建立新项目下面让我们用WTK来创建一个经典的Hello World程序,看看这水有多深。在 WTK的程序列表中运行KToolbar,打开WTK主界面。WTK的标题菜单简单明了的列出了这个工具包的可选功能。单击新建项目,键入新建的项目名和启动MIDlet名,这里的项目是一个MIDlet套件,而MIDlet类名则是这个套件的入口,MIDlet文件名 (也是Java文件的名字)。产生项目以后,会出现项目的设置表,您可以选择当前目标平台,CLDC配置,以及要采用的MIDP可选包。再不需要某个库文件时,请不要选中它,以减少最后程序大小。另外,您还可以指定MIDlet的属性,这些设置将成为

12、JAD,即J2ME程序的描述信息文档。我们的Hello World目前不需要其它的附加设置,于是采用默认,确定之后,控制台信息提示建立成功。WTK产生项目后,不同类型的资源有着相对固定的存放位置。Java源文件被放在apps目录下Hello Worldsrc下,相关程序资源文件(图片,音频)放在Hello Worldres下,应用程序库文件放在Hello Worldlib下,这在WTK中是必须注意的,即便是相对路径,也必须是在该类型目录下建立。项目创建成功后,我们来创建一个 MIDlet文件,MIDlet是J2ME项目文件的入口文件,也是必须的。在Hello Worldsrc目录下创建Hell

13、oWorld.java,采用默认包,注意,此时创建的java程序必须是与我们在创建项目时键入的MIDlet类名一致。在新创建的java文件中输入代码,下文是一个简单的Form程序。/HelloWorld.javaimport javax.microedition.lcdui.*;import javax.microedition.midlet.MIDlet;public class HelloWorld extends MIDlet Display display; public HelloWorld() super(); display = Display.getDisplay(this);

14、 protected void startApp() Form form = new Form(Hello World!); form.append(Welcome to J2ME world!); display.setCurrent(form); protected void pauseApp() protected void destroyApp(boolean arg0) 完成后保存java文件,单击“生成”按钮,由WTK为您进行编译,如果有错误生成,则会在控制台中提示。根据提示信息对 MIDlet文件进行修改,再重新生成,直到编译成功。对编译成功的程序,你可以从“设备”选项中选择 D

15、efaultColorPhone,DefaultGrayPhone或者其它WTK自带的设备模拟器,单击按钮可以看到弹出一个手机模拟器,显示出我们的第一个Hello World程序,如果执行有错,依然会在控制台中给出提示信息。运行成功以后,在 HelloWorld/bin目录下,将会产生一个程序描述文档JAD,它清楚的描述了当前MIDlet的名称与版本,发行人,指定的JAR包名称与大小,支持CLDC与MIDP版本等信息。在进阶开发中,默认的联网字符串,签名私钥等信息也可以保存在这个描述文档中。3.2 开启旧项目当我们下一次重新启动WTK的时候,选择打开项目,WTK会把自身apps目录下的应用项目

16、全部显示出来,包括我们刚刚建立的Hello World,选择“打开项目”后,就能够对apps目录下的MIDlet项目进行开发更改了。4 执行MIDlet、打包和混淆4.1 执行MIDlet除了我们刚刚介绍的在KToolbar中执行一个程序,我们还可以在程序组中直接选择Run MIDP Application, 这是就可以在弹出的对话框中选择其它路径中的JAD程序运行了。当我们直接选择运行时,需要注意两个问题:1. JAD描述文件与其指定的JAR文件在同一个目录下。2. 运行目录路径中不要包含中文。4.2 打包成JARKToolbar的生成功能只能帮我们将源代码编译并预先审核,并不会帮我们产生J

17、AR文件,而我们如果要发布MIDP程序,除了JAD描述文件,JAR 是必须的,这就需要打包。在KToolbar选中项目 包 产生包,可以把整个程序,包括资源文件打包成JAR文件。形成的JAR保存在appsHelloWorldbin目录下。4.3 包混淆在上面的操作中,我们看到,除了“产生包”,另外还有一个“产生混淆包”选项。所谓混淆,是为了防止别人反编译后读取源代码,将程序(.class文件) 进行混淆,经过混淆的Java Byte Code可以增加别人反编译的时间。这里我们使用开源的ProGuard,关于混淆的详细介绍和混淆工具的下载,见本教程的前面的章节。把刚刚获取的ProGuard解压,

18、在解压目录的lib子目录中找到proguard.jar文件,将其拷贝到WTK安装目录的bin下,再执行混淆包。这是我们将会发现appsHelloWorldbin下的JAR大小变小了,反编译后的各个名称也变得毫无意义了。5 WTK中其它值得关注的功能到这里,我们就如何用WTK创建,执行,打包,混淆一个MIDP项目做了比较详细的介绍。除了以上所说各点,WTK(2.2版)还提供诸多实用功能。这些都可以在编辑 偏好中找到。例如,当我们需要监视程序性能的时候,可以选中“启用内存监视器”,在下一次模拟器执行的时候,我们就可读出程序运行时的内存消耗均值,消耗峰值以及具体产生对象的个数和使用情况。除了内存监视

19、,我们还可以执行网络监视,设定存储区大小和堆栈大小,设定安全签名和蓝牙操作属性,以尽可能模拟手机实际运行环境,这些功能在进阶开发中都是非常实用的。注意:虽然WTK为我们提供了各种工具来模拟手机运行环境,但在实际开发中,由于受到手机硬件,网络条件等诸多限制,MIDP的真实性能在不同机器上会出现不同的反应,与WTK中的表现可能差别更大。从菜单中选择“工具集”可以看到更多的实用工具,这些都是开发实用的j2me程序时会频繁使用到的。 实验3:用Eclipse开发MIDLETS实验目的:学会使用Eclipse工具开发J2ME程序实验内容: 按照实验步骤,开发一个基于IDE的J2ME程序实验方式:教师指导

20、为辅,学生自己动手为主实验步骤:1.打开 Eclipse-文件-新建-其他-J2ME MIDlet Suite在J2ME MIDlet Suite-新建J2ME MIDlet2.创建Helloworld.java复制一下代码import javax.microedition.lcdui.Display;import javax.microedition.lcdui.TextBox;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;public c

21、lass Helloworld extends MIDlet /TextBox类对应文本框,用于控制文本的输入,并显示输入public TextBox textbox;public Helloworld() super();protected void destroyApp(boolean arg0) throws MIDletStateChangeException / 当程序结束时,系统调用该方法protected void pauseApp() / 当程序暂停时,系统调用该方法protected void startApp() throws MIDletStateChangeExcept

22、ion / 新建一个名为“测试程序”的文本框,文本框内默认输入“Hello World”, / 参数20表示允许输入的字符个数, 参数0表示没有特殊的输入限制 textbox = new TextBox(雨季醉清风测试程序, Hello手机软件编程!梦想起飞的地方!, 20, 0); /调用自己填写的MyAdd接口。 MyAdd();/自己加入的新接口public void MyAdd() / 将textbox设为屏幕当前显示的对象 Display.getDisplay(this).setCurrent(textbox);运行配置控制台信息运行结果实验4:使用Ant管理器管理项目实验目的:学会

23、使用Ant管理工具管理J2ME项目实验内容: 按照实验步骤,开发一个基于Ant的J2ME工程实验方式:教师指导为辅,学生自己动手为主实验步骤:Antenna与j2me打包 众所周知,j2me平台受限于各厂商对KVM的实现不同。此外,由于不同终端性能的差别,j2me开发中的 机型适配是相当繁琐的工作。当然,对于该难题,有很多种解决方案。例如,可以使用j2mepolish,这里主要讨论如何使用antenna来解决这个问题。 Antenna介绍 Antenna是基于ant的j2me开发工具。可以使用antenna对j2me程序进行 编译、校验、打包、混淆等,甚至可以通过antenna所定义的task

24、,运行已经打包完成的jar;还可以将打包完成jad和jar部署到OTA服务器上。以上功能,只是对ant的扩展,在我以前的文章使用Ant对j2me程序打包也讨论。其实,以上所说的功能,直接使用ant也能实现,只是antenna对这些task进行了扩展,使得对j2me程序的打包过程更加的傻瓜话罢了。貌似,话说到这里有些自相矛盾了,既然这些功能ant都能实现,还介绍antenna干嘛呢?其实,本人最推崇antenna的,不仅是它对j2me打包过程的简化,而且特别赞赏它对预处理的支持。除此之外,antenna的预处理,结合了j2mepolish所提供的device.xml数据库,就是说,我们也可以像在

25、j2mepolish中那样,对源程序进行相关的处理,以达到多机型时配的要求。 Antenna中的预处理 Antenna中的预处理原来与j2mepolish等支持预处理的软件一致,都是在编译之前,对代码中定义的预处理脚本进行处理,并生成符合脚本定义规则的代码。 在antenna中,通过“wtkpreprocess”task来进行预处理。关于预处理脚本的定义,请参考antenna自带doc中的wtkpreprocess.html。此外,本文讨论的preprocessor是指新版的preprocessor,即version=2,原来的预处理机制不在本文讨论范围之内。 下面举例说明,如何通过在代码中定

26、义脚本获取终端相关信息,类似于使用J2mePolish的build和preprocess功能一文中的例子,感兴趣的朋友可以结合起来学习。Task定义如下:xml 代码 其中,device为制定的机型型号,而printsymbols用于标示,是否在处理过程,将所有的标记打印出来。出于学习和调试目的,最好设置为true 源代码片断:java 代码public class MyCanvas /#if nokia-uiJavaPackage /# extends com.nokia.mid.ui.FullCanvas /#else extends Canvas /#endif /#ifdef key.

27、LeftSoftKey /#expand public final static int KEY_SOFT_LEFT = %key.LeftSoftKey%; /#else public final static int KEY_SOFT_LEFT = 6; /#endif /#ifdef key.RightSoftKey /#expand public final static int KEY_SOFT_RIGHT = %key.RightSoftKey%; /#else public final static int KEY_SOFT_RIGHT = 7; /#endif int scre

28、enWidth = getWidth(); int screenHeight = getHeight(); public MyCanvas() / #if !(nokia-uiJavaPackage) /# setFullScreenMode(true); /#endif protected void paint (Graphics g) /#ifdef ScreenSize /#expand String screensize = %ScreenSize%; /#else String screensize = 128x128; /#endif g.setColor(0); g.fillRe

29、ct(0, 0, screenWidth, screenHeight); g.setColor(255,255,255); g.drawString(screensize, screenWidth/2, screenHeight/2, 0); 如此一来,就可以通过antenna中的预处理机制,解决多机型之间,键值不同,屏幕大小不同,扩展API不同等问题。 注意,device.xml中,有些数据并没有安全定义。例如,各终端的导航键值就没有定义。可自行添加到device.xml中,然后覆盖原来的antenna包中的device.xml即可。 目录结构定义 在打包过程中,对整个工程的目录设置如下,具

30、体体现在build.xml中src 源码目录res资源目录build -classes 编译后的class文件以及从res复制过来的资源文件 -deployedjar和jad文件dist预处理后的java文件Ant脚本 按照以上分析,build.xml文件定义如下:xml 代码 target target target Starting compileecho build from all the $dir.src to $dir.classesecho wtkbuild target copy wtkjad wtkpackage target 注意:如果是在Eclipse中使用ant 来运行

31、build.xml,请注意ant_home路径的设置,且确认ant_homebin目录下存在antenna包。 软件版本 apache-ant-1.7.0antenna-bin-0.9.15-beta.jar实验 5:了解J2ME MIDlet程序结构实验目的:了解J2ME MIDlet的程序结构及生命周期实验内容: 按照实验步骤,开发一个简单的MIDlet实验方式:教师指导为辅,学生自己动手为主实验步骤:JAM JAM(Java应用管理器)。Java应用管理器是管理Java 应用的机制。JAM的规范主要由目标环境决定,与Java规范无关。 JAM管理应用在手机上的生命周期,其功能包括:鉴定概要、解析JAD(应用描述文件)、应用安装、应用更新、应用列表、应用执行。 JAM还管理JAR文件和JAD文件。JAR是Java应用档案文件,JAD是Java应用描述文件。此外,JAM还有管理Java虚拟机的功能。 - JAR和JAD Jad(Java application descriptor)是java应用程序的描述性文件,它所表述的内容很多,比如游戏提供商、游戏的版本号、游戏文件的大小等等,当然还有jar的地址。 Jar是一个压缩的文件,在文件中包含了运

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号