j2me的基本介绍⑷

作者:Ding  

Email:wu_yi_ding@yahoo.com

本文主要介绍J2me的基本概念。因为注意到国内的java站点介绍J2me的还比较少

,所以就写了本文。如果有什么不妥的地方,欢迎您email我,讨论商榷。

如您要转贴,请保留原出处,并勿做删改。谢谢。


4。深入理解CLDC (part II)

   本节的部分内容译自J2ME White Paper,比较枯燥,但请记住,毕竟,正确

的观念重于一切。


类文件审核过程(classfiles Verification)

   CLDC要求其下层的虚拟机能够辨别并拒绝非法的class文件。但由于CLDC本身

面向小内存消耗的小型设备这一前提。其类文件检测机制与J2SE中定义的标准类

文件审核机制还有所不同。请注意看下图:

                           
MyApp.java              
    │                  
    ↓                  
┌───┐               
│Javac │┄编译器       
└───┘              
   ↓                   
MyApp.class              
   ↓                                  
┌──────┐         
│preverifier │┈预审核器
└──────┘       
    ↓              
MyApp.class             
    │                  
    ↓download...                  
┌────────┒
│                ┠┄┄KVM运行环境
│┌──────┐┃   (目标设备)
││  verifier  │┃
│└──────┘┃     
│                ┃
│┌──────┐┃   
││            │┃
││interpreter │┃
││            │┃
│└──────┘┃
┕━━━━━━━━┛

图2 CLDC/KVM中类文件的审核过程

请注意CLDC中的预审核(preverification)过程。这是CLDC区别于通常的类文件

审核过程的关键。如上图所示,当源程序被编译后,必须被预审核器预审核,然

后才能被下载到目标设备上去。之所以有这一步骤,主要是为了减轻KVM中审核器

的负担,加快审核速度。就像我前文提到的,这是出于对CLDC支持的硬件的考虑

(毕竟手机和PDA并没有我们PC机那样奔腾的“芯”呀!^-^)。这里记住这个概

念就行了。具体的操作方法我会在以后讲述编写MIDlet程序时介绍。


类文件格式

   sun要求通过Jar(compressed Java Archive)给Java应用程序打包,这里也

不例外。所以如果你想把你的MIDlet程序下载到设备上运行,你就得先用jar打包

。具体的操作方法我会在以后讲述编写MIDlet程序时介绍。


CLDC的类库

   如果不严格的说,CLDC的类库是J2SE的一个小的子集,有以下这种近似关系

成立,即J2SE包含CDC包含CLDC。但要注意CLDC并未完全包含于J2SE,它还包括一

些专门针对无线设施的类。所以可以把CLDC的类库简要划分为两部分:从J2SE继

承的类和CLDC专有的类。

(1)从J2SE继承的类

这部分包括三个package,即java.lang,java.util和java.io。注意即使这些从

J2SE继承的的类,也是大大“缩了水”的。例如java.util的类与接口由J2SE的

47个缩减到10个。另外两个也有相应缩减。

系统类

From java.lang:
Object, Class, Runtime, System, Thread, Runnable,
String, StringBuffer, Throwable


数据类型类

From java.lang:
Boolean, Byte, Short, Integer, Long, Character


容器类(container class)

From java.util:
Vector, Stack, Hashtable, Enumeration


I/O 类

From java.io:
InputStream, OutputStream, ByteArrayInputStream,
ByteArrayOutputStream, DataInput, DataOutput,
DataInputStream, DataOutputStream, Reader, Writer,
InputStreamReader, OutputStreamWriter, PrintStream


日期与时间类

From java.util:
Calendar, Date, TimeZone

附加的实用类

java.util.Random, java.lang.Math


异常类(Exception Classes)

From java.lang:
Exception, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InterruptedException, RuntimeException,
ArithmeticException, ArrayStoreException,
ClassCastException, IllegalArgumentException,
IllegalThreadStateException, NumberFormatException,
IllegalMonitorStateException, IndexOutOfBoundsException,
ArrayIndexOutOfBoundsException,
StringIndexOutOfBoundsException,
NegativeArraySizeException, NullPointerException,
SecurityException

From java.util:
EmptyStackException, NoSuchElementException

From java.io:
EOFException, IOException, InterruptedException,
UnsupportedEncodingException, UTFDataFormatException


错误类

From java.lang:
Error, VirtualMachineError, OutOfMemoryError


(2)CLDC专有的类

   这里sun提供了javax.microedition.io包。用它来提供与外界沟通的桥梁。

(注:就像在J2SE中我们利用java.net.*)注意,所有的连接都由javax.

microedition.Connector创建。例如:

你可以打开一个http连接通过

Connector.open("http://www.chinajavaworld.com")

javax.microedition.io的接口包括:
Connection, InputConnection, OutputConnection,
StreamConnection, ContentConnection, DatagramConnection,
StreamConnectionNotifier

这里再说明一点,实际上你也可以看出,CLDC所包括的类库,并不足以开发应用

程序。例如,没有UI界面的支持等。这也正是CLDC的设计理念。CLDC本身就从未

想过要解决所有的问题。这些问题要靠其上层的Profile-MIDP来解决。例如

javax.microedition.lcdui就是定义在MIDP中的UI包。


-----待续------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值