BlackBerry J2ME 编程指南(二)

作者:

 

 

5 J2ME 简表

 

 

 

 

 

5. 1 J2M E 简表 ?

 

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

 

(MI D P ) ,定义了蜂窝 类。它 一些 定于 加入 J2M E 配置中来定义 类似设 的使 。已 J2M E 定义了两个 表: KJav a   M ID P 。它们都构   CLD C 之上。 KJav a   M ID P 都和   C LD C 及小型设 备相关

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

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

而,在 教程 本节 们将只 点学 建立在   CLD C 上的   MI D P 简表。


5. 2 简表   : MI D P

 

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

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

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

M ID P 包含下列软 前面   3 个是核心   CLD C 件包,   3 个特定于   MID P 的软件包。我 将在 后面的 程中 论每 包:

· ja v a. l an g

 

· ja v a. i o

 

· ja v a. u ti l

 

· ja v ax . mi c ro e di t io n. i o

 

· ja v ax . mi c ro e di t io n. lcd u i

 

· ja v ax . mi c ro e di t io n. mid l e t

 

· ja v ax . mi c ro e di t io n. rm s

 

 

6 . J2ME 开发

J2 M E 开发的工具 多, 里我们以 Su n 公司发 WT K 为例说明 下载和   J2M E 无线工具包   (J2 M E W ir e le s s T oo l k i t )

 

J 2M E 无线工具包 个完整 开发 境来 测试   MID P 应用程序。下 包括工 、文 和仿真 环境, 如, 个与   Fort e fo r J a v a 集成的模块。

目前, J2M E 无线工具 仅支持   Windo w s 9 8 第二版、 Wind o w s N T 4. 0   W i n d ow s 20 0 0 是可用的,不 支持   Wind o w s 9 5 J 2 M E 线工具   Sola r i s   L i nu x 版本在本教程编 时正处 筹划 中。

  W in d ow s 环境下安装   J2 M E 无线工具包请 步骤:

1 . 下载   J 2 M E 无线工具包。

2 . 运行   j 2 me _ wi r el e s s _to o lk i t - 1 _0 _ 1 - f cs . ex e 安装无线 工具 当系统提示您 供安 目录时 请确 该安 的完全 法的 径中 任何空 。这 帮助

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


第二   J2ME     J 2SE   的差异

 

在第二篇 J2M E 基本介绍 ,通过对 CLDC/MI D P 以及 J 2 M E 编程的比较 我们 已经看 J2M E 和标准

Jav a   编程的一些差异 我们会 两个   J2M E     J 2 S E   编程的重 差异。

 

 

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

 

 

BlackBerry J2ME 编程指南(二)_第1张图片  

如下部 是一 标准的 J2M E 的程序的 题部 ,不 J2S E J 2 M E 的程序的启动以及 行是 个个 元构成 在下 关于 J2M E 应用简 的介 中, 重点介绍 MIDLE T 的写法和生命周


 

BlackBerry J2ME 编程指南(二)_第2张图片  

 

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

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

 

1 AP I 差异

 

 

 

1. 1   C LD C A PI

 

1.1.1 介绍

 

 

迄今为止,我们   CLD C 比较适合   J2 M E ,并且也已经 立了 们的 境。在 一章 ,我 更深入 探索   CLD C A P I C LD C AP I 实际上只是   J2S E 的一个 集, 包括   java . lan g j av a .i o jav a .u t i l ,另加一个新 件包   - - j a va x .m i cr o ed i t i o n 。我们将逐 来研 软件包 并突 显示 个包中 重要 类。

尽管每一个类   J2S E 中,但是 有必 让每 个类的   CLD C 实现都能实现   J2 S E 支持的所有方 您可以   CLD C AP I 文档以确认 些方 是受

1.1.2 j ava.la ng

CLD C ja v a. l an g 软件包是   J2S E ja v a. l an g 软件包的一 子集   J2S E 比,它 引人 目的可 能便是 长的 点操 特别是   (Flo a t ) 精度   (Dou b le ) 类。如果使 用浮点 话, 些冗 涉及到 有其 的类。

相对于   J2 S E v 1. 3 A P I CLD C AP I 中删去了几 其它的 。其   Clas s Loa d e r C o mp i le r Inh e ri t ab l eT h re a dL o ca l Num b e r P a ck a g e P r oc e s s   Run t im e Pe r mi s si o n S e cur i ty M an a ge r Str i ct M at h T hr e ad G ro u p Thre a dL o ca l   V o i d

