博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2ME中文教程之J2ME技术概述(转)
阅读量:2494 次
发布时间:2019-05-11

本文共 3450 字,大约阅读时间需要 11 分钟。

随着移动通信的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点。在网上进行的最近一份调查显示,有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体系结构的框图:
20059694019898.jpg
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状态改变情况:
20059694019367.jpg
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.
  对于详细的生命周期问题,读者可以查看其他教程籍或者本指南以后的更新的版本。
  最后,简要说一下J2ME项目的开发流程作为本章的结尾。开发流程一般是按照如下顺序:编写源程序、编译为class文件、进行预校验、打包和发布应用程序。关于详细的开发流程以及如何使用集成开发环境开发J2ME应用程序,会有其他的文章讲解。

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

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

你可能感兴趣的文章
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>
期货市场技术分析01_理论基础
查看>>
期货市场技术分析02_趋势的基本概念
查看>>
期货市场技术分析03_主要反转形态
查看>>
期货市场技术分析04_持续形态
查看>>