350 likes | 458 Views
物流信息的确认流程. 开发手机应用软件用于信息的发布和确认 开发信息平台功能用于向手机发送确认信息。. 授课内容. J2ME 开发环境的安装与配置 简单手机应用程序的开发 MIDP 应用程序的开发. 安装开发环境. 在进行 J2ME 程序需要开发的时候,使用的开发工具分为两类: 通用开发工具 —— 适合所有手机的通用工具 ; 专用开发工具 —— 适合某种型号的手机的开发工具,例如 Nokia 。 软件部分 Microsoft Windows XP eclipse 3.2.2 eclipseme 1.6.7
E N D
物流信息的确认流程 • 开发手机应用软件用于信息的发布和确认 • 开发信息平台功能用于向手机发送确认信息。
授课内容 • J2ME开发环境的安装与配置 • 简单手机应用程序的开发 • MIDP应用程序的开发
安装开发环境 • 在进行J2ME程序需要开发的时候,使用的开发工具分为两类: • 通用开发工具——适合所有手机的通用工具; • 专用开发工具——适合某种型号的手机的开发工具,例如Nokia。 • 软件部分 • Microsoft Windows XP • eclipse 3.2.2 • eclipseme 1.6.7 • wtk2.5 (Sun Java Wireless Toolkit 2.5 for CLDC)
安装配置步骤 1.安转Eclipse3.2.2(必须先安装jdk1.5或以上版本)2.安装EclipseMe1.6.7 3.安装WTK2.5 4.测试HelloWorld
配置具体步骤 1.1 安转Eclipse3.2.2把下载到的zip文件解压后直接放到c盘根目录即可,当然,你可以放到你喜欢的任何地方,这里为了描述方便放到c:\eclipse1.2 运行eclipse,如果能正常启动,说明jdk安装正确.
配置具体步骤 1.3 把eclipse1.6.7 解压到一个临时目录中,把目录和文件plugins features site.xml全部copy到eclipse的目录中即可1.4 启动eclipse3.2.2 从菜单 windows->Preferences...进入 在Preferences面板的左边的树状目录中,应该多了一个J2ME项
配置具体步骤 1.5 继续安装WTK2.5 ,把主目录安装到C:\WTK25下,其他的按默认安装就行1.6 修改Eclipse的配置,使其邦定EclipseME框架1.6.1 在eclipse的配置目录configuration中找到配置文件config.ini 1.6.2 用文本编辑器打开,增加一个属性定义osgi.framework.extensions=eclipseme.core.hooks如果该属性已经存在,则把值eclipseme.core.hooks加上 注意:这一行必须加在config.ini的eof=eof前面,不能加到后面。否则,可能会导致Eclipse启动失败。1.6.3 保存config.ini 1.6.4 重新启动 eclipse
配置具体步骤 1.7 修改eclipse的build path 和debug选项1.7.1 把源代码和输出分离开1.7.1.1 从菜单 windows->Preferences...进入1.7.1.2 展开references面板的java项,然后点选 build path 1.7.1.3 默认情况下 "source and outpub folder"项的 "project"为选中,我们修改这个默认设置,把"folders"选中 这样,就可以让eclipse把源代码和输出分离开。
配置具体步骤 1.7.2 修改调试选项的异常挂起设置和超时时间(很重要)1.7.2.1 从菜单 windows->Preferences...进入1.7.2.2 展开references面板的java项,然后点选 debug 1.7.2.3 在Suspend Execution项中,把 "Suspend execution on uncaught exceptions" "Suspend execution on compilation errors"这两项的勾去掉1.7.2.4 在面板的最下面,把 debugger timeout(ms)设置为 15000(这个参数太重要了,一定要记得改)
配置具体步骤 1.8 为eclipseme配置模拟器1.8.1 从菜单 windows->Preferences...进入1.8.2 在references面板左侧的树种,展开 "J2ME" 项1.8.3 选中 Devices Management,点击右边的 "Import..."按钮1.8.4 在弹出的Import Device 面板中,点击按钮"browse...",然后选择WTK的bin目录,确定后,点击" refresh"按钮 就会自动去找到模拟器了。点击“finish”按钮返回。1.8.5 这样,模拟器就配好了,如果需要其他的模拟器,照这样做就可以了。
配置具体步骤 1.8 为eclipseme配置模拟器1.8.1 从菜单 windows->Preferences...进入1.8.2 在references面板左侧的树种,展开 "J2ME" 项1.8.3 选中 Devices Management,点击右边的 "Import..."按钮1.8.4 在弹出的Import Device 面板中,点击按钮"browse...",然后选择WTK的bin目录,确定后,点击" refresh"按钮 就会自动去找到模拟器了。点击“finish”按钮返回。1.8.5 这样,模拟器就配好了,如果需要其他的模拟器,照这样做就可以了。
HelloWorld程序 1.创建J2ME项目 在开发一个J2ME程序时也要首先新建一个项目(工程)所有后续的编码、调试和运行都是在这个工程中进行。在启动Eclipse后,点击"文件"菜单下"新建"菜单弹出的"项目"菜单项。将弹出新建项目向导对话框.
HelloWorld程序 首先需要指定创建的是什么项目,展开J2ME项目,选中J2ME Midlet Suite子项后进入下一步。该向导页(如下所示)用来设置项目名称和项目存放路径。一般取缺省路径即可。 运行程序>
Display类 • Display类 • 在用户界面中,Display提供在移动设备上显示组件的功能,在每个MIDlet应用程序中只有一个Display实例,必须通过Display.getDisplay(MIDlet)方法来获得Display实例,MIDlet获得Display实例后,它将一直占有,直到MIDlet调用destroyApp(boolean)方法。 Display display= Display.getDisplay(MIDlet); • Display可以设置手机当前的显示屏的对象,方法是: Display.set.Current(屏幕对象);
Display类 import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; public class DisplayMidlet extends MIDlet { private Display display; public void startApp() { display = Display.getDisplay(this); ... } ... }
J2ME概述 Sun Microsystems 将 J2ME 定义为“一种以广泛的消费性产品为目标的的高度优化的 Java 运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。” 自从 1999 年 6loper Conference 上声明之后,J2ME 为小型设备带来了 Java 语言的跨平台功能,允许移动无线设备共享应用程序。有了 J2ME,Sun 已经使 Java 平台能够适应集成了或基于小型计算设备月在 JavaOne Deve的用户产品。
J2ME、J2EE、J2SE的比较 • J2SE (The JavaTM 2 Platform, Standard Edition) • 是Java的标准版本,它主要应用于桌面应用程序的编程。 • J2EE (The JavaTM 2 Platform,Enterprise Edition) • 是目前比较流行的多层企业应用技术。 • J2ME (The JavaTM 2 Platform,Micro Edition) • 是当前使用比较多的基于移动设备开发技术。
J2ME的体系结构 • J2ME应用程序的体系结构主要分为四个部分:操作系统、Java虚拟机、CLDC/CDC和MIDP应用程序。
KVM虚拟机 • KVM的名字反映了这些设备的存储量是以千比特倍数来度量的。KVM虚拟机适用于拥有16/32比特的RISC/CISC微处理器或控制器,总的存储器只有160K左右,其中128k用来存放虚拟机和各种库的设备。 • KVM不支持以下的功能: • 不支持浮点数; • 不支持线程组(Thread Groups)和守护线程(Daemon Threads); • 不支持映射(Reflection); • 有限的错误处理机制。
CLDC/CDC • CLDC(Connected limited device configuration,有限连接设备配置):这个配置定义了 Java应用程序接口以及支持手持设备的技术,就像Sun的文档中所描述的那样,"devices that you hold in your hand(你握在手中的设备)"。CLDC是为使用较小的存储容量的设备设计的,用于内存在128到 512K之间的消费电子设备,智能手机、Palm序列手持设备可能是这一领域的设备的最好的例子。 • CLDC中包含: • java.io. • java.lang • java.util • javax.microedition.io
MIDP MIDP(Mobile information devices profile,移动信息设备简表):第一个实现的简表,补充了CLDC并且提供应用程序语义和控件、用户界面、持久存储器、网络和用于移动电话的计时器、双通道呼叫器和其他无线电设备。类似于J2SE中的Applet框架,它提供了基于javax、microedition、midlet包的MIDLet应用程序框架。在MIDP中定义一些APIs,包含: • javax.microedition.lcdui; • javax.microedtion.midlet; • javax.microedition.rms。
MIDLet MIDLet:MIDP应用程序称为 MIDlet,为了创建一个MIDlet,就必须写一个扩展基本 MIDlet类的类。这有点类似常见的Applet或Servlet。MIDlets独有的东西是把多个MIDlet组成一个MIDlet套件的能力。这就允许MIDlet在一个单独的JVM环境中共享资源,比如一个数据库等等。
J2ME中不同简档之间的比较 • 目前有两种比较流行的简档,一种就是本文介绍的MIDP,一种是KJava,这两种简档各有优点。MIDP不依赖任何设备生产厂商,它是一种普遍的工业标准,基于MIDP简档开发的程序可以在任何设备上运行。KJava中的APIs主要是Sun公司特别制定的,KJava主要运行在Palm OS上,KJava有点象J2SE中的AWT,它并不是J2ME中的标准包,并且它的主包是com.sun.kjava。
MIDlet概述 • MIDlet简介 • 移动信息设备简表 (MIDP) 适合类似于蜂窝电话和寻呼机这样的设备。MIDP,就象 KJava一样,同样也建立在 CLDC 之上。MIDP简表提供一种标准的运行时环境,允许在终端用户设备上动态地配置新的应用程序和服务。 • MIDlet是一个Java类,它扩展了javax.microedition-.midlet.MIDlet抽象类。实现startApp()、pauseApp()和destroyApp()方法,这三个方法构成了MIDlet应用程序的生命周期。 • 复习抽象类相关知识。
MIDlet应用程序 • 步骤1:进入开发环境。 • 步骤2:建立工程。 • 步骤3:设置配置。 • 步骤4:添加代码。
Command程序 • import javax.microedition.lcdui.Command; • import javax.microedition.lcdui.CommandListener; • import javax.microedition.lcdui.Display; • import javax.microedition.lcdui.Displayable; • import javax.microedition.lcdui.Form; • import javax.microedition.midlet.MIDlet; • import javax.microedition.midlet.MIDletStateChangeException; • public class aaa extends MIDlet implements CommandListener { • private Display display; • private Form f; • private Command c; • public aaa() { • // TODO Auto-generated constructor stub • display=Display.getDisplay(this); • }
Command程序 protected void destroyApp(boolean arg0) throws MIDletStateChangeException { • // TODO Auto-generated method stub • } • protected void pauseApp() { • // TODO Auto-generated method stub • } • protected void startApp() throws MIDletStateChangeException { • // TODO Auto-generated method stub • f=new Form("J2ME学习"); • f.append("JAVA精品课程"); • c=new Command("确定",Command.SCREEN,1); • f.addCommand(c); • f.setCommandListener(this); • display.setCurrent(f); • } • public void commandAction(Command c,Displayable d) • { • f.append("确定按钮己响应"); • } • }
MIDlet生命周期 Midlet框架提供以下的几个方法,可分别使Midlet进入不同的状态: 活跃:protectedvoid startApp() 暂停:protectedvoid pauseApp() 销毁: protectedvoid destroyApp(boolean arg0)
MIDlet生命周期 运行状态(Active) 当程序成功的调用startApp()方法时,程序将会进入运行状态。startApp()方法可以正常结束,在这种情况下,可能允许MIDlet 运行,也可能会通知MIDP 平台MIDlet 不希望此时运行。为实现后者,有如下几种方法:
MIDlet生命周期 • 如果startApp()方法检测到一个使之终止执行的错误条件,但是它以后可能不再出现(即一个临时错误条件),则需要抛出一个MIDletStateChangeException异常。这将把MIDlet 移回至暂停状态,从而在以后可以再来启动; • 如果startApp()方法检测到一个错误条件,而且不可能恢复(即非临时错误条件),它应当调用其notifyDestroyed()方法; • 最后,MIDlet可能会抛出MIDletStateChangeExcep- tion以外的某个异常,可能是故意为之, 也可能是由于它调用的某个方法抛出了此异常, 而且startApp()方法未捕获到此异常。在这种情况下,则假定出现了一个严重错误,通过调用destroyApp()方法来销毁此MIDlet。
暂停状态(Paused) 当MIDlet应用程序处在初始化时或者处在静止状态时,MIDlet处在暂停状态。处在暂停状态的MIDlet不会占用或者使用任何共享资源。在以下情况时会出现暂停状态: • 加载MIDlet 时,最初是处于暂停状态,这是程序通过默认的构造方法来调用。此时如果程序抛出异常,MIDlet将会有暂停状态马上转入销毁状态,销毁应用程序; • 当应用程序在活动状态时成功调用pauseApp()方法时,MIDlet将会有运行状态马上转入暂停状态;
MIDlet生命周期 • 销毁状态(Destroyed) MIDlet处在销毁状态时,程序将会释放所有的资源,并同时终止运行。在以下情况时,程序会进入销毁状态: • 当MIDlet调用了destroyedApp(false)方法或者MIDlet抛出MIDletStateChangeException异常时,MIDlet将会释放所有资源; • 当MIDlet成功调用了notifyDestroyed()方法时。
MIDlet应用程序的框架 import javax.microedition.midlet.*; class XXX extends MIDlet { 初始化模块; MIDlet生命周期的实现; 其他方法; 事件处理; } startApp() pauseApp() destroyApp( boolean b )