我们描述了可 下面 页表中的     CLD C   j a va . la n g   软件包 获取 主要 Jav a   开发人员对 有这

些类的使 用都 该是 悉了。

除这些核心类 外, 还将看到   CLD C 支持的   Ru n nab l e 接口,正象   Exce p t i o n E r ro r 和其它有关 的类一


 

1.1.3 j ava.la ng 核心运行时类

 

j av a .l a n g 软件包的核心运行 类有:

·   Cl a s s   - - 显示正在运行的     Jav a   应用程序中的 和接口。

· Ob j ec t - - 与在   J2 S E 中相同 Objec t 是所有   J av a 对象的基本类。

· Ru n ti m e - -   J av a 应用程 提供 种与 环境 Jav a 应用程序在 中运行 互的方 法。

· Sy s te m - - 提供一 静态的 助方 ,就   J2S E 提供方法一样。

· Th r ea d - - 定义   Ja v a 程序的一 执行线 程。

· Th r ow a bl e - - J a v a 语言中 有错 和异 级类。

 

1.1.4 j ava.la ng 核心数据类型类

 

j av a .l a n g 软件包中的核心数 类型 有:

·   Bo o le a n   - -   包装     b oo lea n   原始数据类

· By t e - 包装   b yt e 原始数 类型。

· Ch a ra c te r - - 包装   c ha r 原始数据类型。

· In t eg e r - - 包装   i n t 原始数据 型。

· Lo n g - - 包装   l o n g 原始数 类型。

· Sh o r t - - 包装   s ho r t 原始数据

 

1.1.5 j ava.la ng 帮助类

 

j av a .l a n g 软件包的帮助类有:

· Ma t h - - 包含执行 本数学 算的 法。 ,所有 行浮 值运 法都被 略了 仅保 关于   inte g er s   l o ng s 的方法 abs() min ( )   max ( )

· St r in g - -   J a v a 中代表   Stri n g ,就像在   J2S E 中一样。

· St r in g Bu f fe r - - 代表一个 以修 的串   J2S E 中一样。

 

1.1.6 j ava.i o 输入类

 

CLD C AP I 包含许多   J2S E 中共同使 用的 入类 CLD C j av a .i o 软件包中包括 面一 类:

·   By t eA r r a y In p ut S tr ea m   - -   包含一个内 缓冲 ,它代 可能 输入 取的字

· Da t aI n pu t - - 一个接口,从 进制 入流 节以供 取并 它们 原始   Jav a 数据类型。

Dat a In p ut S tr e a m   提供该接口的实

·   Da t aI n pu t St r ea m   - -   允许应 程序 独立 的方式 基层 入流 原始     Jav a   数据类型。

· In p ut S tr e a m - - 抽象类 它是 有代 输入流 类的 级类。

· In p u t S tr e am R ea d e r - - 读取字节并 它们 定的字 编码 法转 符。

· Re a de r - - 一种读 字符流 抽象

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

1.1.7 j ava.i o 输出类

 

 

C LD C A P I 包含了许多   J2S E 中的共同使用的 。特别 CLD C j av a .i o 软件包 包括 面一 出类:


· By t eA rra y Ou t pu t St re a m - - 实现一个输出 此输出 中数 被写 数组。

· Da t aO u tp u t - - 一种接口, 供原始   Jav a 数据类型以 写入 进制 Data O ut p ut S tr e a m 供该接 的实

· Da t aO u tp u tS t re a m - - 一个输出 ,允 应用 序以一 便捷 方式   Jav a 数据类型。

· Ou t pu t St r ea m - - 一个抽象 ,它 所有 节输出 的类 超级

· Ou t pu t St r ea mRe a de r - - 给出字符,并 指定 字符编 方法 其转 节。

· Pr i nt S tr e a m - - 一种便 的方 来打 值的文 表现 式。

· Wr i te r - - 编写字 流的一 抽象

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

 

1.1.8 j ava. ut i l 收集类

 

