书籍详情
J2ME无线设备程序设计(第2版)
作者:(美)Roger Riggs等著;肖炜,郭晓刚译;肖炜译
出版社:电子工业出版社
出版时间:2004-07-01
ISBN:9787120000035
定价:¥49.00
购买这本书可以去
内容简介
本书由J2ME平台创始者Sun公司和Nokia等主要消费设备制造厂商的专家撰写,内容权威,全面介绍了Java2Platform,MicroEdition(J2ME)的整体架构,特别重点讨论了两个关键的J2ME标准:Connected,LimitedDeviceConfiguration(CLDC)1.1版和MobileInformationDeviceProfile(MIDP)2.版,主要包括CLDC类库、MIDP应用程序模型、MIDP用户界面库、MIDP高层用户接口、MIDP低层用户界面类库、MIDPSoundAPI、MIDP持久库、MIDP网络和串行通信、网络安全、事件驱动的应用程序启动、MIDlet套件安全性、MIDlet的部署、附加MIDPAPI等内容,完整覆盖了J2ME平台开发的各个方面的技术,并附有CLDC应用程序编程接口和MIDP应用程序编程接口的API参考大全,是J2ME平台开发领域最权威参考书籍之一。对从事无线移动设备开发的软件开发人员来说,本书是一本必备的参考书。前言在过去的5年中,SUN公司与主要的消费类设备制造商及其他公司合作,为手机、双向寻呼机、个人电子日程簿等资源受限的无线消费类设备,共同创造了一个高度可移植、安全、小内存环境下的Java应用程序开发环境。这项工作从开发一个叫做"KVirtualMachine(KVM)"的新的小内存环境下的Java虚拟机开始。随后开始两项JavaCommunityProcess(JCP)标准化工作,Connected,LimitedDeviceConfiguration(CLDC)和MobileInformationDeviceProfile(MIDP),以使这些应用于相当广泛的消费类设备的Java类库及相关Java语言和虚拟机特性标准化。第一轮CLDC和MIDP的标准化工作发生在1999年秋季到2年春季。在进行期间,24家公司直接参与了CLDC1.和MIDP1.的标准化工作,超过5个公司和个人通过发送反馈信息间接地参与了这项工作。主要的消费类设备制造公司如Motorola、Nokia、NTTDoCoMo、PalmComputing、ResearchInMotion(RIM)及Siemens在这项工作中扮演了关键的角色。自从初次发布以来,CLDC1.和MIDP1.已经变得非常流行。支持Java的无线设备投入实用是在2年,并在21到22年间大大加速,接近指数增长。估计在22年共出厂了超过5千万台支持CLDC和MIDP标准的设备,而23年预计将至少是这个数目的两倍。作为标准被广泛接受的结果,无线设备领域的巨大商业机会已经在Java应用程序开发者面前显现出来。第2轮CLDC和MIDP标准化工作从21年的秋季开始。CLDC1.1和MIDP2.的目标是继续先前版本的成功,精简现有的特性集合,并引入附加的API,但密切注意保持严格的内存限制,因为它仍然限制着无线设备的设计。超过6家公司直接参与了CLDC1.1和MIDP2.规范的开发,这正是这些标准被无线工业界广泛接受和采用的反映。本书试图使更广泛的软件开发社区能够获得无线Java技术的最新标准化工作成果。大体上,本书结合了两份JavaCommunityProcessSpecification,CLDC1.1(JSR139)和MIDP2.(JSR118),将它们融合为一个整体,这是相应的JavaCommunityProcess(JCP)Specification做不到的。我们增加了一个Java2Platform,MicroEdition(J2ME?)的基本介绍,提供了更多的背景材料,还包括了许多演示在真实世界中运用CLDC和MIDP的小程序。我们还为如何入门Java2Platform,MicroEdition提供了一些指导和说明。本书讨论的软件的一个参考实现可以在SunCommunitySourceLicense(SCSL)许可下从SunMicrosystems获得。读者对象本书面向的是软件开发者、内容提供者和其他希望为资源受限而具有连接能力的设备开发Java?软件的专业人士。本书还面向希望建造小型JavaPowered?设备,并希望集成一个紧凑的Java应用程序开发平台到他们的产品中去的消费类设备制造商,本书的目标本书是"来自本源"的关于JavaPowered?无线设备的关键规范的权威陈述。因此,本书试图:提供对Java?2Platform,MicroEdition(J2ME?)的一个整体印象。提供对J2ME标准化工作定义中的应用程序开发平台的一个基本介绍。解释J2MEConnected,LimitedDeviceConfiguration1.1版(CLDC1.1)技术方面的内容。解释J2MEMobileInformationDeviceProfile2.版(MIDP2.)技术方面的内容。提供演示CLDC和MIDP的示例程序。帮助你开始编写你自己的J2ME应用程序。本书是如何组织的本书中的主题组织如下:第1章,"简介",介绍Java2MicroEdition及CLDC和MIDP规范。第2章,"J2ME概述",对Java2MicroEdition做了整体上的观察,说明了J2ME的关键概念和它的组成部分。第3章,"目标、要求和范畴",定义CLDC和MIDP标准化工作的目标、要求和范畴。第4章,"ConnectedLimitedDeviceConfiguration",介绍CLDC标准化成果,并就Java编程语言和虚拟机特性两方面与Java2Platform,StandardEdition作了对比。第5章,"CLDC类库",介绍CLDCSpecification定义的Java类库。第6章,"MobileInformationDeviceProfile",介绍MIDP标准化成果。第7章,"MIDP应用程序模型",介绍MIDPSpecification定义的MIDlet应用程序模型。第8章,"MIDP用户界面类库",介绍MIDPSpecification定义的用户界面类库。第9章,"MIDP高层用户界面-Screen",介绍MIDP高层用户界面中关于Screen类的部分。第1章,"MIDP高层用户界面-Form",介绍MIDP高层用户界面中关于Form类的部分。第11章,"MIDP低层用户界面类库",介绍MIDPSpecification定义的低层用户界面类库。第12章,"MIDPGameAPI",介绍MIDPSpecification定义的游戏API。第13章,"MIDPSoundAPI",介绍MIDPSpecification定义的声音API。第14章,"MIDP持久库",介绍MIDPSpecification定义的记录管理系统(RMS)。第15章,"MIDP网络和串行通信",介绍MIDPSpecification定义的用于网络和串行通信的类库。第16章,"安全网络",介绍MIDPSpecification定义的用于安全的网络通信的协议。第17章,"事件驱动的应用程序启动",介绍MIDPSpecification定义的用于启动MIDlet的协议。第18章,"MIDlet套件的安全性",介绍MIDPSpecification定义的MIDlet套件的安全协议。第19章,"MIDlet的部署",介绍将MIDlet传输到无线设备上的机制。第2章,"附加MIDPAPI",介绍Timer等附加MIDP应用程序编程接口(API)。第21章,"总结",总结本书讨论的内容。"参考文献",参考文献的列表。附录A,"CLDC应用程序编程接口",以大全的形式列出了CLDC的应用程序编程接口文档。附录B,"MIDP应用程序编程接口",以大全的形式列出了MIDP的应用程序编程接口文档。序Java?2Platform,MicroEdition(J2ME?)的发布使得Java技术形成一个完整的体系。今天我们所知的Java技术,根源于一个研究主流计算机工业之外的数字技术的有潜在影响的项目。显然Java技术获得巨大发展的领域,是与人们日常生活密切相关的领域。消费类电子产品、电话技术和嵌入式系统正日益成为人们日常生活的组成部分。作为拥有工程实践背景的一群人,我们决定实际建造一个样品来帮助我们对细节的理解。我们建造了一个小型的(在当时算是!)手持设备,和今天的PDA差不多。当我们考虑它对新世界意味着什么的时候,我们在用来建造软件的底层工具上遇到了一系列严重的问题:多样性(Heterogeneity)是生活中的现实。在市场上有许多种不同的CPU和系统架构。在桌面计算机世界,这种CPU和系统架构上的差异("Wintel"和Macintosh),将市场以大多数人都知之甚少的底层细节划分开来。在消费类/嵌入式设备的世界,系统架构的种类要远多于桌面世界的两种。这种四分五裂的混乱状态引起了一系列严重的问题。当这些设备连接到网络上,试图开始共享软件的时候,多样性更是一个要迫切面对的问题。可靠性是一个极大的问题。非技术爱好者有充分理由觉得系统故障难以容忍。在许多方面,编程语言设计上的底层问题(内存安全是其中之一)有很大的影响。必须考虑安全性。对网络来说,没什么比一个出来找乐子的"初生牛犊"更具有威胁性了。(我知道,我也曾经是其中之一!)安全性并非可以事后再点缀上去的东西:必须一开始就内建进去。消费类设备生命期有很长的时间跨度。它们存在于一个不断发展的世界中。这给系统建造、版本控制和模块化带来了许多问题。这些系统正逐渐变成分布式的,需要在多台机器上运行。整个系统需要跨越多台机器,让它们形成一个整体来运行:从处于网络边缘的手机,到大型的系统如连接起网络的交换机。这一系列的压力引发了许多问题。我在项目中担当的工作,就是应付这些压力,结果Java编程语言诞生了。早期的实现是针对低端设备的。我们在1995年向外界发布了这个语言,它现在已经变得非常流行。流行的一个副作用是,Java的规模迅速膨胀,并且大量应用于大型工业强度的应用软件。在这股狂热中,应用于处在网络边缘的小规模设备的本意已经被遗忘了。J2ME将Java技术带回它的本源。由于大小和速度上的限制,为小型设备编写程序与大规模的设备相比更具挑战性,不过通常也会获得更多的回报,因为小型设备与用户之间有更多的交流。通过这本书你将学习到J2ME是如何影响无线网络的世界的。无线应用程序是J2ME技术被软件开发者广泛接受的一个主要里程碑。最重要的机会是我们未曾预料到的,它们来自好奇的人们的实际体验。
作者简介
暂缺《J2ME无线设备程序设计(第2版)》作者简介
目录
译序 iii
图索引 xxvii
序 xix
前言 xxi
致谢 xxvii
第1章 简介 1
1.1 无线Internet革命 1
1.2 为什么要在无线设备上应用Java技术 2
1.3 简短的历史回顾 3
1.4 J2ME?标准化的成果 4
第2章 J2ME概述 7
2.1 Java 2平台 7
2.2 Java 2 Platform, Micro Edition (J2ME) 9
2.3 J2ME架构的关键概念 10
2.3.1 Profiles 12
2.3.2 Configurations 14
2.3.3 可选包(Optional Packages) 17
2.4 J2ME平台的演进 17
2.4.1 J2ME核心标准化的成果 18
2.4.2 无线通讯领域的可选包 19
第3章 目标、要求和范畴 23
3.1 主要目标 23
3.1.1 Java应用程序和内容的动态部署 24
3.1.2 第三方应用程序开发 24
3.1.3 独立于任何网络技术标准 25
3.1.4 与其他无线应用程序标准的兼容性 26
3.2 目标设备 26
3.3 泛论消费类设备和嵌入式系统 28
3.4 要求 30
3.4.1 CLDC的硬件要求 31
3.4.2 MIDP的硬件要求 32
3.4.3 CLDC的软件要求 32
3.4.4 MIDP的软件要求 33
3.4.5 J2ME的要求 34
3.5 CLDC及MIDP标准涉及的范畴 35
3.5.1 CLDC的范畴 35
3.5.2 MIDP的范畴 35
第4章 Connected Limited Device Configuration 39
4.1 CLDC专家组 40
4.1.1 CLDC 1.0专家组 40
4.1.2 CLDC 1.1专家组 40
4.2 CLDC架构、应用程序模型和安全性 41
4.2.1 架构概述 41
4.2.2 Java应用程序的概念 42
4.2.3 应用程序安全性 43
4.2.4 应用程序管理 45
4.3 对Java语言规范的兼容性 46
4.3.1 不支持类实例的Finalization 47
4.3.2 错误处理上的局限 47
4.4 对Java虚拟机规范的兼容性 48
4.4.1 从虚拟机中去除的特性 48
4.4.2 类文件验证 50
4.4.3 类文件格式和类装载 52
4.5 CLDC 1.1的新特性 55
第5章 CLDC类库 57
5.1 背景和目标 57
5.2 继承自J2SE的类 58
5.2.1 系统类 58
5.2.2 数据类型类 59
5.2.3 集合容器类 59
5.2.4 输入/输出类 59
5.2.5 日历和时间类 60
5.2.6 其他附加类 60
5.2.7 异常和错误类 60
5.2.8 弱引用(Weak References) 62
5.2.9 国际化支持 62
5.2.10 对系统属性的支持 63
5.3 CLDC特有的类 64
5.3.1 背景和动机 64
5.3.2 通用连接(Generic Connection)框架 65
5.3.3 CLDC不包含网络协议的具体实现 67
5.3.4 通用连接(Generic Connection)接口小结 67
5.4 CLDC 1.1的新特性 70
第6章 Mobile Information Device Profile 73
6.1 MIDP专家组 74
6.1.1 MIDP 1.0专家组 74
6.1.2 MIDP 2.0专家组 74
6.2 MIDP规范涵盖的领域 76
第7章 MIDP应用程序模型 79
7.1 MIDlet 79
7.1.1 MIDlet的状态 82
7.1.2 startApp,pauseApp和destroyApp方法的用法 84
7.1.3 程序生命期和用户界面API 87
7.2 MIDlet套件(Suites) 88
7.3 MIDP 2.0的新特性 88
第8章 MIDP用户界面类库 89
8.1 与桌面AWT相比的MIDP用户界面 90
8.2 MIDP用户界面API的结构 90
8.2.1 可显示模型(Displayable Model) 91
8.2.2 底层用户界面 93
8.2.3 高层用户界面 93
8.3 Display类 95
8.3.1 当前可显示(Current Displayable) 96
8.3.2 屏幕背光和设备振动器 97
8.4 Displayables 97
8.4.1 Ticker 99
8.5 命令(Command) 100
8.5.1 映射到设备用户界面的命令 100
8.5.2 Command特性 101
8.5.3 命令类型 102
8.5.4 命令监听者(Command Listeners) 105
8.6 高级话题 106
8.6.1 系统屏幕 106
8.6.2 适应特定设备用户界面样式 106
8.6.3 设备提供的操作 107
8.6.4 同步性 108
8.7 MIDP 2.0的新特性 109
第9章 MIDP高层用户界面——Screen 111
9.1 列表List 111
9.1.1 隐含列表(Implicit List) 113
9.1.2 单选列表(Exclusive Choice List) 115
9.1.3 多选列表(Multiple Choice List) 116
9.1.4 长列表元素(Long List Elements) 116
9.1.5 列表元素字体 117
9.2 文本框(TextBox) 118
9.2.1 输入约束(Input Constraints) 119
9.2.2 输入模式(Input Modes) 121
9.3 警告(Alert) 122
9.3.1 警告中的命令 124
9.3.2 行为指示器(Activity Indicator) 124
9.4 窗体(Form) 125
9.5 MIDP 2.0的新特性 126
第10章 MIDP高层用户界面——Form 129
10.1 Item类 129
10.1.1 ItemStateListener 129
10.1.2 条目命令 130
10.2 StringItem类 130
10.2.1 外观模式 131
10.3 ImageItem类 132
10.4 TextField类 133
10.5 DateField类 134
10.6 ChoiceGroup类 135
10.7 Gauge类 135
10.8 CustomItem类 136
10.8.1 交互模式 137
10.8.2 遍历(Traversal) 138
10.9 窗体布局 139
10.9.1 行间断 140
10.9.2 标签布局 141
10.9.3 当前对齐 141
10.9.4 条目尺寸 142
10.9.5 行填充 143
10.9.6 间隔 145
10.10 MIDP2.0的新特性 145
第11章 MIDP低层用户界面类库 149
11.1 Canvas API 149
11.1.1 Canvas的范围 150
11.1.2 重绘机制 150
11.1.3 绘制模型 151
11.1.4 Canvas 的可见性 151
11.2 Canvas的低层事件API 152
11.2.1 按键事件 152
11.2.2 动作按键(Action Keys) 152
11.2.3 指点事件(Pointer Events) 153
11.3 Graphics 153
11.3.1 坐标系统 153
11.3.2 修剪(Clipping) 154
11.3.3 坐标变换 154
11.3.4 色彩模型 155
11.3.5 线条风格 155
11.3.6 字体 156
11.4 创建和使用图像 156
11.4.1 不可变图像 156
11.4.2 可变图像 157
11.4.3 透明度和Alpha合成 157
11.4.4 获取RGB数据 158
11.4.5 锚点(Anchor Points) 159
11.5 基本绘制操作 160
11.5.1 绘制线条 160
11.5.2 弧形的绘制和填充 161
11.5.3 矩形的绘制和填充 162
11.5.4 圆角矩形的绘制和填充 164
11.5.5 三角形的填充 165
11.5.6 绘制文字 166
11.5.7 绘制图像 166
11.5.8 绘制RGB数据 168
11.5.9 像素区域的复制 169
11.6 MIDP 2.0的新特性 170
第12章 MIDP Game API 173
12.1 GameCanvas 173
12.1.1 按键查询(Key Polling) 174
12.1.2 屏幕缓冲 175
12.2 Layer 175
12.3 Sprite 176
12.3.1 帧 176
12.3.2 帧序列 178
12.3.3 引用像素(Reference Pixel) 179
12.3.4 变换(Transform) 180
12.4 TiledLayer 180
12.4.1 图块(Tile) 180
12.4.2 单元格(Cell) 182
12.5 LayerManager 184
12.6 冲突检测 186
12.6.1 矩形框冲突检测 186
12.6.2 像素级冲突检测 187
12.7 示例代码:一个简单的游戏 188
12.8 MIDP 2.0的新特性 195
第13章 MIDP Sound API 197
13.1 MIDP 2.0 Sound API概述 197
13.1.1 MIDP支持的媒体 197
13.1.2 设计目标 198
13.1.3 需求 199
13.1.4 MIDP Sound的架构 200
13.2 播放器的创建和管理 202
13.2.1 管理媒体框架 202
13.2.2 为媒体数据创建播放器 203
13.2.3 音调生成 206
13.2.4 示例代码 207
13.3 媒体控件 208
13.3.1 ToneControl 208
13.3.2 VolumeControl 211
13.3.3 定制控件 211
13.3.4 示例代码 211
13.4 Mobile Media API增强的媒体支持 217
13.4.1 DataSource 218
13.4.2 高级控件 218
13.5 MIDP 2.0的新特性 219
第14章 MIDP持久库 221
14.1 记录管理系统 221
14.2 操作存储记录和记录 223
14.2.1 操作一个存储记录 223
14.2.2 共享的存储记录 225
14.2.3 操作存储记录中的记录 226
14.2.4 记录数据与字节数据的相互转换 226
14.2.5 过滤、比较、监听和枚举记录 227
14.3 例子代码(RMSMIDlet.java) 231
14.4 MIDP 2.0新特性 241
第15章 MIDP网络和串行通信 243
15.1 无线数据网络的特性 243
15.2 关于网络接口的考虑 244
15.3 HttpConnection接口 245
15.3.1 HTTP连接状态 245
15.3.2 HTTP安全性 246
15.3.3 建立连接 246
15.3.4 对URL的语法分析 247
15.3.5 HTTP请求头标 248
15.3.6 使用HTTP连接 250
15.3.7 HTTP响应头标 252
15.3.8 关闭HTTP连接 253
15.4 一个例子(NetClientMIDlet.java) 253
15.5 SocketConnection 264
15.5.1 取得本地地址和端口号 264
15.5.2 取得远程主机的地址和端口号 265
15.5.3 读取和设置套接字选项 265
15.5.4 关闭流 266
15.5.5 SocketConnection的安全性 266
15.5.6 例子 266
15.6 ServerSocketConnection 267
15.6.1 获取本地地址和端口地址 267
15.6.2 ServerSocketConnection的安全性 268
15.6.3 例子 268
15.7 UDPDatagramConnection 269
15.7.1 取得本地地址和端口号 269
15.7.2 数据报 270
15.7.3 关闭连接 270
15.7.4 UDPDatagramConnection的安全性 271
15.7.5 例子 271
15.8 CommConnection 272
15.8.1 串行口速率的获取和设置 273
15.8.2 CommConnection的安全性 274
15.8.3 命名端口的好习惯 274
15.8.4 例子 274
15.9 MIDP 2.0的新特性 276
第16章 安全网络 277
16.1 检查一个连接的安全属性 278
16.1.1 服务器证书 279
16.1.2 X.509识别名的可打印表示规范 280
16.2 HttpsConnection 281
16.2.1 HttpsConnection的安全性 281
16.2.2 例子 282
16.3 SecureConnection 283
16.3.1 SecurityConnection的安全性 284
16.3.2 例子 284
16.4 MIDP X.509 证书原型 285
16.4.1 证书扩展 286
16.4.2 证书大小 286
16.4.3 算法支持 286
16.4.4 HTTPS的证书处理过程 286
16.5 MIDP 2.0里新加进的特性 287
第17章 事件驱动的应用程序启动 289
17.1 基于警告的MIDlet启动 289
17.2 基于网络的MIDlet启动 291
17.2.1 注册要启动的MIDlet 291
17.2.2 静态推注册机制 292
17.2.3 动态推注册机制 294
17.3 监听和启动 295
17.4 在启动后处理连接 296
17.5 推注册(Push Registry)的安全 297
17.6 样例使用场景 298
17.6.1 聊天程序例子 298
17.6.2 Ping程序例子 300
17.7 MIDP 2.0新特性 303
第18章 MIDlet套件的安全性 305
18.1 假设 306
18.2 针对不可信MIDlet套件的沙盒 307
18.3 可信任的MIDlet套件安全模型 308
18.3.1 许可 308
18.3.2 为一个MIDlet套件请求许可 310
18.3.3 保护域 311
18.3.4 用户许可的交互模式 311
18.3.5 批准对可信任MIDlet套件的许可 312
18.4 对安全不敏感的API 313
18.5 使用X.509 PKI为MIDlet套件建立信任 313
18.5.1 签署一个MIDlet套件 314
18.5.2 认证一个MIDlet套件 317
18.5.3 认证和授权结果缓存 320
18.5.4 可信任的MIDlet套件的X.509注册Profile 320
18.6 对GSM/UMTS设备的推荐安全策略 321
18.7 MIDP 2.0的新特性 321
第19章 MIDlet的部署 323
19.1 MIDlet套件 323
19.1.1 打包MIDlet套件 324
19.1.2 应用程序描述文件 324
19.1.3 MIDlet 属性 325
19.1.4 MIDlet套件执行环境 330
19.2 MIDP系统软件 332
19.3 用户发起的无线程序供应 332
19.3.1 更新MIDlet套件 334
19.3.2 删除MIDlet套件 334
19.3.3 安装和删除状况报告 335
19.3.4 安装状况代码和消息 336
19.4 MIDP 2.0的新特性 337
第20章 附加MIDP API 339
20.1 定时器支持 339
20.1.1 使用单次定时器 340
20.1.2 使用重复定时器 341
20.1.3 示例代码(TimerMIDlet.java) 342
20.2 系统属性 346
20.3 应用程序资源文件 347
20.4 退出MIDlet 347
第21章 总结 349
参考文献 353
附录A CLDC应用程序编程接口 355
API大全凡例 356
CLDC API大全 359
附录B MIDP应用程序编程接口 391
MIDP API大全 393
索引 425
图索引 xxvii
序 xix
前言 xxi
致谢 xxvii
第1章 简介 1
1.1 无线Internet革命 1
1.2 为什么要在无线设备上应用Java技术 2
1.3 简短的历史回顾 3
1.4 J2ME?标准化的成果 4
第2章 J2ME概述 7
2.1 Java 2平台 7
2.2 Java 2 Platform, Micro Edition (J2ME) 9
2.3 J2ME架构的关键概念 10
2.3.1 Profiles 12
2.3.2 Configurations 14
2.3.3 可选包(Optional Packages) 17
2.4 J2ME平台的演进 17
2.4.1 J2ME核心标准化的成果 18
2.4.2 无线通讯领域的可选包 19
第3章 目标、要求和范畴 23
3.1 主要目标 23
3.1.1 Java应用程序和内容的动态部署 24
3.1.2 第三方应用程序开发 24
3.1.3 独立于任何网络技术标准 25
3.1.4 与其他无线应用程序标准的兼容性 26
3.2 目标设备 26
3.3 泛论消费类设备和嵌入式系统 28
3.4 要求 30
3.4.1 CLDC的硬件要求 31
3.4.2 MIDP的硬件要求 32
3.4.3 CLDC的软件要求 32
3.4.4 MIDP的软件要求 33
3.4.5 J2ME的要求 34
3.5 CLDC及MIDP标准涉及的范畴 35
3.5.1 CLDC的范畴 35
3.5.2 MIDP的范畴 35
第4章 Connected Limited Device Configuration 39
4.1 CLDC专家组 40
4.1.1 CLDC 1.0专家组 40
4.1.2 CLDC 1.1专家组 40
4.2 CLDC架构、应用程序模型和安全性 41
4.2.1 架构概述 41
4.2.2 Java应用程序的概念 42
4.2.3 应用程序安全性 43
4.2.4 应用程序管理 45
4.3 对Java语言规范的兼容性 46
4.3.1 不支持类实例的Finalization 47
4.3.2 错误处理上的局限 47
4.4 对Java虚拟机规范的兼容性 48
4.4.1 从虚拟机中去除的特性 48
4.4.2 类文件验证 50
4.4.3 类文件格式和类装载 52
4.5 CLDC 1.1的新特性 55
第5章 CLDC类库 57
5.1 背景和目标 57
5.2 继承自J2SE的类 58
5.2.1 系统类 58
5.2.2 数据类型类 59
5.2.3 集合容器类 59
5.2.4 输入/输出类 59
5.2.5 日历和时间类 60
5.2.6 其他附加类 60
5.2.7 异常和错误类 60
5.2.8 弱引用(Weak References) 62
5.2.9 国际化支持 62
5.2.10 对系统属性的支持 63
5.3 CLDC特有的类 64
5.3.1 背景和动机 64
5.3.2 通用连接(Generic Connection)框架 65
5.3.3 CLDC不包含网络协议的具体实现 67
5.3.4 通用连接(Generic Connection)接口小结 67
5.4 CLDC 1.1的新特性 70
第6章 Mobile Information Device Profile 73
6.1 MIDP专家组 74
6.1.1 MIDP 1.0专家组 74
6.1.2 MIDP 2.0专家组 74
6.2 MIDP规范涵盖的领域 76
第7章 MIDP应用程序模型 79
7.1 MIDlet 79
7.1.1 MIDlet的状态 82
7.1.2 startApp,pauseApp和destroyApp方法的用法 84
7.1.3 程序生命期和用户界面API 87
7.2 MIDlet套件(Suites) 88
7.3 MIDP 2.0的新特性 88
第8章 MIDP用户界面类库 89
8.1 与桌面AWT相比的MIDP用户界面 90
8.2 MIDP用户界面API的结构 90
8.2.1 可显示模型(Displayable Model) 91
8.2.2 底层用户界面 93
8.2.3 高层用户界面 93
8.3 Display类 95
8.3.1 当前可显示(Current Displayable) 96
8.3.2 屏幕背光和设备振动器 97
8.4 Displayables 97
8.4.1 Ticker 99
8.5 命令(Command) 100
8.5.1 映射到设备用户界面的命令 100
8.5.2 Command特性 101
8.5.3 命令类型 102
8.5.4 命令监听者(Command Listeners) 105
8.6 高级话题 106
8.6.1 系统屏幕 106
8.6.2 适应特定设备用户界面样式 106
8.6.3 设备提供的操作 107
8.6.4 同步性 108
8.7 MIDP 2.0的新特性 109
第9章 MIDP高层用户界面——Screen 111
9.1 列表List 111
9.1.1 隐含列表(Implicit List) 113
9.1.2 单选列表(Exclusive Choice List) 115
9.1.3 多选列表(Multiple Choice List) 116
9.1.4 长列表元素(Long List Elements) 116
9.1.5 列表元素字体 117
9.2 文本框(TextBox) 118
9.2.1 输入约束(Input Constraints) 119
9.2.2 输入模式(Input Modes) 121
9.3 警告(Alert) 122
9.3.1 警告中的命令 124
9.3.2 行为指示器(Activity Indicator) 124
9.4 窗体(Form) 125
9.5 MIDP 2.0的新特性 126
第10章 MIDP高层用户界面——Form 129
10.1 Item类 129
10.1.1 ItemStateListener 129
10.1.2 条目命令 130
10.2 StringItem类 130
10.2.1 外观模式 131
10.3 ImageItem类 132
10.4 TextField类 133
10.5 DateField类 134
10.6 ChoiceGroup类 135
10.7 Gauge类 135
10.8 CustomItem类 136
10.8.1 交互模式 137
10.8.2 遍历(Traversal) 138
10.9 窗体布局 139
10.9.1 行间断 140
10.9.2 标签布局 141
10.9.3 当前对齐 141
10.9.4 条目尺寸 142
10.9.5 行填充 143
10.9.6 间隔 145
10.10 MIDP2.0的新特性 145
第11章 MIDP低层用户界面类库 149
11.1 Canvas API 149
11.1.1 Canvas的范围 150
11.1.2 重绘机制 150
11.1.3 绘制模型 151
11.1.4 Canvas 的可见性 151
11.2 Canvas的低层事件API 152
11.2.1 按键事件 152
11.2.2 动作按键(Action Keys) 152
11.2.3 指点事件(Pointer Events) 153
11.3 Graphics 153
11.3.1 坐标系统 153
11.3.2 修剪(Clipping) 154
11.3.3 坐标变换 154
11.3.4 色彩模型 155
11.3.5 线条风格 155
11.3.6 字体 156
11.4 创建和使用图像 156
11.4.1 不可变图像 156
11.4.2 可变图像 157
11.4.3 透明度和Alpha合成 157
11.4.4 获取RGB数据 158
11.4.5 锚点(Anchor Points) 159
11.5 基本绘制操作 160
11.5.1 绘制线条 160
11.5.2 弧形的绘制和填充 161
11.5.3 矩形的绘制和填充 162
11.5.4 圆角矩形的绘制和填充 164
11.5.5 三角形的填充 165
11.5.6 绘制文字 166
11.5.7 绘制图像 166
11.5.8 绘制RGB数据 168
11.5.9 像素区域的复制 169
11.6 MIDP 2.0的新特性 170
第12章 MIDP Game API 173
12.1 GameCanvas 173
12.1.1 按键查询(Key Polling) 174
12.1.2 屏幕缓冲 175
12.2 Layer 175
12.3 Sprite 176
12.3.1 帧 176
12.3.2 帧序列 178
12.3.3 引用像素(Reference Pixel) 179
12.3.4 变换(Transform) 180
12.4 TiledLayer 180
12.4.1 图块(Tile) 180
12.4.2 单元格(Cell) 182
12.5 LayerManager 184
12.6 冲突检测 186
12.6.1 矩形框冲突检测 186
12.6.2 像素级冲突检测 187
12.7 示例代码:一个简单的游戏 188
12.8 MIDP 2.0的新特性 195
第13章 MIDP Sound API 197
13.1 MIDP 2.0 Sound API概述 197
13.1.1 MIDP支持的媒体 197
13.1.2 设计目标 198
13.1.3 需求 199
13.1.4 MIDP Sound的架构 200
13.2 播放器的创建和管理 202
13.2.1 管理媒体框架 202
13.2.2 为媒体数据创建播放器 203
13.2.3 音调生成 206
13.2.4 示例代码 207
13.3 媒体控件 208
13.3.1 ToneControl 208
13.3.2 VolumeControl 211
13.3.3 定制控件 211
13.3.4 示例代码 211
13.4 Mobile Media API增强的媒体支持 217
13.4.1 DataSource 218
13.4.2 高级控件 218
13.5 MIDP 2.0的新特性 219
第14章 MIDP持久库 221
14.1 记录管理系统 221
14.2 操作存储记录和记录 223
14.2.1 操作一个存储记录 223
14.2.2 共享的存储记录 225
14.2.3 操作存储记录中的记录 226
14.2.4 记录数据与字节数据的相互转换 226
14.2.5 过滤、比较、监听和枚举记录 227
14.3 例子代码(RMSMIDlet.java) 231
14.4 MIDP 2.0新特性 241
第15章 MIDP网络和串行通信 243
15.1 无线数据网络的特性 243
15.2 关于网络接口的考虑 244
15.3 HttpConnection接口 245
15.3.1 HTTP连接状态 245
15.3.2 HTTP安全性 246
15.3.3 建立连接 246
15.3.4 对URL的语法分析 247
15.3.5 HTTP请求头标 248
15.3.6 使用HTTP连接 250
15.3.7 HTTP响应头标 252
15.3.8 关闭HTTP连接 253
15.4 一个例子(NetClientMIDlet.java) 253
15.5 SocketConnection 264
15.5.1 取得本地地址和端口号 264
15.5.2 取得远程主机的地址和端口号 265
15.5.3 读取和设置套接字选项 265
15.5.4 关闭流 266
15.5.5 SocketConnection的安全性 266
15.5.6 例子 266
15.6 ServerSocketConnection 267
15.6.1 获取本地地址和端口地址 267
15.6.2 ServerSocketConnection的安全性 268
15.6.3 例子 268
15.7 UDPDatagramConnection 269
15.7.1 取得本地地址和端口号 269
15.7.2 数据报 270
15.7.3 关闭连接 270
15.7.4 UDPDatagramConnection的安全性 271
15.7.5 例子 271
15.8 CommConnection 272
15.8.1 串行口速率的获取和设置 273
15.8.2 CommConnection的安全性 274
15.8.3 命名端口的好习惯 274
15.8.4 例子 274
15.9 MIDP 2.0的新特性 276
第16章 安全网络 277
16.1 检查一个连接的安全属性 278
16.1.1 服务器证书 279
16.1.2 X.509识别名的可打印表示规范 280
16.2 HttpsConnection 281
16.2.1 HttpsConnection的安全性 281
16.2.2 例子 282
16.3 SecureConnection 283
16.3.1 SecurityConnection的安全性 284
16.3.2 例子 284
16.4 MIDP X.509 证书原型 285
16.4.1 证书扩展 286
16.4.2 证书大小 286
16.4.3 算法支持 286
16.4.4 HTTPS的证书处理过程 286
16.5 MIDP 2.0里新加进的特性 287
第17章 事件驱动的应用程序启动 289
17.1 基于警告的MIDlet启动 289
17.2 基于网络的MIDlet启动 291
17.2.1 注册要启动的MIDlet 291
17.2.2 静态推注册机制 292
17.2.3 动态推注册机制 294
17.3 监听和启动 295
17.4 在启动后处理连接 296
17.5 推注册(Push Registry)的安全 297
17.6 样例使用场景 298
17.6.1 聊天程序例子 298
17.6.2 Ping程序例子 300
17.7 MIDP 2.0新特性 303
第18章 MIDlet套件的安全性 305
18.1 假设 306
18.2 针对不可信MIDlet套件的沙盒 307
18.3 可信任的MIDlet套件安全模型 308
18.3.1 许可 308
18.3.2 为一个MIDlet套件请求许可 310
18.3.3 保护域 311
18.3.4 用户许可的交互模式 311
18.3.5 批准对可信任MIDlet套件的许可 312
18.4 对安全不敏感的API 313
18.5 使用X.509 PKI为MIDlet套件建立信任 313
18.5.1 签署一个MIDlet套件 314
18.5.2 认证一个MIDlet套件 317
18.5.3 认证和授权结果缓存 320
18.5.4 可信任的MIDlet套件的X.509注册Profile 320
18.6 对GSM/UMTS设备的推荐安全策略 321
18.7 MIDP 2.0的新特性 321
第19章 MIDlet的部署 323
19.1 MIDlet套件 323
19.1.1 打包MIDlet套件 324
19.1.2 应用程序描述文件 324
19.1.3 MIDlet 属性 325
19.1.4 MIDlet套件执行环境 330
19.2 MIDP系统软件 332
19.3 用户发起的无线程序供应 332
19.3.1 更新MIDlet套件 334
19.3.2 删除MIDlet套件 334
19.3.3 安装和删除状况报告 335
19.3.4 安装状况代码和消息 336
19.4 MIDP 2.0的新特性 337
第20章 附加MIDP API 339
20.1 定时器支持 339
20.1.1 使用单次定时器 340
20.1.2 使用重复定时器 341
20.1.3 示例代码(TimerMIDlet.java) 342
20.2 系统属性 346
20.3 应用程序资源文件 347
20.4 退出MIDlet 347
第21章 总结 349
参考文献 353
附录A CLDC应用程序编程接口 355
API大全凡例 356
CLDC API大全 359
附录B MIDP应用程序编程接口 391
MIDP API大全 393
索引 425
猜您喜欢