BlackBerry J2ME 编程指南(二)

来源:互联网 发布:淘宝店设置信用卡支付 编辑:程序博客网 时间:2024/05/19 04:03

作者:

 

 

5 J2ME 简表

 

 

 

 

 

5.1 J2ME 简表?

 

我们前面提及的一个表定支持设的类。例动信息备简表

 

(MIDP),定义了蜂窝类。它一些定于加入 J2ME 配置中来定义类似设的使。已 J2ME 定义了两个表:KJava  MIDP 。它们都构  CLDC 之上。KJava  MIDP 都和  CLDC 及小型设 备相关

简表被构建在置的部。由简表特定应用程的设的大存的数),以,

简表是某种定的关联的。 在纲要简表上您可创建自的简,这简表也为基表,对于  CDC 也是可用的

而,在教程本节们将只点学建立在  CLDC 上的  MIDP 简表。


5.2 简表 : MIDP

 

MIDP 适合诸如蜂窝电话和寻机等动设备。MIDP  KJava 一样,也是立在  CLDC 之上的,并 且提供个标的运境,允在终用户动态地署新应用服务。

MIDP 是一个公共移动设设计工业表,它依赖个特家。对移动用程序

开发来,它一个、受支的基

MIDP 包含下列软前面  3 个是核心  CLDC 件包,  3 个特定于  MIDP 的软件包。我将在 后面的程中论每包:

· java.lang

 

· java.io

 

· java.util

 

· javax.microedition.io

 

· javax.microedition.lcdui

 

· javax.microedition.midlet

 

· javax.microedition.rms

 

 

6. J2ME 开发

J2ME 开发的工具多,里我们以 Sun 公司发 WTK 为例说明 下载和  J2ME 无线工具包  (J2ME Wireless Toolkit)

 

J2ME 无线工具包个完整开发境来测试  MIDP 应用程序。下包括工、文和仿真 环境,如,个与  Forte for Java 集成的模块。

目前,J2ME 无线工具仅支持  Windows 98 第二版、Windows NT 4.0  Windows 2000 是可用的,不 支持  Windows 95J2ME 线工具  Solaris  Linux 版本在本教程编时正处筹划中。

 Windows 环境下安装  J2ME 无线工具包请步骤:

1. 下载  J2ME 无线工具包。

2. 运行  j2me_wireless_toolkit-1_0_1-fcs.exe 安装无线工具 当系统提示您供安目录时请确该安的完全法的径中任何空。这帮助

今后使工具时避出现的题。


第二 J2ME  J2SE 的差异

 

在第二篇 J2ME 基本介绍,通过对 CLDC/MIDP 以及 J2ME 编程的比较我们已经看 J2ME 和标准

Java 编程的一些差异我们会两个 J2ME  J2SE 编程的重差异。

 

 

如下是个标 J2SE 命令行序的例,说标准的 J2SE 编程中,要一个以 main 函数作为入 口的启点。

 

 

 

如下部是一标准的 J2ME 的程序的题部,不 J2SEJ2ME 的程序的启动以及行是个个 元构成在下关于 J2ME 应用简的介中,重点介绍 MIDLET 的写法和生命周


 

 

 

从这两图来,标 J2ME 的程序开发,和 J2SE 的差异还很大。下们就从个开领域的

总体和体分别类的 API 类别来明,这两编程的候的异。

 

1 API 差异

 

 

 

1.1  CLDC API

 

1.1.1 介绍

 

 

迄今为止,我们  CLDC 比较适合  J2ME,并且也已经立了们的境。在一章,我 更深入探索  CLDC APICLDC API 实际上只是  J2SE 的一个集,包括  java.langjava.io java.util,另加一个新件包  -- javax.microedition。我们将逐来研软件包并突显示 个包中重要类。

尽管每一个类  J2SE 中,但是有必让每个类的  CLDC 实现都能实现  J2SE 支持的所有方 您可以  CLDC API 文档以确认些方是受

1.1.2 java.lang

CLDC java.lang 软件包是  J2SE java.lang 软件包的一子集  J2SE 比,它引人目的可 能便是长的点操特别是  (Float) 精度  (Double) 类。如果使用浮点话,些冗 涉及到有其的类。

相对于  J2SE v1.3 APICLDC API 中删去了几其它的。其  ClassLoaderCompiler InheritableThreadLocalNumberPackageProcess  RuntimePermissionSecurityManager StrictMathThreadGroupThreadLocal  Void

我们描述了可下面页表中的  CLDC java.lang 软件包获取主要Java 开发人员对有这

些类的使用都该是悉了。

除这些核心类外,还将看到  CLDC 支持的  Runnable 接口,正象  Exception Error 和其它有关 的类一


 

