一直想写点东西为我学习J2ME做个总结,今天终于股起勇气再动笔,同时也为准备学习J2ME的兄弟姐妹起个抛砖引玉的作用,呵呵,希望不让大家失望。 先从最基本的开始说起吧~ J2ME的全称是Java2 Platform Micro Edition,其技术架构如下 Optional Package Profile Configuration Optional Package是厂商选择性实现的,Profile是针对特殊硬件规定制定的高级API,Configuration则是起定义硬件功能与低级API的作用。 先从最下层的Configuration开始说起,它是J2ME规定嵌入式设备能够执行Java程序的规范,J2ME把运算功能有限,电力有限这类的嵌入式设备叫做Connected Limited Device,规定这些设备如果能执行JAVA程序,则必须遵守哪些规范,而这些规范就定义在Connected Limited Device Configuration里面,简称CLDC,类似有个可连接,资源相对来说无限的设备则被称为Connected Device,同样有个CDC规范。我们平时所使用的手机属于Connected Limited Device范畴,支持J2ME的手机必须支持支持CLDC规范。就目前来看 CLDC有1.0和1.1两种,两者最大的不同则是后者支持浮点运算,而前者不支持,CDC1.0和CDC1.1的核心类库(java.lang.*,java.io.*,java.util.*)和J2SE几乎没什么区别,CLDC1.0则差别较大,CLDC1.1相对来说增强了CLDC1.0的功能,最小内存数量也从160K提升到 192K。CLDC加入的支持扩展类库为有javax.microedition.io.*等。 通过查阅CLDC的类库文档 可以得到以下一些信息,为了方便大家做个了解,我把几个大类做了一下整理: 系统类: java.lang.Object java.lang.Class java.lang.Runtime java.lang.System java.lang.Thread java.lang.Runnable(接口) java.lang.String java.lang.StringBuffer java.lang.Throwable 数据类型类: java.lang.Boolean java.lang.Byte java.lang.Short java.lang.Integer java.lang.Long java.lang.Float(从1.1版本开始支持) java.lang.Double(从1.1版本开始支持) java.lang.Character 集合容器类: java.util.Vector java.util.Stack java.util.Hashable java.util.Enumeration(接口) 输入/输出类: java.io.InputStream java.io.OutputStream java.io.ByteArrayInputStream java.io.ByteArrayOutputStream java.io.DataInput(接口) java.io.DataOutput(接口) java.io.DataOutputSteam java.io.DataInputStream java.io.Reader java.io.Writer java.io.InputSteamReader java.io.OutputStreamReader java.io.PrintStream 日历和时间类: java.util.Calendar java.util.Date java.util.TimeZone 其他附加类: java.util.Random java.lang.Math 错误类: java.lang.Error java.lang.NoClassDeFoundError(从1.1版本开始支持) java.lang.OutOfMemoryError java.lang.VirtualMachineError 异常类: java.lang.Exception java.lang.ArithmeticException java.lang.ArrayIndexOutOfBoundsException java.lang.ArrayStoreException java.lang.ClassCastException java.lang.ClassNotFoundException java.lang.IllegalAccessException java.lang.IllegalArgumentException java.lang.IllegalMonitorStateException java.lang.IllegalThreadStateException java.lang.IndexOutOfBoundsException java.lang.InstantiationException java.lang.InterruptedException java.lang.NegativeArraySizeException java.lang.NullPointerException java.lang.RuntimeException java.lang.NumberFormatException java.lang.SecurityException java.lang.StringIndexOutOfBoundsException java.util.EmptyStackException java.util.EmptyNoSuchElementException java.io.EOFException java.io.InterruptedIOException java.io.IOException java.io.UnsupportedEncodingException java.io.UTFDataFormatException 弱引用:(从1.1版本开始支持) java.lang.ref.Reference java.lang.ref.WeakReference 以下为CLDC1.1扩展类库: javax.microedition.midlet.* javax.microedition.lcdui.* javax.microedition..rms.* javax.microedition..io.* javax.microedition.lcdui.game.* javax.microedition.pki.* javax.microedition..media.* javax.microedition.media.control.* 下面来说说Profile,既然Profile构建在Configuration之上,其所规范的配备需求自然不会比Configuration低,而我们通常所提到的Profile有Mobile Information Device Profile(简称MIDP),针对的是手机和寻呼机,等移动设备。还有一种常见的Profile,Information Module Profile,是针对没有屏幕的移动设备所设计的。 目前MIDP,最高的规格是2.0,硬件要求为: 内存:256Kb非易失性内存可供MIDP组件使用,8Kb非易失性内存可工应用程序创建持久化数据,128Kb易失性内存可供虚拟机运行时环境使用。 显示:屏幕大小96*54,显示深度:1位,象素形状(长宽比):1:1。 输入:单手键盘或者双手键盘或者触摸屏。 网络:双向,无线,可以是间歇的,带宽有限的。 声音:播放不同声调的能力,可以通过专用硬件也可以通过软件算法获得。 J2ME规范中还定义了厂商可以选择实现的包,那就是Optional Packages,通常不同的厂商不同的产品会有一些不同的功能,那么制造厂商可以通过Optioanl Packages规范来为实现某些产品的特殊功能制定相应的API。 那我们通常所说的J2ME开发,大部分其实都是MIDP程序设计,那我们先来看几个名词的解释: MIDlet:一个可执行的应用手机程序的基本单位。 MIDlet Suite:许多MIDlet所构成的集合一般称做MIDP Application(MIDP应用程序)。 JAR文件(JAR File,.jar文件) 实际是包裹着MIDlet Suite的文件,属于ZIP压缩格式。 JAD文件(Descriptor File,.jad文件) 用来描述MIDlet Suite的基本信息的文本文件,它是一个外部文件(不存在于JAR文件内部,独立存在的文件)。 最后要介绍一下应用程序管理器(Java Application Manager),它可是很重要的哦,它负责将MIDlet的执行及其生命周期。它是一个用来执行J2ME的原生程序。 |
|