![]() ![]() |
|
j2me的基本介绍⑷ | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:42:18 文章录入:杜斌 责任编辑:杜斌 | |
|
|
本节的部分内容译自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支持的硬件的考虑。这里记住这个概念就行了。具体的操作方法我会在以后讲述编写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包。 |
|
![]() ![]() |