1.1.3 java.lang 核心运行时类

 

java.lang 软件包的核心运行类有:

· Class -- 显示正在运行的  Java 应用程序中的和接口。

· Object -- 与在  J2SE 中相同Object 是所有  Java 对象的基本类。

· Runtime --  Java 应用程提供种与环境Java 应用程序在中运行互的方 法。

· System -- 提供一静态的助方,就  J2SE 提供方法一样。

· Thread -- 定义  Java 程序的一执行线程。

· Throwable -- Java 语言中有错和异级类。

 

1.1.4 java.lang 核心数据类型类

 

java.lang 软件包中的核心数类型有:

· Boolean -- 包装  boolean 原始数据类

· Byte - 包装  byte 原始数类型。

· Character -- 包装  char 原始数据类型。

· Integer -- 包装  int 原始数据型。

· Long -- 包装  long 原始数类型。

· Short -- 包装  short 原始数据

 

1.1.5 java.lang 帮助类

 

java.lang 软件包的帮助类有:

· Math -- 包含执行本数学算的法。,所有行浮值运法都被略了仅保 关于  integers  longs 的方法abs()min()  max()

· String --  Java 中代表  String,就像在  J2SE 中一样。

· StringBuffer -- 代表一个以修的串  J2SE 中一样。

 

1.1.6 java.io 输入类

 

CLDC API 包含许多  J2SE 中共同使用的入类CLDC java.io 软件包中包括面一类:

· ByteArrayInputStream -- 包含一个内缓冲,它代可能输入取的字

· DataInput -- 一个接口,从进制入流节以供取并它们原始  Java 数据类型。

DataInputStream 提供该接口的实

· DataInputStream -- 允许应程序独立的方式基层入流原始  Java 数据类型。

· InputStream -- 抽象类它是有代输入流类的级类。

· InputStreamReader -- 读取字节并它们定的字编码法转符。

· Reader -- 一种读字符流抽象

注意:其中一类可不包含  J2SE 姊妹版支持所有方,就  java.lang 软件包中一样尤其 是省略浮点双精

1.1.7 java.io 输出类

 

 

CLDC API 包含了许多  J2SE 中的共同使用的。特别CLDC java.io 软件包包括面一 出类:


· ByteArrayOutputStream -- 实现一个输出此输出中数被写数组。

· DataOutput -- 一种接口,供原始  Java 数据类型以写入进制DataOutputStream 供该接的实

· DataOutputStream -- 一个输出,允应用序以一便捷方式  Java 数据类型。

· OutputStream -- 一个抽象,它所有节输出的类超级

· OutputStreamReader -- 给出字符,并指定字符编方法其转节。

· PrintStream -- 一种便的方来打值的文表现式。

· Writer -- 编写字流的一抽象

其中一些类可不包含  J2SE 支持的所有法,如浮点双精方法。

 

1.1.8 java.util 收集类

 

