栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·J2ME基础入门教程
·熟练使用J2ME在实际开发中的可选包MMAPI
·新手入门之j2me学习方法总结--摘录篇
·J2ME程序开发新手入门九大要点
·J2ME综合:如何在MIDP中实现图片放缩
·J2ME与WebService-KSOAP快速上手
·如何使用“月蚀”进行J2ME开发
·J2ME概述
·J2ME进度条与线程化模型实例解析
·J2ME实现可伸展目录树TreeList(图)
·J2ME的现状与发展
·知己知彼——J2ME技术详
·告诉你J2ME是什么
·Java思路开发易于移植的J2ME游戏
·关于J2ME——MIDP1.0中的碰撞检测
·J2ME工具:使用j2meunit进行游戏测试
·在J2ME中读取各种格式的文本文件
·如何搭建J2ME的开发环境之一二
·J2ME学习系列之如何将J2ME与XML集成
·使用J2ME中的page进行编码转化

    您现在的位置: Linux宝库 >> Java >> J2ME >> 核心技术 >> 文章正文
J2ME应用基础
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/45985.html
联系:linuxmine#gmail.com
分类:[核心技术]
  自从1995年面世以来,已经大大超出了最初Applet应用范畴,在Java发布两年后Sun公司推出了主要针对于企业级应用的J2EE(Java 2 Enterprise Edition),而最近加入到Java产品家族的是J2ME(Java 2 Micro Edition),它的目标直指所谓的“信息设备”,包括电视机顶盒到移动电话的一系列产品。

  Java版本

  目前Java主要包括以下三种版本:

  ● 标准版(J2SE):运行在桌面电脑和工作站上;

  ● 企业版(J2EE):内置支持Servlets,JSP和XML,主要针对服务器端应用;

  ● 简化版(J2ME):针对那些具有有限存储、小显示以及有限处理能力的设备。

  注释:1998年12月,Sun提出了"Java 2"(J2)这个名字来指Java 1.2 这个版本。现在这个名字已经应用到所有的Java版本中,包括标准版(J2SE),企业版(J2EE)和简化版(J2ME)。

  

  图1 Java的不同版本

  为什么使用J2ME?

  J2ME主要针对那些具有有限处理能力的设备。许多这类设备(比如手机、传呼机等)原来并没有提供下载和安装软件的功能,但是随着J2ME的引入,这一切都得到了改变,J2ME使得这些设备具有了浏览,下载以及安装Java程序的功能。

  这些小的消费类电子设备正悄悄地改变着我们的生活。而且,随着它们对Java的支持,你就可以使用Java语言的许多优秀特性,简单,跨平台,安全健壮,更不用说超过200万使用者的经验和信心啦。

  尽管在这些小型设备上使用完整的J2SE API是令人兴奋的,但却是不现实的。想想看,手机的小屏幕是没办法让Java AWT(Abstract Window Toolkit)施展拳脚的。于是不同于J2SE和J2EE的Java简化版就产生了,这就是J2ME。

  我们知道,J2ME应用的设备性能千差万别。一个因特网Screenphone(一种访问邮件,新闻,在线银行业务等的设备)拥有比一寻呼机大得多的显示屏。有时即使外形相当,性能也会有很大差异。一个移动电话和PDA同样在物理大小上被限制,然而一个典型移动电话支持12288像素(96 x128)显示,PDA却至少可以支持20000像素。

  那J2ME是怎么能够支持这些设备的呢?

  J2ME定义了两种类型的规范:配置(configurations)和子集(profiles),由它们来协同提供对各种设备的支持。

  配置(Configurations)

  一个Configuration定义了针对一系列设备的Java平台。Congiguration与Java 虚拟机(JVM)紧密联系。实际上,Configuration就是定义了Java的语言特性和JVM的核心类库。

  不同的Configuration应用分类主要基于设备以下几个方面的考虑:内存,显示,网络连接和处理能力。

  在Sun的J2ME FAQ中这样形象地定义:J2ME技术主要针对两种设备:你拿在手里的,你插到墙上的。确实如此,但这只是个很笼统的说法,实际应用过程中不要受此约束。

  下面介绍两种典型的Configurations:

  ● 连接设备配置(CDC)

  至少512KB内存运行Java;

  至少256KB供运行时存储分配;

  持续稳定和高带宽的网络连接(相对于CLDC来说)。

  ● 连结有限设备配置(CLDC)

  128KB内存运行Java;

  32KB供运行时存储分配;

  受限制的用户接口;

  能量有限,主要以电池提供能量;

  网络连接可能是窄带宽、不稳定的,且以无线连接为主。

  虽然这个划分似乎相当清楚,CDC针对机顶盒之类高端设备,而CLDC主要针对移动电话、PDA和传呼机等低端设备,但不必拘泥于此。随着技术的不断进步,两者之间的界限也越来越模糊。

  ● 子集(Profiles)

  一个Configuration涵盖的设备很复杂,各种设备的性能也大不一样,可能对于某种设备来说的限制在其他设备看来就不是什么问题。前面我们提到移动电话和PDA都符合CLDC的要求,但是还记得开头部分我们对它们的显示性能做的对比吗?为了应付这些不同,Sun又提出了Profile这个概念。

  如果说Configuration是从大的方面给这些设备分类的话,那么Profiles就是在特定的Configuration上再细分,是对Configuration的延伸和拓展。它提供给开发者在特定类型设备上开发的类库。比如说,移动信息设备子集MIDP(Mobile Information Device Profile)就是综合考虑了移动设备的屏幕和内存限制,定义了一些用户接口组件,输入和事件处理,存储,网络和计时方面的APIs。

  Configurations和Profiles是如何被开发出来的?

  J2ME FAQ(http://java.sun.com/j2me/faq.html)的节录:这些工作都是由JCP(Java Community Process)来完成的,更多信息请查看:http://jcp.org。

  Java虚拟机

  我们知道,任何Java程序都是在JVM中被执行的。那么对于J2ME来说,情况又是如何呢?CDC仍然使用与J2SE相同的JVM,对于CLDC,由于设备资源受到限制,Sun专门开发了一个新的名叫KVM(K Virtual Machine)的虚拟机。这是个不同于传统的Java虚拟机:

  ● 虚拟机本身仅仅需要40-80KB内存;

  ● 只需要20-40KB动态内存(堆);

  ● 能够运行在16位25MHz处理器上。

  当然KVM只是一个由Sun实现的符合CLDC规范的Java虚拟机而已,它并不是唯一的,还存在很多类似的虚拟机,你也完全可以自己实现一个这样的虚拟机,只要它符合CLDC规范就可以。

  KVM和CLDC是如何联系在一起的?

  摘自Sun的文档:“CLDC是对能运行在由它和相关profiles界定的设备上的Java虚拟机的规格说明”,言下之意就是虚拟机必须满足CLDC规范要求。KVM即是其中一个。

  J2ME整体架构

  前面我们大致地了解啦一下J2ME的各个方面,现在让我们从整体上来看看J2ME。

  通用J2ME架构

  

  图2 通用J2ME架构

  MIDP架构

  在这个通用架构基础之上,我们可以衍生出不同的应用类型,现在比较流行的就是MIDP架构。

  

  图3 MIDP架构

  Java版本间兼容性

  Java有句名言:“编写一次,随处运行”(Write Once,Run Anywhere),也有人戏称为"Write Once,Debug Anywhere",那我们想问问:对于J2ME来说,这依然成立吗?答案是在某种程度上是对的。

  J2SE应用能在J2ME上运行吗?

  J2ME基本上可以算作J2SE的一个简化版本,J2SE中的很多功能J2ME并没有提供,所有说只有当你编写的J2SE程序只采用J2ME中有的类并且严格遵守J2ME规范,它才可能在J2ME上运行,不过那样的程序是毫无意义的。

  J2ME应用能在J2SE上运行吗?

  和上面同理,只要你的J2ME程序只采用两个平台共同具有的特性,就可以正常运行。但是要知道,J2ME应用中的大部分都是针对特定设备的应用接口和事件处理。

  本文来自:http://doc.linuxpk.com/45985.html

 
     最新更新
·深入了解J2ME的几个重要概念
·J2ME学习笔记(6)—连接MIDlet到文本文件
·J2ME学习笔记(5)—MIDlets中的图形编程
·J2ME学习笔记(4)—用MIDPAPI开发MIDlets
·J2ME学习笔记(3)—初次接触MIDlets
·J2ME学习笔记(2)—平台体系结构详解
·J2ME学习笔记(1)—平台介绍及简单实例
·J2METimer-更简单的实现多任务调度执行
·J2ME基础知识
·J2MEMIDP提供的最重要的图形元素
·精通J2ME中的HelloWorld
·J2METimer使用指南
·请关注J2MEWTK2.2的新特性
·详细介绍并掌握J2ME的安全结构
·如何使用“月蚀”进行J2ME开发
·如何搭建J2ME的开发环境之一二
·J2ME编程实例---之数字键的测试
·利用J2ME与ASP建立数据库连接
·J2ME平台构件及开发应用程序示例
·J2ME(CLDC/MIDP)简介
·关于J2MEMIDP1.0.3中的安全问题简述
·学习在J2ME中使用代码
·J2ME的起源和发展历程
·认识了解“J2ME”
·探索J2ME:用GCF通信
·探索J2ME:使用记录管理系统
·探索J2ME:对记录进行排序
·浅析J2EE、J2SE和J2ME
·J2ME应用基础
·探索J2ME:创建开销细节表单