logo资料库

J2ME慢慢学教程.pdf

第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
资料共26页,剩余部分请下载后查看
第一章:J2ME 概述 • 介绍 • • 这一章将开始教您使用 J2ME。我们将从定义 J2ME 开始,然后讨论它的总体架构并学习 J2ME 目标设备。作为架构讨论的一部分,我们将提供有关简表和配置的概述(后面的章节中 将详细介绍简表和配置)。同时我们会简要介绍打包和配置 J2ME 应用程序过程中的一些注 意事项。 J2ME 是什么? Sun Microsystems 将 J2ME 定义为“一种以广泛的消费性产品为目标的的高度优化的 Java 运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。” 自从 1999 年 6loper Conference 上声明之后,J2ME 为小型设备带来了 Java 语言的跨平 台功能,允许移动无线设备共享应用程序。有了 J2ME,Sun 已经使 Java 平台能够适应集 成了或基于小型计算设备月在 JavaOne Deve 的用户产品。 J2ME 总体架构 J2ME 使用配置和简表定制 Java 运行时环境 (JRE)。作为一个完整的 JRE,J2ME 由配置 和简表组成,配置决定了使用的 JVM,而简表通过添加特定于域的类来定义应用程序。 配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定 JVM。我们将 在 J2ME 配置一章中详细讨论配置。 简表定义应用程序;特别地,它向 J2ME 配置中添加特定于域的类,定义设备的某种作用。 我们将在 J2ME 简表一章中深入介绍简表。 下面的图表描述了不同的虚拟机、配置和简表之间的关系。它同时把 J2SE API 和它的 Java 虚拟机进行了比较。虽然 J2SE 虚拟机通常被称为一种 JVM,但是 J2ME 虚拟机、KVM 和 CVM 都是 JVM 的子集。KVM 和 CVM 均可被看作是一种 Java 虚拟机 -- 它们是 J2SE JVM 的压缩版,并特定于 J2ME。 • 配置概述 配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定 JVM。虽然还
可能在将来定义其他的配置,但当前 J2ME 存在两种配置: · 连接限制设备配置 (CLDC) 特别与 KVM 一起用于内存有限的 16 位或 32 位设备。这是 用于开发小型 J2ME 应用程序的配置(虚拟机)。(从开发的角度来看)它的大小限制让它 比 CDC 更有趣、更具挑战性。CLDC 同时还是用于开发绘图工具应用程序的配置。 Palm 电 脑便是一个运行小应用程序的小型无线设备的示例。我们将在 J2ME 配置一章中深入介绍 CLDC。 · 连接设备配置 (CDC) 与 C 虚拟机 (CVM) 一起使用,用于要求内存超过 2 兆的 32 位体 系结构。互联网电视机顶盒便是这类设备的一个示例。虽然稍后我们将在 CDC API 一章中简 要介绍 CDC,但它并不在本教程的范围内。 • 简表概述 简表定义了您的应用程序所支持的设备类型。特别地,它向 J2ME 配置添加了特定于域的类 来定义设备的某种作用。简表建立在配置的顶部。已经为 J2ME 定义了两种简表:KJava 和 移动信息设备简表 (MIDP),它们也被建立在 CDLC 上。这两种简表适用于小型设备。 有一种纲要简表,您可以在它的上面创建自己的简表,这种纲要简表也称为基础表,可供 CDC 使用。然而,在本教程中,我们只重点介绍建立在 CLDC 顶部,适用于小型设备的简表。 我们将在后面的章节中讨论上述这些简表,还会使用 KJava 和 MIDP 建立一些示例应用程 序。 • • J2ME 目标设备 使用 CLDC 开发的 J2ME 应用程序的目标设备通常具有以下特征: · 可供 Java 平台使用的 160 到 512 千字节的总内存 · 功率有限,常常是电池供电 · 网络连通性,常常是无线的、不一致的连接并且带宽有限 · 用户接口混乱,程度参差不齐;有时根本就没有接口 一些 CLDC 支持的设备,包括无线电话、寻呼机、主流个人数字助手 (PDA),以及小型零售 支付终端。 依照 Sun Microsystems,CDC 的目标设备通常具有以下特征: · 使用 32 位处理器 · 2 兆字节或更多可供 Java 平台使用的总内存 · 设备要求的 Java 2 “蓝皮书”虚拟机的全部功能 · 网络连通性,常常是无线的、不一致的连接并且带宽有限 · 用户接口混乱,程度参差不齐;有时根本就没有接口 一些 CDC 支持的设备,包括常驻网关、智能电话和通讯器、PDA、管理器、家用电器、销 售网点终端以及汽车导航系统。 J2ME、J2SE 与 J2EE 之间的比较 下面的图表描述了支持 J2ME 应用程序的设备,同时说明了 J2ME 适合 Java 平台之处:
第二章:开发 J2ME 应用程序 • 介绍 在这一章中,我们将复习一下在为小型设备开发应用程序时需要牢记的一些注意事项。我们将 看一下在使用 J2SE 编译 J2ME 应用程序时调用编译器的方法。最后我们将探究打包和部 署,以及在这个过程中提前验证所扮演的角色。 • 设计开发小型设备应用程序要注意的事项 为小型设备开发应用程序,需要您在设计阶段制定某种策略。最好是在开始编写代码之前,战 略性地为小型设备设计应用程序。由于无法考虑到所有的 "gotchas" ,在开发应用程序之前 更正代码是一件很痛苦的工作。 下面是一些可以考虑的设计策略: · 保持程序简单。除去不必要的功能,如果可能的话,将它们做成独立的、次要的应用程序。 · 程序越小越好。这一点对所有的开发者来说应该是显而易见的。越小的程序占用的设备内存 越少,并且花费的安装时间越少。可考虑将您的 Java 应用程序打包,作为压缩的 Java 档 案 (jar) 文件。 · 运行时占用最少的内存。为尽可能减少运行时占用的内存,使用标量类型代替对象类型。同 时,不依赖垃圾收集程序。您应该在使用完对象时将对象引用置空,这样可有效管理内存。另 外一种减少运行时所需内存的方法是使用“惰性”实例,它仅在必需时才分配对象。其它一些减
少小型设备上过量和峰值内存使用的方法有快速释放资源、重新使用对象以及避免异常。 • 设计开发移动设备应用程序的注意事项 开发移动设备应用程序的规则与我们前面提及的开发小型设备的相同:先设计再编码。让我们 检查一下开发移动设备应用程序时可考虑的一些设计建议: · 让服务器做大部分的工作。将计算性较强的任务放到服务器上,让服务器为您做这些工作。 让移动设备处理界面和最少的计算工作,而让服务器做繁重的工作。当然,您为其开发应用程 序的移动设备对设备连接到服务器上的难易程度和频率有重要影响。 · 谨慎地选择编程语言。J2ME 仍然处于成长期,可能还不是最好的选择。根据您的需要,选 择其它的面向对象语言,如 C++,可能会更好。 • 性能注意事项 为性能而编码。下面有一些以获得最优性能为目标的编码方法: · 使用局部变量。访问局部变量比访问类成员更快。 · 避免字符串串联。字符串串联不仅会降低性能,而且会增加应用程序的内存峰值占用量。 · 使用线程,避免同步。任何运行时间超过 1/10 秒的操作都需要一个独立的线程。避免同步 同样能提高性能。 · 使用模型视图控制器 (MVC) 分离模型。MVC 将代码中控制显示的逻辑分离出来。 • 编译注意事项 同其它的 Java 应用程序一样,您在打包和部署应用程序之前要先进行编译。尽管有了 J2ME,您仍然使用 J2SE 编译器并且需要用适当的选项来进行调用。 特别的,您需要使用 -bootclasspath 选项来指示编译器使用 J2ME 类,而不是 J2SE 类。 不要在编译器的 CLASSPATH 中设置配置类。这样将导致运行时错误,因为不管 CLASSPATH 中有什么,编译器将首先自动搜索 J2SE 的核心类。换句话说,编译器将无法 引用特定 J2ME 配置中缺少的类或方法,结果导致在尝试运行应用程序时出现运行时错误。 • 打包和部署注意事项 由于 J2ME 是为内存有限的小型设备设计的。大部分常用的 Java 提前验证已经从虚拟机中 除去以形成一个较小的覆盖区域。结果,在配置之前提前验证 J2ME 应用程序就很有必要。 在运行时会附加一个检查以确保这个类在提前验证之后还没有改变过。 如何严格执行提前验证或者检查类的正确性依靠的是工具包。CLDC 提供一个称为提前验证 的命令行实用程序,它能够进行实际的验证并且可以把一些额外的信息插入到类文件中去。 MIDP 使用无线工具包,这种工具包提供一种 GUI 工具,也可从命令行运行这种工具。 部署工作取决于您要部署的平台。应用程序必须以一种适合 J2ME 设备类型的格式进行打包 和配置,就如简表定义的那样。
© 北京映翰通网络技术有限公司 版权所有 第三章:J2ME 配置 • J2ME 配置是什么? 正如前面所学,配置将基本运行时环境定义为一套核心类和一个运行在特定类型设备上的特 定的 JVM。您也可以学到 J2ME 的两种配置类型是 CLDC 和 CDC。 Sun 提供的 J2ME 配置是适合不同层次的市场需求的 -- CLDC 适合小型设备,而 CDC 适合大型设备。J2ME 环境可以被动态地配置为提供运行应用程序所需要的环境,而不用考 虑是否为设备提供了运行该应用程序所需的所有 Java 技术库。核心平台接收应用程序代码 和库。运行在网络上的服务器软件执行配置工作。 在下面的几页中,您将学到关于 CLDC 和 CDC 的更多知识以及与它们关联的简表。 • 连接限制设备配置 (CLDC) CLDC 是由 Java Community Process 创建的。正如 Sun Microsystems 的 Web 站点所 定义的那样,它的标准是:“轻便、覆盖区域最小的 Java 构建块,适合小型的、有资源限 制的设备。” J2ME CLDC 配置是为将在业界定义的简表中使用的一个虚拟机和一套核心库准备的。正如 第 2 章中提及的,一个简表通过在基本 J2ME 配置顶部提供特定于域的类来为特定的设备 定义应用程序。K 虚拟机 (KVM)、虚拟机的 CLDC 的参考执行和它的 KJava 简表运行在 CLDC 的顶部。 CLDC 简要描述了高度限制设备上每个 J2ME 执行所要求的一套最基本的库和 Java 虚拟 机特征。CLDC 主要面向那些网络连接速度慢、能源有限(经常是电池供电)、具有大于等 于 128 KB 的稳定内存、以及大于等于 32 KB 的不稳定内存的设备。不稳定内存是不持久 的并且没有写保护,这意味着如果关掉设备,内存中的内容将全部丢失。而稳定内存中的内 容是持久的,并且有写保护。CLDC 设备使用稳定内存来存储运行时的库和 KVM,或存储 为某个特殊设备创建的另一个虚拟机。不稳定内存被用来分配运行时的内存。 • CLDC 要求 CLDC 定义了下列要求: · 完整的 Java 语言支持(除浮点支持、最终定案和错误处理之外) · 完整的 JVM 支持 · CLDC 的安全性 · 有限国际化的支持 · 继承类 -- 所有不针对 CLDC 的类都必须是 J2SE 1.3 类的子类 · 针对 CLDC 的类都在名为 javax.microedition 的软件包和它的子包里 除 javax.microedition 软件包以外,CLDC API 还由 J2SE 的子集 java.io,java.lang 以及
java.util 等软件包组成。我们将在 CLDC API 这一章中学习有关的细节问题,然后使用 CLDC API 来开发我们的绘图应用程序。 • 连接设备配置 (CDC) 连接设备结构 (CDC) 被定义为一种添加了 CLDC 类的 Java 2 标准版 (J2SE) 的简化 版。因此,CDC 是建立在 CLDC 的基础之上,并且为 CLDC 设备开发的应用程序也可以 运行在 CDC 设备上。 CDC 也是由 Java Community Process 开发的,它为用户的电子设备和嵌入式设备如智能 电话、双向寻呼机、PDA、家用电器、销售网络终端以及汽车导航系统等提供一种标准化的、 轻便的、功能齐全的 Java 2 虚拟机构建块。这些设备运行 32 位的微处理器和超过 2 MB 的内存,这些对于存储 C 虚拟机和库是必需的。K 虚拟机支持 CLDC,而 C 虚拟机 (CVM) 支持 CDC。CDC 与基础表相关联,这一点不在本教程的范围之内。 我们将在 CDC API 这一章中更详细地学习 CDC。 • CLDC 与 CDC 的比较 面这幅图描述了 CDC 和 CLDC 之间的关系。同时该图也揭示了它们与整个 J2SE API 系。正如前面所说,CDC 是加上一些额外类的 J2SE 的子集。我们也可以看到 CLDC 是 CDC 的子集。 © 北京映翰通网络技术有限公司 版权所有 第四章:J2ME 简表
• J2ME 简表是什么? 如我们在前面教程中提及的,一个简表定义了受支持设备的类型。例如,移动信息设备简表 (MIDP),定义了蜂窝电话的类。它把一些特定于域的类加入 J2ME 配置中来定义对类似设 备的使用。已经为 J2ME 定义了两个简表:KJava 和 MIDP 。它们都构建在 CLDC 之上。 KJava 和 MIDP 都和 CLDC 及小型设备相关联。 简表被构建在配置的顶部。由于简表是特定于运行应用程序的设备的大小(内存的数量), 所以,某个简表是与某种特定的配置相关联的。 在纲要简表上,您可以创建自己的简表,这种纲要简表也称为基础表,它对于 CDC 也是可 用的。然而,在本教程和本节中,我们将只重点学习建立在 CLDC 上的 KJava 和 MIDP 简 表。 • 简表 1:KJava KJava 是归 Sun 公司所有的简表,它包含 KJava API。KJava 简表建立在 CLDC 配置的 顶部。KJava 虚拟机,KVM,像标准的 J2SE 虚拟机那样接受相同的字节代码和类文件格 式。 KJava 包含一个特定于 Sun 的、运行在 Palm 操作系统上的 API。这个 KJava API 和 J2SE 抽象视窗工具包 (AWT) 有很多地方都是相同。然而,由于它不是一个标准的 J2ME 软件包,它的主软件包是 com.sun.kjava。在以后的教程中开发一些示例应用程序时会学到 更多关于 KJava API 的知识。 • 简表 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 • MIDP 取代 KJava 正如我们在前面的章节中提及的,KJava 是 Sun 公司所拥有的一个 API。它不作为一种完 整的、功能齐全的简表,而是作为一种示范,示范简表如何与 CLDC 一起工作。根据 CLDC 发行说明 (其中包含 CLDC 下载版本): 在软件包 com.sun.kjava 中提供的 GUI 类不是连接限制设备配置 CLDC 的一部分。Java 2 平台袖珍版的正式 GUI 类,将通过 Java Community Process 分别定义并被包含进 J2ME 简表中。 不管这个事实存在与否,KJava 简表已经被早期的采用者广泛使用了。在 2001 年
JavaOne 的开发商会议上,Sun 公司宣称早期 Palm 操作系统的 MIDP 可用性(MID 简 表的最初发行版焦点主要集中在无线电话上)。 Palm 操作系统 MIDP 的规格是由 Java Community Process (JCP) 定义的。因此,它是独立于供应商的。当前众多限制中的一个 -- 它将随时间消失 -- 就是 Palm 操作系统的 MIDP 需要最新的 Palm 操作系统,3.5 版。 在我们写这个教程的同时, Palm 操作系统的 MIDP 的规范仍然在随着 JCP 不断发展, 其细节也会随时改变。尽管目前还无法确定其发行日期,但是规范一旦出台,将必然减少对 KJava 的需求。 第五章:设置您的开发环境 • 介绍 在这一章,我们将学习如何下载和安装开发 J2ME 应用程序必需的软件。现在就让我们开 始吧,首先学习 Windows 或 UNIX 环境下下载和安装 CLDC。目前 CLDC 1.0 发行版包 含 Win32、Solaris 和 Linux 平台上的 CLDC 执行。我们将在您的 Palm 设备上安装 KVM,然后学习如何编译 Palm 数据库开发工具。 下一步,您将学到如何下载和安装 Palm 操作系统仿真器 (POSE) 以及如何把 Palm 设备 中的 ROM 映像传送到您的 PC 以便和仿真器一起使用。 最后,我们来看一看如何下载和安装 J2ME 无线工具包,该工具包可用来开发 MIDP 设备 的 J2ME 应用程序。 • 在 Win32 或 UNIX 中下载和安装 CLDC 在 Windows 或 UNIX 平台上安装 CLDC 和 Sun 的 KVM 软件: 1. 下载 CLDC。需要下载和安装的两个软件包为:j2me_cldc-1_0_2-fcs-winunix.zip 和 j2me_cldc-1_0_2-fcs-kjava_overlay.zip。 2. 解压第一个软件包。 o 在 Windows 环境下,您可以把包里的内容解压至根目录 c:\ 下。 o 在 UNIX 环境下,把内容解压至您喜欢的目录下。可以是主目录,但如果您为这台机器 的所有用户安装的话,就把它安装在经常安装共享应用程序文件的地方(例如,通常是类似 /usr/local 或 /opt 的目录。) 在安装目录下,会创建一个新的文件夹 j2me_cldc,并且它还包含下列子目录:jam、docs、 build、tools、api、kvm、samples 和 bin。 3. 将第二个软件包解压至刚在 CLDC 安装过程中创建的 j2me_cldc 目录下。如:Windows 下的 c:\j2me_cldc,或者 UNIX 下的 /usr/local/j2me_cldc 或 /opt/j2me_cldc。如果出现提 示,则覆盖现有的所有文件。 4. 把目录 j2me_cldc/bin 添加到 PATH 中,以免每次运行 CLDC 程序 kvm 和提前验证 时都要键入完全路径。
分享到:
收藏