本文主要介绍J2me的基本概念。因为注意到国内的java站点介绍J2me的还比较少,所以就写了本文。如果有什么不妥的地方,欢迎您email我,讨论商榷。
如您要转贴,请保留原出处,并勿做删改。谢谢。

1.名词
这里我列出一些常见的关键词,方便与下文参照.具体解释见后文.
J2ME(Java2 Platform, Micro Edition)
CLDC(Connected, Limited Device Configuration)
MIDP(Mobile Information Device Profile)
KVM(The K Virtual Machine)

2.背景
随着无线应用与嵌入式系统的愈来愈受到人们的重视,SUN也推出了J2ME来迎合这一趋势.(实际上道也不能算是新推出,熟悉Java历史的人都知道,java原先本是为了开发消费性电子产品而研制的.谁知,无心插柳柳成荫,因在网络应用上的出色表现而流行,以致现在的J2EE、EJB等等,发展地越来越庞大。这次实质是杀了个回马枪。至于表现如何,还得拭目以待)sun认为,未来的信息设备将比我们今天的更为customizable 和 personal。这一点我们已经可以从手机和pda的流行程度看出。所以为了开发面向这些设备的applications。sun推出了J2ME(Java2 Platform, Micro Edition)。

3.j2me的基本结构
j2me把设备分为两类,一种是联接设备( connected device),一种是有限联接设备(Connected, Limited Device)。前一种对应于那些有电源的,电力充裕,较大的设备。例如:电视机,冰箱等,后一种对应于主要使用电池,小型的设备,例如:手机,pda等。这里我只涉及第二种,有限联接设备(Connected, Limited Device)。

3.j2me的基本结构
sun把J2me分为两个部分:configuration 和 profile。
configuration包括虚拟机(virtual machine),核心的类库与API。configuration层定义一个java虚拟机的特性与java类库的最小子集。也就是说,configuration层提供了开发人员一个最基础,最核心的Java平台。就像我前文提到的,j2me把设备分为两类,一种是联接 设备(connected device),一种是有限联接设备(Connected, Limited Device)。对应这两种设备就有了两种J2ME configuration。分别为CDC(Connected Device Con-figuration )和CLDC(Connected, Limited Device Configuration)。这里请注意,CDC使用经典的javaVM,而CLDC使用的是KVM(The K Virtual Machine)。
注:kvm是sun为使用16/32位RISC/CISC微处理器或控制器,并其可用内存为160kb~512kb 的的设备而开发的。
Profile层也包含一组API,主要针对于特定的某一族系的设备而定义。profile层在特定的configuration层上实现,而我们程序员则负责在特定的profile上编写应用程序。对于手机,pda等Connected, Limited Device。它们的profile层称为MIDP(Mobile InformationDevice Profile)。于是MIDP与CLDC合在一起就构成了一个完整的J2ME架构。
顺便说一句,对于MIDP上的应用程序sun也有独特的叫法,它们被称为MIDlet。你是不是觉得有点眼熟。想想java中的applet。
┌───────┐┄┄┄┄┄┄┄
│MIDlet │ 应用程序
├───────┤┈┈┈┈┈┈┈
│ MIDP │ proflie层
├───────┤┄┄┄┄┄┄┄
│J2ME核心API │ configuration层
├───────┤ CLDC
│ KVM │
├───────┤┈┄┄┄┄┄┄
│特定的硬件 │
└───────┘
图1 J2ME的CLDC&MIDP架构

4。深入理解CLDC
本节的部分内容译自J2ME White Paper,比较枯燥,但请记住,毕竟,正确的观念重于一切。
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的文章。)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126999/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126999/

