J2ME应用开发指南
立即解锁
发布时间: 2025-08-18 02:20:34 阅读量: 2 订阅数: 5 

### J2ME 应用开发指南
#### 1. 数据同步与存储
在 J2ME 应用开发中,数据同步和存储是重要的环节。有一些数据库产品支持数据同步,如 Pointbase 和 Cloudscape 。同时,新兴的同步协议 SyncML 也颇具吸引力。SyncML 是由 IBM、Lotus、Motorola 等行业领导者共同开发的开放同步规范,它是一种基于 XML 的标记语言,用于描述移动设备与其数据源之间的同步任务,该规范允许第三方软件供应商按照开放标准创建同步软件。
数据存储在不同的 J2ME 设备和配置文件中可能存在很大差异。在某些情况下,如 MIDP 环境,可能仅支持字节数组存储;而在 CDC 环境中,则很可能安装关系型数据库管理系统(RDBMS)或对象数据库(ODBMS)。
- **字节数组存储**:字节数组存储为开发者提供了对数据存储的细粒度控制,因为开发者必须编写存储操作。虽然有一些第三方 API 可用于处理字节数组存储,但处理字节数组通常意味着使用 CLDC 空间中的受限设备。使用或构建处理字节数组格式的 API 可能会带来较大的开销。字节数组存储数据的方式较为简单,除了通过键(通常是 int 或 String)访问字节数组外,数据存储没有固有的格式或结构。可以使用单个字节数组存储大量数据,也可以将字节数组划分为更精细的结构,每个字段或元素存储在各自的数组中。确定合适的记录大小需要考虑应用程序存储的数据类型和数量,以及数据的访问方式。例如,如果数据仅用于最终提交到服务器应用程序,且只需要在存储和传输时访问数据,那么将数据以传输格式存储可能是最佳选择;如果应用程序需要查询数据存储,记录大小就变得更为重要,因为查询字节数组需要将数组读入内存并与搜索条件进行比较,这可能需要大量的资源,如堆内存和 CPU 处理周期。
- **数据存储与性能**:在计算环境中,访问存储系统通常是一项开销较大的操作。为了减少对数据库的访问,可以选择将数据记录缓存到内存中,这样可以更快地访问数据,但会占用宝贵的内存资源,并且如果应用程序意外终止或设备重置,缓存的数据可能会丢失。因此,需要在性能和资源利用之间找到平衡。一般来说,静态数据(如下拉列表的内容)可以安全地缓存,因为这些数据在设备上不会更新,通过缓存此类数据,可以一次性完成数据访问,并以预排序的方式存储信息。
- **存储数据的格式**:存储数据的格式也是需要考虑的因素。如果数据可以以 J2ME 设备与外部系统之间收发数据的格式存储,将提高效率。这样在网络传输数据时,无需重新格式化,可减少处理器时间;设备接收数据时,可直接将其放入存储中,无需修改。这对于堆内存紧张的应用程序尤为重要,因为每个记录可以直接从存储中读取并放入网络输出流,反之亦然,从而减少传输过程中任何给定时间内存中需要驻留的数据量。
- **扁平文件**:一些 J2ME 环境支持访问设备上的文件系统,而不是简单的字节数组。在这样的系统中,可以使用标准的 java.io 类来访问文件数据,这意味着可以利用更熟悉的存储技术,但可能需要实现记录的概念,并提供创建、读取、更新和删除这些记录的方法。
- **小型数据库**:市场上有几种数据库可在 J2ME 设备上提供关系型数据库支持,许多产品支持全部或部分 SQL 语法来访问数据。以下是一些可用的小型数据库产品:
| 数据库 | 描述 |
| ---- | ---- |
| Pointbase | 一个全 Java 数据库,占用空间为 45 千字节,设计用于 CLDC 和 CDC 设备,也可在 J2SE 环境中运行。可从 Pointbase, Inc. 获取,更多信息可访问其网站 www.pointbase.com。 |
| Cloudscape | 一个全 Java 数据库,既可以作为关系型数据库,也可以作为对象数据库。虽然该数据库随 J2EE 一起提供,但也可在 J2ME 等更受限的环境中使用。由 IBM 拥有,更多信息可访问其网站 www.cloudscape.com。 |
| SQL Anywhere | 由 Sybase 提供的小型数据库,更多信息可访问其网站 www.sybase.com/products/mobilewireless/anywhere。 |
| Oracle Lite | Oracle 的小型版本,更多信息可访问其网站 www.oracle.com/ip/deploy/database/8i/8ilite。 |
如果应用程序需要在设备上存储大量信息,并需要对数据进行创建、更新、删除和查询操作,关系型数据库可能是一个不错的选择,即使这会使应用程序的资源略显紧张;如果不需要进行大量的数据访问或存储大量数据,关系型数据库可能就有些大材小用了。
无论数据如何存储在设备上,在通过网络连接移动数据时都会存在数据映射问题。除非有可以在网络连接上运行的 JDBC 驱动程序,否则需要将外部系统的数据映射到网络传输格式,然后再从该格式映射到设备的内部存储格式。一些数据库产品(如 Cloudscape 和 Pointbase)提供数据同步功能和配套产品,可帮助保持设备数据和服务器数据的同步,从而自动解决网络数据格式问题。
#### 2. 内存管理
J2ME 设备的内存分配和使用方式与桌面和笔记本电脑系统不同,许多 J2ME 设备没有硬盘,甚至不支持文件系统,运行时内存和存储内存通常是同一内存资源(如闪存)的分区。例如,运行 Palm OS 的设备将内存划分为动态堆和存储堆,动态堆用于应用程序运行时,设备重置后该内存分区的内容不会保留;存储堆用于持久数据存储,设备重置(不包括硬重置)后该内存分区的内容将保留。
了解目标设备的内存使用方式非常重要,因为应用程序必须适应每个设备的内存限制和存储限制。例如,即使目标设备支持 8 MB 的内存,也不能假设所有内存都可供应用程序使用,因为需要与设备上存储的其他应用程序及其数据共享内存。在许多情况下,
0
0
复制全文
相关推荐









