j2me开发介绍
- 格式:doc
- 大小:134.00 KB
- 文档页数:14
《J2ME程序设计》课程教学大纲一、课程基本情况开课单位:计算机与信息工程系课程编码:适用专业:软件修课方式:必须总学时:68学时考核方式:考试教材:《J2ME移动应用开发》郝玉龙北方交通大学出版社 2006.9教学参考书:《精通J2ME无线编程》,林胜利,中国铁道出版社,2004年二、课程的性质、任务和目的本课程是计算机软件专业的一门专业基础课程,重在培养学生的移动设备实践开发能力,适应软件企业的工作环境和业界标准,并和国际先进的软件开发理念保持同步。
通过本课程学习,学生应该了解并掌握J2ME技术基础,CLDC与MIDP基本概念,熟练应用J2ME技术开发基于移动设备的应用系统或游戏系统,并了解移动增值业务系统的开发基础。
学习本课程学生应达到如下要求或能力:1、掌握J2ME技术基础以及CLDC与MIDP的基本概念2、熟练应用J2ME技术编写简单应用软件系统3、熟练应用J2ME技术编写简单游戏4、了解无线增值业务(如SMS)应用系统的开发三、课程的主要内容和学时分配(一) 主要内容第1章 J2ME概述 2学时1.1 J2ME简介1.2 J2ME架构1.3 技术规范第2章 Hello World 2+2学时2.1 第一个实例2.2 J2ME程序开发流程2.3 代码解释2.4 JBuilder 9的配置2.5 使用JBuilder 9开发Hello World第3章 MIDlet和MIDlet Suite 4+2学时3.1 MIDlet概述3.2 MIDlet的打包3.3 MIDlet的生命周期3.4 MIDlet的安全管理第4章 MIDP用户界面——高级API 6+2学时4.1 MIDP用户界面概述4.2 高级API详述4.3 开发实用程序第5章 MIDP用户界面库——底层API 8+4学时5.1 Canvas类概述5.2 设备及屏幕属性5.3 基本作图属性设置5.4 基本图形操作5.5 剪切区操作5.6 输入处理5.7 多线程5.8 定制Item5.9 开发实用程序第6章 MIDP游戏编程 6+4学时 6.1 游戏API概述6.2 GameCanvas类6.3 LayerManager和Layer6.4 Sprite6.5 TiledLayer6.6 游戏设计第7章 MIDP网络编程 8+4学时 7.1 通用连接框架7.2 输入输出流7.3 HTTP协议7.4 使用HttpConnection编程7.5 Socket编程7.6 无线消息传递7.7 PushRegistry7.8 网络安全和MIDlet的签名认证第8章永久存储 4+2学时 8.1 永久存储概述8.2 RMS基础8.3 账务管理程序附录A J2ME开发基本环境设置 2+2学时 A.1 获取软件包A.2 软件包安装与配置A.3 J2ME网络资源附录B CLDC概述 2+2学时 B.1 CLDC的目标和功能B.2 CLDC 1.1与CLDC 1.0的区别B.3 CLDC的安全要求B.4 CLDC中虚拟机的变化B.5 CLDC中的类库附录C MIDP概述 2+2学时 C.1 MIDP的范围和软硬件要求C.2 MIDP的包概述C.3 MIDP的部署-Over-The-Air (OTA)C.4 MIDP程序的效率Borland认证课程介绍(二) 学时分配四、课程教学基本要求及重点1.J2ME概述了解J2ME的基本概念,开发架构以及采用的规范,掌握J2ME开发所需基本条件以及开发环境所需软件基础。
J2me简介j2ee的概念目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,j2me)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。
J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。
J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。
其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。
通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
J2EE的优势J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制:保留现存的IT资产:由于企业必须适应新的商业需求,利用已有的企业信息系统方面的投资,而不是重新制定全盘方案就变得很重要。
这样,一个以渐进的(而不是激进的,全盘否定的)方式建立在已有系统之上的服务器端平台机制是公司所需求的。
javame概念Javame概念什么是Javame•Javame是Java平台的一个分支,专门用于移动设备和嵌入式系统的开发。
•Javame的全称是Java 2 Platform, Micro Edition,简称J2ME,是Sun Microsystems(现在是Oracle)推出的一套用于嵌入式设备的Java平台。
•Javame提供了一个小巧轻量的Java运行环境,使得开发者可以在资源有限的设备上运行Java应用程序。
Javame的组成部分配置(Configuration)•配置是Javame最底层的一层,用于定义Java运行环境的基本特性和功能。
•目前主要有CLDC(Connected Limited Device Configuration)和CDC(Connected Device Configuration)两种配置。
•CLDC适用于资源有限的设备,如移动电话、手持设备等,而CDC 适用于资源相对较丰富的设备,如机顶盒、导航系统等。
框架(Profile)•框架是在配置基础上定义的面向特定类型设备的一组API(应用程序接口)。
•目前常用的框架有MIDP(Mobile Information Device Profile)和CDC相对应的Foundation Profile等。
•MIDP适用于低端移动设备,提供了一系列与用户界面、网络、存储等相关的API。
电子书合规性(Compliance)•电子书合规性是一套测试规范,用于确保开发的应用程序符合相关的标准。
•这些标准往往是由设备制造商或运营商指定的。
Javame应用开发•使用Javame开发应用程序,可以使用Java编程语言,并且可以使用Eclipse等集成开发环境进行开发。
•开发者可以使用Javame提供的API进行开发,包括界面设计、与网络通信、数据存储等功能。
•考虑到移动设备的资源有限性,开发者需要特别注意内存和处理器的使用,以及对电量的优化等方面。
J2ME 浏览器的流程按照老的习惯,我们首先都要分析我们需要什么,有什么用,和怎么去实现它J2ME浏览器主要功能就是让大家能通过现有的无限网络,实现资源的共享和传播。
3G 4G世代的到来更为我们开发各种快捷高效的浏览器带来了动力。
这也是我们开发J2ME 浏览器的潜在的市场。
1,开发JA V A 的程序,我们先还去去设置下我的电脑属性中的环境变量。
具体操作略。
2.网页浏览器,包括五个部分,菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。
1菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。
主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。
2。
.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。
3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。
4.浏览器选项卡模块实现在同一个窗体中显示多个页面。
5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。
需求分析本模块要实现的功能模块包括:菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。
1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。
主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。
2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。
3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。
4.浏览器选项卡模块实现在同一个窗体中显示多个页面。
5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。
CLDC(Connected limited device configuration,有限连接设备配置):这个配置定义了Java应用程序接口以及支持手持设备的技术,就像Sun的文档中所描述的那样,"devices that you hold in your hand(你握在手中的设备)"。
CLDC是为使用较小的存储容量的设备设计的,用于内存在128到512K之间的消费电子设备,智能手机、Palm 序列手持设备可能是这一领域的设备的最好的例子。
MIDP(Mobile information devices profile,移动信息设备简表):第一个实现的简表,补充了CLDC并且提供应用程序语义和控件、用户界面、持久存储器、网络和用于移动电话的计时器、双通道呼叫器和其他无线电设备。
类似于J2SE中的Applet框架,它提供了基于javax、microedition、midlet包的MIDLet应用程序框架。
MIDLet:MIDP应用程序称为MIDlet,为了创建一个MIDlet,就必须写一个扩展基本MIDlet类的类。
这有点类似常见的Applet或Servlet。
MIDlets独有的东西是把多个MIDlet组成一个MIDlet套件的能力。
这就允许MIDlet在一个单独的JVM环境中共享资源,比如一个数据库等等。
一、J2ME中需要的Java基础知识现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明:J2ME中使用到的Java基础知识:1、Java语法基础:包括基本数据类型、关键字、运算符等等;2、面向对象的思想:类和对象的概念,继承和多态等等;3、异常处理;4、多线程。
J2ME中没有用到的Java基础知识:1、JDK中javac和java命令的使用;2、Java基础中的很多类在J2ME中没有,或者类中的方法做了大量的精简。
所以建议在J2ME中熟悉类库。
3、Applet、AWT、Swing这些知识在J2ME中根本使用不到。
简单说这么多,希望学J2ME的朋友们能少走一些弯路,不足之处希望大家积极指正和补充。
二、J2ME中暂时无法完成的功能列一些J2ME中暂时无法完成的功能,希望大家能积极补充:1、在手机中不更改代码实现移植,主要指游戏。
2、动态修改按钮文字。
3、在Canvas上接受中文输入。
4、操作本地资源、例如地址本、已收短信息等。
5、制作破坏性的手机病毒。
6、其他等待大家来补充。
三、J2ME的跨平台性J2ME技术源于Java,所以也具有JVM的优势,可以在支持Java的平台上进行移植,但是现在的J2ME技术在跨平台上却做的很糟糕,我们来简单看一下原因:1、手机的屏幕尺寸不一:这个主要在界面制作上。
如果你使用的是高级用户界面,比如你做的是应用开发或者用户登陆、用户注册这样的通用功能时,一般没有什么问题。
如果你使用的是低级用户界面,比如你做的是游戏,那么你就需要考虑这个问题了。
2、厂商的扩展API不统一:例如Nokia的扩展API类库UI系列,在别的手机上或者没有实现,或者包名不同等等。
3、手机平台上实现的bug:例如Nokia的7650在实现双缓冲上有bug,那么在这种机型上运行的软件就不能使用双缓冲。
其他NOKIA上的一些bug,可以参看:/Mailbomb/archive/2005/03/24/329123.aspx;4、手机性能问题。
不同手机的可用内存、最大jar文件都有要求,例如Nokia S40的大部分手机支持的最大jar文件为64K,最大可用内容为210K。
所以现在的手机软件,特别是游戏都提供支持的机型列表,也才有了手机游戏移植人员的存在。
四、学习J2ME可以从事的工作种类现在J2ME技术可以说相当的火暴,这里介绍一些学好了J2ME之后可以从事的工作的种类:1、J2ME游戏开发人员,根据游戏策划或者文档要求,在某种特定的机型(以Nokia S40或S60居多)开发游戏程序。
这是现在大部分J2ME程序员从事的工作。
需要熟练掌握:高级用户界面、低级用户界面、线程,如果是网络游戏,还需要熟练网络编程。
2、J2ME应用开发人员现在的移动应用还不是很多,但是还是出现了一些,特别是移动定位以及移动商务相关的内容。
需要熟练掌握:高级用户界面、线程和网络编程。
3、J2ME游戏移植人员,参照源代码,将可以在一个平台上可以运行的游戏移植到其他平台上去。
例如将Nokia S40的游戏移植到S60上,或者索爱的T618等等。
主要是控制屏幕坐标,有些可能需要替换一些API。
需要熟悉各平台之间的差异以及相关的技术参数,比如屏幕大小、最大jar文件尺寸等等。
五、J2ME程序设计的几个原则1、使用面向对象编程。
虽然使用面向过程编程可以减小文件的尺寸,但是为了以后维护的方便和利于扩展,还是要使用面向对象编程。
2、使用MVC模式。
将模型、界面和控制分离。
现在很多的程序将三者合一,但是如果你做的程序比较大的话,还是建议你进行分离。
3、自动存储用户设定。
使用RMS来存储用户的信息,例如存储用户上次输入的用户名、密码、用户对于系统的设定等,这样不仅可以减少用户的输入,而且对用户友好。
很多程序甚至做了自动登陆等。
4、一些系统设置允许用户关闭。
如背景音乐、背景灯显示等。
5、将低级用户界面的绘制动作放在一个独立的线程里面去。
6、在需要大量时间才能完成的工作时,给用户一个等待界面。
六、从模拟器到真机测试对于J2ME开发者来说,模拟器给我们带来了很多方便,比如可以在模拟器中调试程序以及很方便的察看程序的效果,但是模拟器也给我们带来了一些问题,比如模拟器实现的bug等等,所以进行真机测试是必须的。
1、为什么要进行真机测试?因为模拟器程序可能存在bug,以及真机的性能有限,所以必须进行真机测试。
2、如何将程序传输到机器中?将程序传输到机器中有如下方式:a)OTA下载;b)使用数据线传输;c)红外传输;d)蓝牙。
你可以根据条件,选择合适的方式。
3、真机测试主要测什么?真机测试的内容很多,主要测试以下几个方面:a)程序的功能;b)程序的操作性,是否易操作;c)程序的大小,比如Nokia S40系列的手机大部分接受的最大文件尺寸为64K;d)程序运行速度,速度是否可以忍受。
七、从WTK到厂商SDK对于J2ME爱好者来说,基本上大家都是从SUN的WTK(J2ME Wireless Toolkit)开始的,但是对于实际应用来说,仅仅使用WTK是远远不够的,所以在学习过程中,必须完成从WTK到SDK的跨越。
1、厂商SDK的下载地址?/Mailbomb/archive/2005/01/01/236606.aspx2、厂商SDK和WTK有什么不同?厂商SDK最简单的理解就是在WTK的基础上增加了自己的模拟器和自己的扩展API。
也就是说,你在使用厂商的SDK时,可以使用厂商的扩展类库,例如Nokia的UI类库,和厂商自己的模拟器而已。
每个厂商的扩展API都不多,而且不尽相同。
3、如何使用?有些厂商SDK的使用都和WTK相同,例如SamSung。
Nokia提供了独立的界面来开发,但是这个界面在实际开发中使用不多。
4、厂商SDK的问题厂商SDK实现过程中,有一些bug,而且和真机实现不一致。
例如NOKIA的混音播放问题等等。
八、在J2ME中获得手机IMEI的方法IMEI是Internation mobile entity identification的简称,在手机中输入*#06#可以显示该数字,长度为15位,全球唯一,永远不会冲突,所以可以作为识别用户的一个标志。
下面是在J2ME中获得IMEI的方法:1、MOTO系列的手机可以通过读取系统的IMEI属性获得,代码如下:String imei = System.getProperty("IMEI");;2、SIEMENS系列的手机可以通过读取系统的com.siemens.IMEI属性获得,代码如下:String imei = System.getProperty("com.siemens.IMEI");九、J2ME网络连接中显示问题的解决办法在网络编程中,有些时候会出现一些在没有接收到网络数据就显示界面的,造成界面显示不符合要求(例如公告显示,会先显示公告的背景图片再显示公告信息),这里提一个简单的解决办法给大家:解决这种情况的方法分成三个步骤:1、在需要显示的界面中,调用发送网络数据的方法。
每次显示时调用该构造方法,不调用Display的setCurrent方法显示。
2、显示等待界面(例如进度条等),给用户提示,在进行网络连接。
3、在处理网络反馈的数据完以后,调用Display的setCurrent方法显示显示当前界面。
十、增强J2ME的String能力——分割字符串从JDK1.4以后,String类中新增了split方法来实现字符串的分割,但是在J2ME中却没有该方法(MIDP2.0中也没有实现),但是在实际使用过程中,有些时候的确要用到这种操作,这里将我以前实现的一段代码和大家共享:/** * 分割字符串,原理:检测字符串中的分割字符串,然后取子串* @param original 需要分割的字符串* @paran regex 分割字符串* @return 分割后生成的字符串数组*/private static String[] split(String original,String regex) {//取子串的起始位置int startIndex = 0;//将结果数据先放入Vector中Vector v = new Vector();//返回的结果字符串数组String[] str = null;//存储取子串时起始位置int index = 0;//获得匹配子串的位置startIndex = original.indexOf(regex);//System.out.println("0" + startIndex);//如果起始字符串的位置小于字符串的长度,则证明没有取到字符串末尾。
//-1代表取到了末尾while(startIndex < original.length() && startIndex != -1) {String temp = original.substring(index,startIndex);System.out.println(" " + startIndex);//取子串v.addElement(temp);//设置取子串的起始位置index = startIndex + regex.length();//获得匹配子串的位置startIndex = original.indexOf(regex,startIndex + regex.length());}//取结束的子串v.addElement(original.substring(index + 1 - regex.length()));//将Vector对象转换成数组str = new String[v.size()];for(int i=0;i< str; 返回生成的数组}str[i]="(String)v.elementAt(i);" {>十一、J2ME在低级用户界面上分行显示文字在J2ME的低级用户界面开发中,经常会遇到需要在Canvas上显示大量的文字,例如关于界面、游戏说明、游戏公告等信息。