CLDC java.util 软件包中包含  J2SE java.util 软件包中最用的。这包括四收集(实际 是三个集类一个,以及期/间和序类。

CLDC 支持的  java.util 收集类有:

· Enumeration -- 接口,过项集允程进行复调

· Hashtable -- 实现  hashtable,将键映射值。

· Stack -- 代表了一个后进先出  (LIFO) 的对象集合或堆

· Vector -- 代表可调整大的对数组矢量

 

1.1.9 java.util -- 其它的类

 

CLDC 支持的  java.util 中其余分包日期类,以及  Random 实用程序类。下中简列出了 这些类。

· Calendar -- 一个抽象类,使用一整型段如  YEARMONTH  DAY 获取和置日

· Date -- 代表特定时间和期,确到

· Random -- 一个实程序类用来  int  long 的随机值流。

· TimeZone -- 代表时区的偏量,用于间。

 

1.1.10 javax.microedition.io

 

迄今为,我  CLDC API 中看到的所的类  J2SE API 的子类。CLDC 包含一附加软件包  -

- javax.microedition.io

在这个包里唯被定的类就是  Connector 也称为厂类包含  Connection 对象或输入、 输出流方法。

当动态识别一类的字时Connection 对象就被创建。类称的于平台称和请求

的协议描述标对数串应满足  RFC 2396 范所要的格。请使列格式:

{scheme}:[{target}][{params}]

{scheme} 是一个协议名称,如  http  ftp{target} 通常是一个网络址,但面向网络 议则可把它作一灵活的段来理。些参数  {params} 被指定为一列形如  ";x=y" 的分配式(如,;myParam=value)。

 

1.1.11 javax.microedition.io 帮助接口

 

除类连接厂类javax.microedition.io 软件包中还含下连接的口:

· Connection -- 定义了最基的连类型接口也此软包中它连接口的本类。

· ContentConnection -- 定义了一个以通的流连


· Datagram -- 定义了一个类数据接口。

· DatagramConnection -- 定义了类属数报连和它必支持性能。

· InputConnection -- 定义了个类输入和它必支持性能。

· OutputConnection -- 定义了一类属出流接和它须支的性

· StreamConnection -- 定义了一类属连接它必须持的能。

· StreamConnectionNotifier -- 定义了一个流接的通程序须具

 

 

 

2. MIDP API

 

2.1 介绍

 

移动信息设备  (MIDP) 适合类似于蜂电话寻呼机样的MIDP,就象  KJava 一样,同样 也建立在  CLDC 之上。MID 简表提一种准的环境,许在端用上动态配置的应用 程序和务。

在本章中,我将详地讨论  MID 定义的七个件包。们还建立  MIDP 应用程序示例。

 

2.2 UI 设计注意事项

 

MIDP 包括一个低  UI API 和一个高级的  UI API。低级的  API 允许您完访问一设备显示 屏,也许访原始针事件然而使用  API 时,  没有可用的面控件应用序必须 精确地制出钮和有的控

相反,高级  API 提供简单的用界面件但接访问始的入事示屏。于显屏的尺

寸和  MIDP 设备输入方法差异,件显很抽MIDP 的实现确定了制控的方法也确了如 理用户入。

让我们在后面章节更进一了解  MIDP 的软件包和类。

 

 

2.2 MIDP API

 

MIDP 包含四个核心  CLDC 软件包  (java.langjava.iojava.util  javax.microedition.io),另 加下面三个定于  MIDP 的软件

· javax.microedition.lcdui

· javax.microedition.midlet

· javax.microedition.rms

我们将在本章后面分详细绍特  MIDP 件包。了上新的之外MIDP 还向核心

CLDC 软件包添加四个类,如所示。

· java.util.Timer -- 用于为台线中将行的任确定间。

· java.util.TimerTask --  java.util.Timer 类使用用来后台线稍后的行定任务。

· javax.microedition.io.HttpConnection -- 个接口  HTTP 连接定义必要的法和量。

· java.lang.IllegalStateException -- 一个  RuntimeException  指出在不合法或合适时间已 经调用一个法。

 

2.3 MIDlet 介绍

 

MIDlet 是一个  Java ,它扩  javax.microedition.midlet.MIDlet 抽象类。实现  startApp() pauseApp()  destroyApp()方法,这方法似于  J2SE  java.applet.Applet 类中的  start() stop()  destroy()方法。


除了扩充  javax.microedition.midlet.MIDlet  MIDlet 类之外,一个  MIDP 应用序通常还 其它一类,些类们的资一起打包  jar 文件  -- 称之为  MIDlet 套件。一个  MIDlet 件中的  MIDlet 能共享  jar 文件的资源尽管同套件  MIDlets 直接相作用。

 

本章头,经看MIDLET程序的基本子了,里我信说MIDLET应用的周期。 MIDlet 在应用程序生命期中有种可的存状态  -- 运行状态、暂停销毁状。运状态 如其名所暗的,味着  MIDlet 正在运行中状态始于  startApp 方法被调用时在暂状态 中,MIDlet 持有的所有源将被放,是它再次被行。  notifyPaused 方法时MIDlet 处于暂状态在销MIDlet 已经永久地其自身闭,放所源,等着废清理 的处理它是  notifyDestroyed 方法来调用的。

在接下来的两中,们来看个简  HelloWorld MIDlet

 

 

2.4 HelloWorld MIDlet

 

 

这个  MIDlet 也会在  MIDP 设备的显示屏上  "Hello World!"  Exit 钮,按该按会终止 应用程

HelloWorld.java 以下面代码开始代码行入稍会在  HelloWorld 类中使用的:

import javax.microedition.midlet.MIDlet;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form;

由于  HelloWorld 一个  MIDP 应用程序,它展了  MIDlet。它也实现  CommandListener 接口来处

理事件:

 

public class HelloWorld extends MIDlet implements CommandListener

下面的方法是个缺构造程,它建一单,在面初化控后显示来:

private Form form;

public HelloWorld() {


// Create a new form on which to display our text form = new Form("Test App");

 

// Add the text "Hello World!" to the form form.append("Hello World!");

 

// Add a command button labeled "Exit"

form.addCommand(new Command("Exit", Command.EXIT, 1));

 

 

// Register this object as a commandListener

form.setCommandListener(this);

}

 

 

调用  startApp() 启动应程序小应的启动法很。在  MIDle 的一次执中它能会

被调用次。  MIDlet 暂停pauseApp() 将会被调用。重新  MIDlet,需调用  startApp()。仅 须执行次的初始应该放在构程序

 

public void startApp()

{

// Get a reference to the display, and show the form Display display = Display.getDisplay(this); display.setCurrent( form );

}

pauseApp() 被调用使得  MIDlet 处于暂停状此应用序中当进状态时我们执行任 何操作但是们仍  MIDlet 中实现  pauseApp 方法,因为是父  MIDlet 类中的抽象法。

public void pauseApp() { }

destroyApp() 被调用,破坏了  MIDlet 并使其处销毁状。在应用,我们过将用设为

null,释放了对表单

public void destroyApp(boolean unconditional)

{

form = null;

}

commandAction() 是事件理程,被  CommandListener 。目前它破了应 序并通应用序管软件  MIDlet 已经完成。

 

public void commandAction(Command c, Displayable d)

{

// Destroy this MIDlet destroyApp(true);

 

// Notify the application management software that this MIDlet

// has entered the destroyed state notifyDestroyed();

}

 

2.5 MIDP 件包

 

标准  CLDC 软件包之外MIDP 还包含三个加的软包:

· javax.microedition.lcdui -- 定义用来控制  UI 的类。这软件既包高级  UI 类(例如


FormCommandDateField  TextField 等),又含低级  UI 类(允许方式控制  UI)。

 

· javax.microedition.midlet -- 包含  MIDP 主类中的一MIDlet 类,为  MIDP 应用程序提访问 关于其行所环境权限。

 

javax.microedition.rms -- 定义一个类集合这些类为  MIDlet 提供了永久存储随后新得 据的机

 

 

2    API

 

在本章第一分,J2MEcldc配置和mdlp简表的介绍我们经了J2ME的编程J2SE 差异。这一分,通过对体各类型API功能编的不,来分析这种开模式 异。

 

 

2.1 In/Out

 

这里是J2MEio规范

 

 

 

 

初看到J2ME的版本,会觉得意外因为比起J2SE的版本,IO的功能很多。 下面这图是J2SEIO框架,果要J2SE的具体的IO输入输的类以参Sunjavadoc api文档。


 

 

 

2.2 String 操作

 

一般说J2MEJ2SEstring操作差别不大,如前面二章到过JVMKVM的差异以及两个 平台的API不同,些时有些很微的异,个平台都有StringStringbuffer的类别,但是 stringsplit/replaceall方法,J2ME中是不


 

 

 

所以在制具应用,如果现有类别工作,需要虑自一个实

如下是J2SEAPI方法截图:

 

 

 

 

这里就是一个在 J2ME 中分割 split 方法的实

/**


* 分割字符串,原理:检测字符串中的分割字符串,然后取

* @param original 要分割的字

* @paran regex    分割字

* @return 分割后生的字符串

*/

private static String[] split(String original,String regex)

{

//取子串的起始位置

int startIndex = 0;

//将结果数据先放入 Vector

Vector v = new Vector();

//返回的结果字符串数组

String[] str = null;

 

//存储取子串时起始位置

int index = 0;

//获得匹配子串的位置

startIndex = original.indexOf(regex);

 

//System.out.println("0" + startIndex);

 

//如果起始字符串的位置小于字符串的长度,则证明没有取到字符串末

//-1 代表取到了末尾

while(startIndex < original.length() && startIndex != -1)

{

String temp = original.substring(index,startIndex); System.out.println("  "  + startIndex);

//取子串

v.addElement(temp);

//设置取子串的起始

index = startIndex + regex.length();

//获得匹配子串的位置

startIndex = original.indexOf(regex,startIndex + regex.length());

}

//取结束的子串

v.addElement(original.substring(index + 1 - regex.length()));

 

// Vector 对象转换 str = new String[v.size()]; for(int i=0;i<v.size();i++)

{

str[i] = (String)v.elementAt(i);


}

//返回生成的数组

return str;

}

 

 

BlackBerry SDK下载

 

 

  • BlackBerry Java Plug-in for Eclipse v1.1
  • Java Plug-in for Eclipse Update Site
  • BlackBerry Web Plug-in v2.0
  • BlackBerry Widget SDK v1.0
  • BlackBerry Theme Studio v5.0
  • Plazmic Content Developer’s Kit v4.7
  • BlackBerry smartphone simulators
  •  

    相关链接:

    BlackBerry J2ME 编程指南(一)

    BlackBerry J2ME 编程指南(二)

    BlackBerry J2ME 编程指南(三)

    原创粉丝点击