WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院WEB开发Jsp J2ME(CLDC/MIDP)简介 阅读

J2ME(CLDC/MIDP)简介

 2008-01-05 10:20:28 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫岄梺璇茬箲濮樸劑鍩€椤掍礁鍤柛鎾跺枎椤繐煤椤忓嫬鐎銈嗘礀閹冲酣宕滄导瀛樷拺闂侇偆鍋涢懟顖涙櫠椤斿墽纾煎璺猴功缁夎櫣鈧鍠栭…閿嬩繆濮濆矈妲烽梺绋款儐閹瑰洤螞閸愩劉妲堟繛鍡楃箲濞堟﹢姊绘担椋庝覆缂傚秮鍋撴繛瀛樼矤閸撶喖宕洪埀顒併亜閹烘垵鈧綊寮抽鍕厱閻庯綆浜烽煬顒傗偓瑙勬磻閸楀啿顕i崐鐕佹Ь闂佸搫妫寸粻鎾诲蓟閵娾晜鍋嗛柛灞剧☉椤忥拷
核心提示:名词梳理在正式开始介绍J2ME之前,这里我列出一些常见名词,方便与下文参照:J2ME(java2 Platform, Micro Edition) Java2平台微型版CLDC(Connected, Limited Device Configuration) 连接受限设备配置CDC(Connected Device C

  名词梳理
  在正式开始介绍J2ME之前,这里我列出一些常见名词,方便与下文参照:
  
  J2ME(java2 Platform, Micro Edition) Java2平台微型版
  
  CLDC(Connected, Limited Device Configuration) 连接受限设备配置
  
  CDC(Connected Device Configuration)连接设备配置
  
  MIDP(Mobile Information Device PRofile) 移动信息设备描述
  
  KVM(The K Virtual Machine) K虚拟机
  
  背景
  随着无线应用与嵌入式系统的愈来愈受到人们的重视,SUN也推出了J2ME(Java2 Platform, Micro Edition)来迎合这一未来的发展趋势。
  
  实际上这道也不能算是最新推出,熟悉Java历史的人都知道,Java原先本是为了开发消费性电子产品而研制的。谁知,无心插柳柳成荫,因在网络应用上的出色表现而流行,以至到现在的在serverside上的应用,如J2EE、EJB等等,发展的越来越庞大。这次sun又推出了J2ME,这实质是杀了个回马枪。至于实际表现如何,我们还得拭目以待。
  
  sun认为,未来的信息设备将比我们今天的更为customizable 和 personal。这一点我们已经可以从手机和pda的流行程度看出。所以为了开发面向这些设备的applications。sun推出了J2ME。于是现有的Java版本变为了三个:J2EE ,J2SE和J2ME,分别对应与不同的目标设备,如下图所示。
  
 J2ME(CLDC/MIDP)简介(图一)

  
图1 Java版本的划分和针对的设备

  
  CLDC/MIDP的基本结构
  粗略的说j2me把设备分为两类,一种是联接设备( connected device),一种是有限联接设备(Connected, Limited Device)。前一种对应于那些有电源的,电力充裕,较大的设备。例如:电视机,冰箱等,后一种对应于主要使用电池,小型的设备,例如:手机,pda等。
  
  这里我主要只涉及第二种,有限联接设备(Connected, Limited Device)。
  
  sun把J2me的实现分为两层:configuration 和 profile。
  
  configuration包括虚拟机(virtual machine),核心的类库与API。configuration层定义一个java虚拟机的特性与java类库的最小子集。也就是说,configuration层提供了开发人员一个最基础,最核心的Java平台。因为j2me把设备分为两类:联接设备(connected device)和有限联接设备(Connected, Limited Device)。对应这两种设备就有了两种J2ME configuration。分别为CDC(Connected Device Configuration)和CLDC(Connected, Limited Device Configuration)。这里请注重,CDC使用经典的javaVM,而CLDC使用的是KVM(The K Virtual Machine)。KVM是sun专门为使用16/32位RISC/CISC微处理器或控制器,并其可用内存为160kb~512kb的的设备而开发的。KVM比较小,通常只有128K或更少。
  
  Profile层也包含一组API,主要针对于特定的某一族系的设备而定义。profile层在特定的
  configuration层上实现,而我们程序员则负责在特定的profile上编写应用程序。对于手机,pda等Connected, Limited Device。它们的profile层称为MIDP(Mobile Information Device Profile)。于是MIDP与CLDC合在一起就构成了一个完整的J2ME架构。顺便说一句,对于MIDP上的应用程序sun也有独特的叫法,它们被称为MIDlet。你是不是觉得有点眼。想想java中的applet。下图显示了开发手机应用的结构。
  
 J2ME(CLDC/MIDP)简介(图二)

  
图2 CLDC/MIDP的结构

  
  深入理解CLDC/MIDP
  CLDC的目的
  
  为小型的,且资源有限,Connected Limited的设备定义一个标准的Java平台。
  答应动态的向这些设备发布内容与应用程序。
  方便第三方软件厂商与开发者向这些设备移植内容与应用程序。
  CLDC的范围
  
  Java语言与虚拟机的特性
  核心Java类库(如java.lang.*, java.util.*)
  输入/输出
  对网络的支持
  对安全性的支持
  对国际化的支持
  CLDC不包括的范围(即由MIDP解决的)
  
  对应用程序life-cycle的治理(就是指一个应用程序是如何安装,运行,删除的)
  UI界面(User Interface)
  Event处理
  高级应用程序模式(这里指用户与应用程序的交互)。
  CLDC的安全性
  
  低端的基于虚拟机的安全性由下载时对class文件的审核(verification)步骤来保证。(假如你写过并编译过MIDlet程序,就会知道这一步是必须的。这里有一个概念就行了,我会在后面讲述如何创建MIDlet程序时,具体介绍具体的步骤)。基于应用程序的安全性通过使每个应用程序分别运行在相对独立的封闭环境中来保证并且处于被保护的系统package中的类不能被应用程序重载(overridded)。
  
  对于Java语言支持的非凡方面
  CLDC总的来说是与Java语言完全兼容的,但需注重以下几点:
  
  不支持浮点数据类型(即没有float和double)(这实际上主要是由于CLDC所面向的设备,其硬件因其内存限制或是基于安全性的考虑不支持浮点运算)
  
  不支持类实例(class instance)的终结(finalization),即不存Object.finalize()方法。(注:finalization指的是java中提供的有别与garbage collection的另外的一种对象清理方法。具体可参看侯捷老师译的BrUCe Eckel的《Thinking in Java 第二版》,可以在www.jjhou.com中下载)
  
  有限的错误处理,即大部分Java.lang.Error的子类都未被支持。与此相反,CLDC包括了相当完备的异常(exception)类。
  
  对于Java虚拟机(Java Virtual Machine)支持的非凡的方面
  
  实质上CLDC在其严格的内存限制下达到了对Java虚拟机相当程度的兼容性。不过还是有下列不同点:
  
  不支持浮点数据类型(没有float和double)
  不支持JNI (the Java Native Interface )不支持用户自定义的Java级的类载入器(class loaders )
  没有反射(reflection)特性(注:reflection指java通过java.lang.reflect提供的,可以对类的能力进行分析的功能。常用来对类的结构进行检查,在JavaBeans上有广泛运用可参见Gary Cornell的Core Java2 volumeI,II,机工有出中译本)
  不支持线程组(thread groups)或守护线程(daemon threads)
  不支持类实例(class instance)的终结(finalization)
  没有弱参考(weak references)(注:weak reference提供了一种解决指向已经被garbage collector清除的对象的方法。在Java2中被介绍。具体请参考java.lang.ref API 文档,和sun网站上关于Reference Objects和Garbage Collection的文章。)
  有限的错误处理(error handling)
  类文件审核过程(classfiles Verification)
  
  CLDC要求其下层的虚拟机能够辨别并拒绝非法的class文件。但由于CLDC本身面向小内存消耗的小型设备这一前提。其类文件检测机制与J2SE中定义的标准类文件审核机制还有所不同。请注重看下图:
  
 J2ME(CLDC/MIDP)简介(图三)

  
图3 CLDC的类审核机制

  请注重上图所示CLDC中的预审核(preverification)过程。这是CLDC区别于通常的类文件审核过程的要害。如上图所示,当源程序被编译后,必须被预审核器预审核,然后才能被下载到目标设备上去。之所以有这一步骤,主要是为了减轻KVM中审核器的负担,加快审核速度。就像我前文提到的,这是出于对CLDC支持的硬件的考虑(究竟手机和PDA并没有我们PC机那样奔腾的“芯”呀!^-^)。这里记住这个概念就行了。具体的操作方法我会在以后讲述编写MIDlet程序时介绍。
  
  CLDC的类库API
  假如不严格的说,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,<

Tags:JME CLDC MIDP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接