J2me的基本概念(转)相关推荐

  1. JDK、J2EE、J2SE、J2ME的区别

    你对JDK.J2EE.J2SE.J2ME概念是否了解,这里和大家分享一下JDK.J2EE.J2SE.J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获. JDK,J2EE,J2SE,J2 ...

  2. 成都传智播客Java培训

    成都传智播客Java培训,严格按照北京传智播客的教育模式,为西南IT行业培养了许多优秀的软件开发工程师. 我们有专为0基础.或者基础不够硬的学员开设的Java基础与加强班,让你轻轻松松跨进Java的世 ...

  3. 传智博客教育课程(转)

    课程安排 第一阶段:JAVA基础增强/Oracle+MySql数据库+JDBC开发技术+DAO封装 核心技术课程 java基础加强:增强for循环.可变参数.枚举.反射.内省.beanutils工具. ...

  4. 一些网站 http://ychun.w.googlepages.com/pages

    大家都可以说话的地方: 电子产品世界:http://bbs.edw.com.cn nios论坛:http://www.niosforum.com 嵌入式论坛:http://www.anywlan.co ...

  5. Java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)

    这些日子,在看一些java的东西,由于刚入手,对java不是很了解,结果对java的一些名词没有一个清晰的脉络,现在稍微整理一下 令我纠结的是jdk,sdk,jre,jvm,ide,adt,跨平台性, ...

  6. [J2ME]手机看交通监视器实时录像 实现说明

    [J2ME] 手机看交通监视器实时录像<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office& ...

  7. 新手入门之j2me学习方法总结--摘录篇

    在学习的过程要自己做例子,曾经有朋友跟我抱怨说自己不知道做什么项目来训练,其实自己做练习并不一定要一个很完整的项目,可以从一些最基本的游戏模块开始练习,比如,如何在屏幕上显示一张图片或者多张图片,如何 ...

  8. 学习J2ME编程需要掌握的七种技术

    J2ME编程是Java在智能家电领域的应用,主要包含以下技术: 1.高级用户界面 高级用户界面是指J2ME编程中用到的Form(窗体).TextBox(文本框).List(列表框)和Alert(提示信 ...

  9. J2ME程序开发新手入门九大要点

    一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一 ...

  10. Java的不同版本:J2SE、J2EE、J2ME的区别

    一. Java概述 1. Java语言概述 2. Java虚拟机以及跨平台原理 3. Java的主要就业方向 4. Java的不同版本 5. Java开发环境搭建 6. 第一个Java程序示例 7.  ...

最新文章

  1. 阿里工程师告诉你,在性能测试的过程中会遇到哪些问题?
  2. 30.32.33.词云图、3D绘图、矩阵可视化、绘制混淆矩阵
  3. 我的世界服务器抽奖系统怎么弄,我的世界自动识别货币抽奖机如何制作
  4. 2017双11技术揭秘—分布式缓存服务Tair的热点数据散列机制
  5. 爬虫学习二: bs4 xpath re
  6. 新海诚没有参与制作的作品_新海诚简介和所有作品列表
  7. Windows环境zip版PostgreSQL数据库安装
  8. megafiers3.14下载
  9. 采矿工具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. xp计算机内存条启动,xp系统出现“xx内存不能为read或written”怎么解决
  11. 【EXLIBRIS】#小词旮旯# 002 Rape
  12. 2.flask模板--jinja2
  13. fftn N 维快速傅里叶变换(Matlab)
  14. 802.11ac知识整合
  15. html如何删除目录,无法删除文件夹 目录不是空的
  16. 涉密计算机能用固态硬盘,电脑硬盘有坏道还能继续使用吗?不要抱侥幸心理,可能后悔莫及...
  17. filter_input
  18. 苏宁精准营销之生成人群包的演进
  19. 用 Java 生成和识别二维码就这么简单
  20. 怎么样才能学好数学?

热门文章

  1. 关于LTE网络质量的参数
  2. 笔记本电脑光驱位置装固态硬盘流程
  3. 关于ramp texture的使用
  4. 未来15年,还有一波“增量”机会
  5. N个数选出M个最小或最大值算法
  6. MBA——mba的9堂课
  7. c++11总结21——atomic_flag
  8. 【华为编程大赛】投票问题
  9. python股票量化交易(10)---使用机器学习算法预测股票涨跌
  10. 案例介绍 犹他州交通规划网络地图中心