网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  对j2me技术的基本概述以及体系结构介绍     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:89次  录入:管理员--2007-11-16  
 

随着移动通信的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点。在网上进行的最近一份调查显示,有24.34%的受访者涉足嵌入式/移动设备应用开发,这个数字可能略高于实际的比例,但也足可说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪。j2me(java 2 micro edition)是嵌入式/移动应用平台的王者,linux和wince分列二、三位。nokia等厂商力推的symbian平台目前开发者占有率尚未达到满意水平,考虑到调查项合并了嵌入式设备(例如pda)和移动设备(例如智能手机),symbian、wince系列在移动平台上会是竞争的主要两方。如果厂商能在标准实现上做得更加规范,则j2me的跨平台特性会发挥得更加淋漓尽致,继续保有王者地位。本章将从j2me的体系结构和midlet应用程序模型。

什么是j2me

学习j2me以前知道什么是j2me是非常重要的。j2me是sun公司针对嵌入式、消费类电子产品推出的开发平台,与j2se和j2ee共同组成java技术的三个重要的分支。j2me实际上是一系列规范的集合,由jcp组织制定相关的java specification request(jsr)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过tck测试,这样确保兼容性。比如midp2.0规范就是在jsr118中制定的。可能接触过j2me的开发者会觉得说j2me是一系列的规范不准确吧。因为我们在开发中用到了很多例如cldc(connected limited devices configuration)和midp(mobile information devices profile)等内容。其实这并不矛盾,因为这些就是在相关规范中制定的。如果你还没有很好的理解这个问题,没有关系,请继续往下面看,我们开始认识j2me平台的体系结构。

j2me平台体系结构

j2me平台是由配置(configuration)和简表(profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含java虚拟机。简表是针对一系列设备提供的开发包集合。在j2me中还有一个重要的概念是可选包(optional package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能j2me中制定了jsr82(bluetooth api)提供了对蓝牙的支持。

目前,j2me中有两个最主要的配置,分别是connected limited devices configuration(cldc)和connected devices configuration(cdc)。他们是根据设备的硬件性能进行区分的,例如处理器、内存容量等。由于这个标准是在2001年的时候指定的,而现在移动终端的处理能力和内存容量发展很快,如果还按照这个标准来评判可能就不准确了。 因此我们只是列出标准,供读者参考。本教程将主要讲解基于 cldc的j2me平台的相关内容。随着技术和硬件设备的不断发展,j2me开发网将逐步推出基于cdc的j2me平台介绍。

cdc的硬件参数:

?2m以上内存。

?具有网络连接能力,通常为无线网络。

?需要实现java虚拟机规范的全部功能。

?32位或者64位的处理器。

cldc的硬件参数:

?512 kb 以下内存

?有限能源供应(通常使用电池)

?有限或非持续网络连接

?简单的用户界面

?16位或者32位的处理器

从上述的标准中我们不难看出cldc主要针对那些资源非常受限的设备比如手机、pda、双工寻呼机等。而cdc主要面对那些家电产品,比如机顶盒、汽车导航系统等。简表是以配置为基础的,例如mobile information devices profile(midp)就是cldc上层的重要简表。与配置的纵向特性不同的是,简表是横向的。下图是j2me体系结构的框图:

j2me体系结构框图

midlet应用程序的生命周期

理解j2me的体系结构并不像想象的那么容易,我们觉得读更多的资料帮助也不大,我们直接迈向j2me开发也许会对你理解j2me平台体系结构这个重要的概念有所帮助。在midp中定义了一种新的应用程序模型midlet,它是被application management software(ams)管理的。ams负责midlet的安装、下载、运行和删除等操作。在被ams管理的同时,midlet可以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifydestroyed()和notifypaused()实现的

midlet有三个状态,分别是pause、active和destroyed。在启动一个midlet的时候,应用管理软件会首先创建一个midlet实例并使得他处于pause状态,当startapp()方法被调用的时候midlet进入active状态,也就是所说的运行状态。在active状态调用destroyapp(boolean unconditional)或者pauseapp()方法可以使得midlet进入destroyed或者pause状态。值得一提的是destroyapp(boolean unconditional)方法,事实上,当destroyapp()方法被调用的时候,ams通知midlet进入destroyed状态。在destroyed状态的midlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,midlet可以在接到通知后抛出midletstatechangeexception而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。下图说明了midlet状态改变情况:

midlet状态图

下面通过一个例子来验证midlet应用程序的生命周期:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class helloworld extends midlet{
 private display display;
 //构造函数

 public helloworld(){
  display = display.getdisplay(this);
  system.out.println("constructor");
 }

 public void startapp(){
  system.out.println("startapp is called.");
  form f = new form("hellotest"); 
  display.setcurrent(f);
 }

 public void pauseapp(){
  system.out.println("pauseapp is called.");
 }

 public void destroyapp(boolean unconditional){
  system.out.println("destroyapp is called.");
 }
}

编译该程序后运行,控制台上就会依次输出:

constructor startapp is called.

当我们退出该程序时,控制台就会输出:

destroyapp is called.

对于详细的生命周期问题,读者可以查看其他教程籍或者本指南以后的更新的版本。

 
 
上一篇: 在java web应用中如何实现任务有效调度    下一篇: java编程技巧之如何实现http的断点续传
  相关文档
hibernate和jive缓存策略的比较 11-16
java中四种xml解析技术之不完全的测试 01-11
插入排序算法的java实现 11-16
tomcat下绑定jms应用服务器的实例讲解 11-16
构建高性能j2ee应用的10个技巧 11-16
调试器--jdb.exe 11-17
使用 java 连接处于proxy(or 防火墙)之外的http服务器 11-17
jspsmartupload上传下载全攻略(四) 11-17
java程序员必读:基础篇(2.a)语言基础 11-17
java编程中异常问题处理方式的区别和分析 04-18
java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子 11-17
一个实现长整型数相加减的小程序 11-17
jave基础学习:jdbc小技巧 11-16
java的字符串操作 11-17
powerfolder 工作流服务器版本0.5 试驾之旅(4) 11-17
用java实现回调例程 11-16
java实现数据驱动的命令用户界面 11-16
java中文件长度的转换 11-17
java基本概念名词一览 11-17
面向 java 开发人员的 ajax: 探索 google web toolkit 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息