CL D C j av a .u t i l 软件包中包含   J2S E ja v a. u ti l 软件包中最 用的 。这 包括四 收集 (实际 是三个 集类 一个 ,以及 期/ 间和 序类。

C LD C   支持的     jav a .u t i l   收集类有:

·   En u me r at i o n   - - 接口, 过项 集允 程进行 复调

· Ha s ht a bl e - - 实现   h ash t ab l e ,将键映射 值。

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

· Ve c to r - - 代表可 调整大 的对 数组 矢量

 

1.1.9 j ava. ut i l - - 其它的类

 

CLD C 支持的   jav a .u t i l 中其余 分包 日期 类,以及   Rando m 实用程序类。下 中简 列出了 这些类。

· Ca l en d a r - - 一个抽象类,使 用一 整型 段如   YE A R MO N T H   D A Y 获取和 置日

· Da t e - - 代表特定 时间和 期, 确到

· Ra n do m - - 一个实 程序类 用来   in t   lon g 的随机值流。

· Ti m eZ o n e - - 代表时区的偏 量, 用于 间。

 

1.1.10 j avax .m ic ro e d it i o n .io

 

迄今为 ,我   CLD C A P I 中看到的所 的类   J2S E AP I 的子类。 CLD C 包含一 附加 软件包   -

-   j a va x .m i cr o ed i ti o n. i o

在这个包里唯 被定 的类就是   Connec t o r 也称为 厂类 包含   Conn e ct i o n 对象或输入、 输出流 方法。

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

的协议 描述 标对 数串应 满足     RF C   2 3 9 6   范所要 的格 。请使 列格式:

{ sc h em e }: [ {t a rg e t} ] [ { par a ms } ]

{ sc h em e } 是一个协议 名称,如   htt p   f t p { t arg e t } 通常是一个网络 址,但 面向 网络 议则可 把它 作一 灵活的 段来 理。 些参数   {par a ms } 被指定为一 列形如   ";x=y" 的分配 式( 如, ;myPa r am= v al u e )。

 

1.1.11 j avax .m ic ro e d it i o n .io 帮助接口

 

除类 连接 厂类 javax . mi c ro e di t io n . i o 软件包中还 含下 连接的 口:

·   Co n ne c ti o n   - -   定义了最基 的连 类型 接口也 此软 包中 它连接 口的 本类。

· Co n te n tC o nn e ct i o n - - 定义了一个 以通 的流连


· Da t ag r a m - - 定义了一个类 数据 接口。

· Da t ag r am C on n ec t io n - - 定义了类属数 报连 和它必 支持 性能。

· In p ut C on n ec t io n - - 定义了 个类 输入 和它必 支持 性能。

· Ou t pu t Co n ne c ti o n - - 定义了一 类属 出流 接和它 须支 的性

· St r ea m Co n ne c ti o n - - 定义了一 类属 连接 它必须 持的 能。

· St r ea m Co n ne c ti o nN ot ifi e r - - 定义了一个流 接的通 程序 须具

 

 

 

2. M I DP API

 

2. 1 介绍

 

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

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

 

2. 2 U I 设计注意事项

 

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

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

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

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

 

 

2. 2 MI D P A P I

 

M ID P 包含四个核心   CLD C 软件包   (ja v a. l an g j a v a.i o j av a .u t i l   ja v a x .mi c ro e di t io n .i o ) ,另 加下面 三个 定于   MID P 的软件

· ja v ax . mi c ro e di t io n. lcd u i

· ja v ax . mi c ro e di t io n. mid l e t

· ja v ax . mi c ro e di t io n. rm s

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

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

·   ja v a. u ti l .T i me r   - -   用于为 台线 中将 行的任 确定 间。

· ja v a. u ti l .T i me r Ta s k - -   ja v a. u ti l .T i me r 类使用 用来 后台线 稍后的 行定 任务。

· ja v ax . mi c ro e di t io n. io. H tt p Co n ne c ti o n - - 个接口   HTT P 连接定义必要的 法和 量。

· ja v a. l an g .I l le g al St ate E xc e pt i o n - - 一个   R u n tim e Ex c ep t io n   指出在不合法或 合适 时间已 经调用 一个 法。

 

2. 3 MI D le t 介绍

 

M ID l e t 是一个   J a v a ,它扩   java x .m i cr o e d iti o n. m id l et . MI D le t 抽象类。实现   startA p p( ) pau s eA p p( )   de s tr o yA p p ( ) 方法,这 方法 似于   J2S E   j av a .a p pl e t. A pp l e t 类中的   star t ( ) sto p ( )   d es t ro y ( ) 方法。


除了扩充   jav a x. m ic r o e dit i on . mi d le t .M I Dl e t   MID l e t 类之外,一个   MID P 应用 序通常还 其它一 类, 些类 们的资 一起 打包   ja r 文件   - - 称之为   MID l e t 套件。一个   MIDle t 件中的   MIDl e t 能共享   ja r 文件的资源 尽管 同套件   MIDl e t s 直接相 作用。

 

BlackBerry J2ME 编程指南(二)_第3张图片

本章 头, 经看 MIDLET 程序的基本 子了, 里我 信说 MIDLE T 应用的周期。 MID l e t 在应用程序生命 期中有 种可 的存 状态   - - 运行状态、暂停 销毁状 。运 状态 如其名 所暗 的, 味着   MI D le t 正在运行中 状态始于   startA p p 方法被调用时 在暂 状态 中, MIDle t 持有的所有 源将被 放, 是它 再次被 行。   noti f y P aus e d 方法时 MIDl e t 处于暂 状态 在销 MIDle t 已经永久地 其自身 闭, 放所 源,等 着废 清理 的处理 它是   noti f y D est r oy e d 方法来调用的。

在接下来的两 中, 们来看 个简     Hell o W o rl d   MI D le t

 

 

2. 4 Hello Worl d M IDle t

 

 

这个   MIDle t 也会在   M ID P 设备的显示屏上   "Hel l o W or l d! "   E x i t 钮,按 该按 会终止 应用程

H el l oW o rl d .j a v a   以下面 代码 开始 代码行 入稍 会在     Hell o Wor l d   类中使用的 :

i mp o r t ja v ax . mi c ro e d i tio n .m i dl e t. M ID l et ;

i mp o r t ja v ax . mi c ro e d i tio n .l c du i .C o mm a nd ;

i mp o r t ja v ax . mi c ro e d i tio n .l c du i .C o mm a nd L is t e n er ;

i mp o r t ja v ax . mi c ro e d i tio n .l c du i .D i sp l ay ; i mp o r t ja v ax . mi c ro e d i tio n .l c du i .D i sp l ay a bl e ; i mp o r t ja v ax . mi c ro e d i tio n .l c du i .F o rm ;

由于     H e ll o Wo r l d   一个     MID P   应用程序,它 展了     MIDl e t 。它也实现     Comma n dL i st e ne r   接口来处

理事件:

 

p ub l i c cl a s s He l lo W o r l d e xt e nd s M I Dl e t i mp l e m ent s C o mm a nd L is t en e r

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

pri v at e F o r m fo r m ;

pub l i c He l lo W or l d( ) {


/ / Cr e at e a ne w f o r m o n wh i c h t o di s pl a y o u r te x t fo r m = n e w F or m (" T e s t A p p" ) ;

 

/ / Ad d t h e t ex t "He l l o W or l d! " t o t h e f or m fo r m. a pp e nd ( "H e ll o W orl d !" ) ;

 

/ / Ad d a co m ma n d b u t to n la b el e d " Ex i t "

fo r m. a dd C om m an d (n e w Com m an d (" E xi t " , Co m ma n d . EXI T , 1 )) ;

 

 

/ /   Re g is t e r th i s o b j ec t a s a c om m an d Li s te n e r

fo r m. s et C om m an d Li s t e ner ( th i s) ;

}

 

 

调用     s t ar t Ap p ( )   启动应 程序 小应 的启动 法很 。在     MIDl e   的一次执 中它 能会

被调用 次。   MIDl e t 暂停 pauseA p p( ) 将会被调用。 重新   MIDl e t ,需调用   startA p p( ) 。仅 须执行 次的 初始 应该放 在构 程序

 

p ub l i c vo i d s ta r tA p p ( )

{

/ / Ge t a re f er e nc e t o th e d i sp l ay , a n d s h o w t h e f or m Di s pl a y d is p la y = Dis p la y .g e tD i sp l ay ( th i s ) ; di s pl a y. s et C ur r en t ( f o r m ) ;

}

p au s eA p p( ) 被调用使得   MI D le t 处于暂停状 此应用 序中 当进 状态时 我们 执行任 何操作 但是 们仍   MID l e t 中实现   p a us e A p p 方法,因为 是父   MIDl e t 类中的抽象 法。

p ub l i c vo i d p au s eA p p ( ) { }

d es t ro y Ap p ( )   被调用,破坏了     MIDle t   并使其处 销毁状 。在 应用 ,我们 过将 用设为

null ,释放了对表单

p ub l i c vo i d d es t ro y A p p(b o ol e a n un c on d it i on a l )

{

fo r m = n u ll ;

}

c om m an d Ac t io n ( ) 是事件 理程 ,被   Com m an d Li s te n e r 。目前 它破 了应 序并通 应用 序管 软件   MI D le t 已经完成。

 

p ub l i c vo i d c om m an d A c tio n (C o mm a n d c , Di s pl a y a bl e d )

{

/ / De s tr o y t hi s M I Dle t de s tr o yA p p( t ru e ) ;

 

/ / No t if y t h e a pp l ica t io n m a na g em e n t so f t w ar e th a t t hi s M I Dl e t

/ / ha s e n te r e d th e de s tr o ye d s t a te no t if y De s tr o ye d () ;

}

 

2. 5 MI D P 件包

 

标准   CLD C 软件包之外 MID P 还包含三个 加的软 包:

·   ja v ax . mi c ro e di t io n. lcd u i   - -   定义用来控制     U I   的类。这 软件 既包 高级     U I   类(例如


Form C om m an d D at e Fi e l d   Te x tF i el d 等),又 含低级   U I 类(允许 方式控制   UI )。

 

· ja v ax . mi c ro e di t ion . mid l e t - - 包含   M ID P 主类中的一 MIDle t 类,为   MID P 应用程序提 访问 关于其 行所 环境 权限。

 

j av a x. m ic r oe d it i on . r m s - - 定义一个类 集合 这些类为   MIDle t 提供了永久存储 随后 新得 据的机

 

 

2     AP I

 

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

 

 

2. 1 In / Out

 

这里是 J2ME io 规范

 

 

 

BlackBerry J2ME 编程指南(二)_第4张图片  

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


 

BlackBerry J2ME 编程指南(二)_第5张图片  

 

2. 2 St r in g 操作

 

一般说 J2ME J2 S E s t rin g 操作差别不大, 如前面 二章 到过 JVM KVM 的差异以及两个 平台的 API 不同, 些时 有些很 微的 异, 个平台都有 String S tr i n g b uf f e r 的类别,但是 str i n g s p li t /r e pl a ce a l l 方法, J2ME 中是不


 

BlackBerry J2ME 编程指南(二)_第6张图片  

 

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

如下是 J2SE API 方法截图:

 

 

 

BlackBerry J2ME 编程指南(二)_第7张图片  

这里就是一个在 J 2ME 中分割 spli t 方法的实

/**


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

* @pa ra m ori g inal 要分割的字

* @pa ra n re g e x    分割字

* @re turn 分割后生 的字符串

*/

pr ivate static St ring [ ] split (String orig in a l,S tring r e ge x )

{

// 取子串的起始位置

int star t I nde x = 0;

// 将结果数据先放入   Vec tor

Vec tor v = ne w V ec tor ( );

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

S tring [ ] str = null ;

 

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

int index = 0;

// 获得匹配子串的位置

star t I nd e x = orig in a l.i nde x Of (r e g e x );

 

// S y stem.out.println( " 0 " + sta rt I nde x );

 

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

//- 1 代表取到了末尾

while( star t I nde x < ori g i na l.l e ng th( ) & & sta rt I nde x ! = - 1)

{

S tring temp = ori g inal. subst ring (inde x ,star t I nde x ); S y stem.out.println("  "   + sta rt I nde x );

// 取子串

v.a ddEle ment( temp) ;

// 设置取子串的起始

index = star t I nde x + re g e x .len g th() ;

// 获得匹配子串的位置

star t I nd e x = orig in a l.i nde x Of (r e g e x ,star t I nde x + r e g e x .leng th( )) ;

}

// 取结束的子串

v.a ddEle ment( or i g in a l.s ubstring (inde x + 1 - re g e x .leng th() )) ;

 

// Vec tor 对象转换 str = ne w St rin g [ v.siz e () ] ; for (int i=0;i< v.siz e () ;i+ + )

{

str[ i ] = ( S tring )v.e lem e ntAt(i);


}

// 返回生成的数组

re turn 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 编程指南(三)

    你可能感兴趣的:(编程,api,String,J2SE,BlackBerry,j2me)