ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:159.11KB ,
资源ID:7777535      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7777535.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(J2ME课程综述.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

J2ME课程综述.docx

1、J2ME课程综述J2ME课程综述目录 简介 0一、J2ME特点 1二、J2ME平台体系结构 1三、J2ME 目标设备 2四、MIDlet应用程序的生命周期 3五、J2ME、J2SE与J2EE之间的比较 51、Java 2平台标准版 (J2SE) 52、Java 2平台企业版(J2EE) 63、Java 2平台微型版(J2ME) 6六、J2ME程序设计的几个原则 61、使用面向对象编程 62、使用MVC模式 63、自动存储用户设定 64、设置关闭 75、使用线程 76、给定界面 7七、课程设计思路 71、自定协议(最终类或接口) 7八、J2ME异常的处理 16总结 18简介Java ME(Jav

2、a Platform,Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SE、Java EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订。1Java ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。一、J2ME特点与J2SE和J2EE相比,JAVA ME总体的的运行环境和目标更加多样化,但其中每一种产品的用途却更为单一,而且资源限制也更加严格。为了在达到标准化和兼容性的同

3、时尽量满足不同方面的需求,JAVA ME的架构分为Configuration、Profile和Optional Packages(可选包)。它们的组合取舍形成了具体的运行环境。Configuration主要是对设备纵向的分类,分类依据包括存储和处理能力,其中定义了虚拟机特性和基本的类库。已经标准化的Configuration有- Connected Limited Device Configuration(CLDC)和Connected Device Configuration(CDC)。Profile建立在Configuration基础之上,一起构成了完整的运行环境。它对设备横向分类,针对特

4、定领域细分市场,内容主要包括特定用途的类库和API。CLDC上已经标准化的Profile有Mobile Information Device Profile (MIDP)和Information Module Profile(IMP),而CDC上标准化的Profile有Foundation Profile(FP)、Personal Basis Profile(PBP)和Personal Profile(PP)。可选包独立于前面两者提供附加的、模块化的和更为多样化的功能。目前标准化的可选包包括数据库访问、多媒体应用、蓝牙等等。二、J2ME平台体系结构J2ME总共有3层体系。J2ME的3层体系结构

5、依照各种设备的资源特性,将J2ME技术架构分为简表(Profile)、配置(Configuration)和Java Virtual Machine(JVM)3层,然后再进一步细分,这使J2ME能够在每一类设备的限制下工作,而同时提供最低限度的Java语言功能性。1、Java虚拟机(JVM)层这一层针对设备本地操作系统定制的Java虚拟机的实现,支持特定的J2ME配置,就像使用所有的Java技术一样,J2ME的核心也在一中虚拟机中。2、配置(Configuration)层面对的是大量各种不同的小型嵌入式设备,它们在外观和功能上均各不相同。J2ME将这些设备进行分类,将一些共同提取出来形成适合于某

6、个范畴中设备的规范,称为“配置”。3、简表(Profile)层简表层定义了特定系列设备上可用的应用程序编程接口(API)的最小集。简表在一个特定的配置上面实现。应用程序时针对特定的简表编写的,因此可以移植到支持该简表的任何设备上。另外,一个设备可以同时支持多个简表。用户和开发人员看到最多的就是这一层。三、J2ME 目标设备 1、CDC支持的设备使用 CDC 开发的 J2ME 应用程序的目标设备通常具有以下特征: 可供 Java 平台使用的 160 到 512 千字节的总内存 功率有限,常常是电池供电 网络连通性,常常是无线的、不一致的连接并且带宽有限 用户接口混乱,程度参差不齐;有时根本就没有

7、接口 2、 CLDC支持的设备一些 CLDC 支持的设备,包括无线电话、寻呼机、主流个人数字助手 (/pda/ PDA),以及小型零售支付终端。 依照 Sun Microsystems,CDC 的目标设备通常具有以下特征: 使用 32 位处理器 2 兆字节或更多可供 Java 平台使用的总内存 设备要求的 Java 2 “蓝皮书”虚拟机的全部功能 网络连通性,常常是无线的、不一致的连接并且带宽有限 用户接口混乱,程度参差不齐;有时根本就没有接口 一些 CDC 支持的设备,包括常驻网关、智能电话和通讯器、PDA、管理器、家用电器、销售网点终端以及汽车导航系统。四、MIDlet应用程序的生命周期理

8、解J2ME的体系结构并不像想象的那么容易,我们觉得读更多的资料帮助也不大,我们直接迈向J2ME开发也许会对你解J2ME平台体系结构这个重要的概念有所帮助。在MIDP中定义了一种新的应用程序模型MIDlet,它是被Application Management Software(AMS)管理的。AMS负责MIDlet的安装、下载、运行和删除等操作。AMS控制MIDlet的方法:startApp()、 pauseApp()、destroyApp(boolean);MIDlet主动请求AMS改变其状态的方法:resumeRequest()、notifyPaused()、notifyDestroyed(

9、)。在被AMS管理的同时,MIDlet可以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifyDestroyed()和notifyPaused()实现的MIDlet有三个状态,分别是pause、active和destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroy

10、ed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。其状态转化图如图2所示:五、J2ME、J2SE与J2EE之间的比较在Java中,类库以包(packa

11、ge)的形式提供,不同版本的Java提供不同的包,以面向特定的应用。Java2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。1、Java 2平台标准版 (J2SE)Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程。2、Java 2平台企业版(J2EE) Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。比如:EJB、servlet、JSP、XML、事务控制。3、Java 2平台微型版(J2ME)Micro Edit

12、ion(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。比如:呼机、智能卡、手机、PDA、机顶盒。他们的关系是:J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类。他们的应用场合、API的覆盖范围各不相同。笼统的讲:J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME;扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。对J2EE更恰当的说,应该是JAVA2企业开发的技术规范,不仅仅是比标准版多了一些类。六、J2ME程序设计的几个原则1、使用面向对象编程虽然使用面向过程编程可以减小文件的尺寸,但是为了以后维护的方便和

13、利于扩展,还是要使用面向对象编程。2、使用MVC模式 将模型、界面和控制分离。现在很多的程序将三者合一,但是如果你做的程序比较大的话,还是建议你进行分离。3、自动存储用户设定使用RMS来存储用户的信息,例如存储用户上次输入的用户名、密码、用户对于系统的设定等,这样不仅可以减少用户的输入,而且对用户友好。很多程序甚至做了自动登陆等。4、设置关闭一些系统设置允许用户关闭,如背景音乐、背景灯显示等。5、使用线程将低级用户界面的绘制动作放在一个独立的线程里面去。6、给定界面在需要大量时间才能完成的工作时,给用户一个等待界面。七、课程设计思路网络开发思路主要是客户端和服务端的设置。在进行无线网络开发时需

14、注意环境配置:将“2013”拷入tomat/webapps双击tomcat/bin里的startup开启服务器。现在就详细的讲解网络程序加自定义协议的程序编写:1、自定协议(最终类或接口)对自定义动作加以区分,制定自己的协议,如:登录1,接到1后服务器验证,将验证结果返回:public final class MyProtocal / public interface MyProtocal public static final byte LOGIN = 0; /登载 public static final byte LIST = 1; /查询 public static final byte

15、 INSERT = 2; /插入public static final byte OK= 3;public static final byte ERROR= 4;2、案例(1)描述:登录后,出现主菜单,选择主菜单的查询和插入后分别执行相应的功能:图3预测结果(2)类图:一个主程序类,一个协议,四个屏显图4 类图结构(3)核心代码:客户端:(以登录为例)new Thread()dos.writeByte(MyProtocal.MSG_LOGIN);dos.writeUTF(nameTextField.getString();dos.writeUTF(pwdTextField.getString(

16、);dos.flush();byte ms=dis.readByte(); if(ms=MyProtocal.OK) clientMIDlet.display.setCurrent(mainList); .start()服务端:byte ms=dis.readByte();switch(ms) case MyProtocal.LOGIN: login(dis,dos);break; case MyProtocal.QUEUE: queue(dis,dos);break; case MyProtocal.INSERT: insert(dis,dos);break;dos.close();dis.

17、close();public void login(DataInputStream dis,DataOutputStream dos)String name = dis.readUTF();String pwd=dis.readUTF();if(name.equals(liyi)&pwd.equals(123) dos.writeByte(MyProtocal.OK); dos.flush();else dos.writeByte(MyProtocal.ERROR); dos.flush(); 具体的程序代码:客户端:public class ClientMIDlet extends MIDl

18、et Display display = Display.getDisplay(this); LoginForm loginform = new LoginForm(login,this); public ClientMIDlet() / TODO Auto-generated constructor stub protected void destroyApp(boolean arg0) throws MIDletStateChangeException / TODO Auto-generated method stub protected void pauseApp() / TODO Au

19、to-generated method stub protected void startApp() throws MIDletStateChangeException / TODO Auto-generated method stub display.setCurrent(loginform); public class InsertForm extends Form implements CommandListener MainList mainList; ClientMIDlet clientMIDlet; Command backCommand=new Command(back,Com

20、mand.EXIT,1); Command insertCommand=new Command(insert,Command.SCREEN,1); TextField scoreTextField=new TextField(score:,10,TextField.ANY); public InsertForm(String title) super(title); / TODO Auto-generated constructor stub this.addCommand(backCommand); this.addCommand(insertCommand); this.setComman

21、dListener(this); public void setInsertData(MainList mainList,ClientMIDlet clientMIDlet) this.append(welcom +LoginForm.name+,please insert:); this.append(scoreTextField); this.mainList=mainList; this.clientMIDlet=clientMIDlet; public void commandAction(Command c, Displayable d) / TODO Auto-generated

22、method stub if(c=backCommand) clientMIDlet.display.setCurrent(mainList); else new Thread() public void run() try HttpConnection hc = (HttpConnection)Connector.open(http:/localhost:8080/2013/ServerHttpServlet,Connector.READ_WRITE); hc.setRequestMethod(HttpConnection.POST);DataOutputStream dos=new Dat

23、aOutputStream(hc.openOutputStream(); dos.writeByte(MyProtocal.INSERT); dos.writeUTF(scoreTextField.getString(); dos.flush(); DataInputStream dis=new DataInputStream(hc.openInputStream(); byte ms=dis.readByte(); if(ms!=MyProtocal.OK) Alert alert=new Alert(Insert Rack); alert.setType(AlertType.ERROR);

24、 alert.setTimeout(Alert.FOREVER); alert.setString(没有插入成功); clientMIDlet.display.setCurrent(alert,InsertForm.this); else Alert alert=new Alert(Insert Rack); alert.setType(AlertType.CONFIRMATION); alert.setTimeout(Alert.FOREVER); alert.setString(插入成功); clientMIDlet.display.setCurrent(alert,InsertForm.

25、this); catch (IOException e) e.printStackTrace(); .start(); public class LoginForm extends Form implements CommandListener TextField nameTextField=new TextField(name:,10,TextField.ANY); TextField pwdTextField=new TextField(pwd:,10,TextField.ANY); Command loginCommand=new Command(login,Command.SCREEN

26、,1); MainList mainList; ClientMIDlet clientMIDlet; static String name=null; static String pwd=null; public LoginForm(String title,ClientMIDlet clientMIDlet) super(title); / TODO Auto-generated constructor stub this.clientMIDlet=clientMIDlet; mainList=new MainList(main,Choice.EXCLUSIVE,new String查询,插

27、入,null,clientMIDlet); this.append(nameTextField); this.append(pwdTextField); this.addCommand(loginCommand); this.setCommandListener(this); public void commandAction(Command c, Displayable d) / TODO Auto-generated method stub if(c=loginCommand) new Thread() public void run() try HttpConnection hc=(Ht

28、tpConnection)Connector.open(http:/localhost:8080/2013/ServerHttpServlet,Connector.READ_WRITE); hc.setRequestMethod(HttpConnection.POST);DataOutputStream dos=new DataOutputStream(hc.openOutputStream(); dos.writeByte(MyProtocal.LOGIN); dos.writeUTF(nameTextField.getString(); dos.writeUTF(pwdTextField.

29、getString(); dos.flush(); DataInputStream dis=new DataInputStream(hc.openInputStream(); byte ms=dis.readByte(); System.out.println(con:+ms); if(ms=MyProtocal.OK) /将合法的用户名和密码保存起来 name=new String(); name=nameTextField.getString(); pwd=new String(); pwd=pwdTextField.getString(); /跳转到主界面 clientMIDlet.display.setCurrent(mainList); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); .start(); public class MainList extends List implements CommandListener Command goCommand=new Command(go,Command.SCREEN,1); Que

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1