首页>参考读物>计算机科学与技术>软件与程序设计

实时 Java 平台编程
作者 : (美)Peter C.Dibble
译者 : 滕启明
出版日期 : 2003-03-01
ISBN : 7-111-11583-X
定价 : 35.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 260
开本 : 16开
原书名 : Real-Time Java Platform Programming
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书针对有经验的Java平台开发人员编写,是一本非常实用的指南,为实时编程提供了坚实的根基。作为RTSJ专家组的成员之一,Dibble由对Java平台特有的实时问题的概述开始,逐步讲解了如何使用RTSJ的每一项主要功能特性。
  从广泛的实时原理到详细的编程隐患,实时Java平台编程覆盖了构建有效实时程序需要的所有知识。
  主题包括:
  ◆与非实时代码的互操作性,实时开发中的取舍,以及JVM软件的实时问题
  ◆垃圾收集、无堆访问、物理内存和“不朽”内存以及无堆内存的常数时间
  ◆分配
  ◆优先级调度、期限调度、速率单调调度
  ◆闭包、异步控制传输、异步事件、计时器
  ◆在www.phptr.com/dibble上可找到范例代码、修正内容,以及前往相关站点的链接。

图书前言

本书分为二大部分。第1章到第7章讲述RTSJ的背景知识,剩下的部分是关于RTSJ的内容。如果你已经掌握了实时调度或者并不关心调度问题而想直接阅读代码,你可以从第8章开始往后阅读。尽管跳过前面7章是可以的,但我不推荐这样跳来跳去地阅读。几乎没有哪章可以自成一体。在读完本书后,你还可把它作为参考资料用,所以我建议你还是从头开始、按顺序地读一下本书。
  本书可以与RTSJ规范、参考实现配合使用。你可以在www.phptr.com/dibble或者www.rtj.org上找到规范和参考实现。初始的RTSJ文档是Addison-Wesley Java丛书的一部分。不过,RTSJ的初始版本已经被最终版本——1.0版本所取代。目前最新的RW版本只能通过可下载的PDF和HTML格式得到。
  参考实现是RTSJ for Linux的一个完整的、可用的实现。本书中提到的例子几乎都在参考实现上测试过。我曾在运行有Red Hat Linux和Timesys Linux的PC上使用过该参考实现,在X86 Linux的其他版本上也应该没有问题。不过参考实现依赖于底层的操作系统进行调度,所
以你会发现类似于优先级逆转避免(Priority Inversion Avoidance)这样的功能特性会取决于你所使用的Linux版本。
  参考实现的源代码是可以获取的。其中一些是从SunCVM派生而来,可以在Sun社区源码授权协议(Sun commnity sonrce license)下获得。参考实现中与 Sun的代码没有关系的那部分受开放源码协议(Open sonrce license)的约束比较小。
  虽然参考实现用于实验相当不错,但由于它不是为商业使用而设计的,它没有在性能或内存使用方面加以注意,而这些或许正是你期望从商业产品中获得的。
  在www.phptr.com/dibble上,你可以找到重要的Web站点的链接、本书的修正和补充、以及其他诸如源代码等有用的东西。

作者简介

(美)Peter C.Dibble:暂无简介

译者简介

滕启明:暂无简介

译者序

20世纪90年代以来,随着计算机网络技术的发展,特别是网络应用的大量普及,进一步推动了相关领域的发展,带动了国民经济,潜移默化地改变着人们的工作、学习、生活方式。移动计算。普适计算。信息家电、无线通信等领域随着硬件技术、通信技术、软件技术的发展而得到长足的进步,并在近年来引起了业界的广泛关注。
  实时计算作为一个研究领域已经存在了多年,但很多研究人员、开发人员甚至对实时系统与嵌人式系统都不予严格区分。嵌入式系统的开发通常采用完全定制的模式,所有代码都要从头编写。之所以存在这样的状况,一方面可能是因为应用领域、性能需求方面的限制,另一方面则往往是因为没有可以复用的代码。对处于底层的系统软件进行复用,其难度要比对上层软件的复用大得多。其原因在于底层软件往往是与硬件相关的,而且其性能对于整个系统而言相当关键。所以很多嵌入式系统、实时系统一般采用汇编语言或者C语言编写。
  作为计算机编程语言的后起之秀,Java具有众多很有吸引力的特性:可移植性、安全性、完全面向对象、强大的类库支持等等。随着Java语言在应用系统开发中的广泛使用,已经有
人开始考虑把Java语言应用到实时系统软件开发中,并且也确实有人这样做了。本书即是介绍实时Java平台的一本参考资料。
  本书的组织方式比较特别:从第1章到第7章几乎很少提及RTSJ,而主要关注Java平台本身(如 Java虚拟机的体系结构、垃圾收集),以及与实时计算相关的基本原理(如硬件体系结构、实时调度原理);从第8章开始才真正开始对RTSJ平台做深人细致的介绍。尽管本书对实时Java平台编程的介绍主要是针对RTSJ平台,但本书绝不是RTSJ的参考手册。作者从语言闭包、高解析度时间、异步事件、实时线程、领域内存、不朽内存、物理内存、同步等各个角度介绍了RTSJ平台对实时编程所提供的支持。在介绍每一项功能支持的同时,作者还给出了大量的范例代码。
  同时,由于作者Peter C.Dibble亲自参与了RTSJ规范的编写,并且是RTSJ专家组的成员,所以书中的很见解,甚至一些随时想到的提示信息都有其独到之处。这也会是读者在阅读此书时的收获之一。
  在本书原作者编写此书时,RTSJ规范尚未正式发布,更谈不上成熟。英文原书是随RTSJ规范一起出台的,同时出台的还有一份参考实现。作为本书的译者,一方面力求能够用中文准确地再现原作者的思想,同时也要对一些专业词汇进行斟酌。在出现专业术语时尽量年明其英文原文,以避免读者产生混淆。但是由于中文和英文的表达方式不同,很难做到兼顾中文可读性和英文原文的韵味,这一点敬请读者谅解。
  总体而言,此书中涉及到的技术、观念广泛、新颖。适合于大专院校计算机专业高年级本科生和研究生参考。对于从事软件开发。培训工作的管理人员,以及从事嵌入式软件开发、实时系统研制、Java应用编写的开发人员也有很重要的实用参考价值。
  参与本书翻译、审校工作的还有北京大学计算机系的顿捕、胡建均、余啸海、朱伟等。北京大学计算机系陈向群教授参与了本书的翻译、审校工作,并在整个翻译过程中给予了大力支持。在此一并表示译者的诚挚谢意。
  限于译者的水平,译文中难免存在纸漏不足之处,欢迎广大读者不吝指正。
                                  滕启明
                              2002年10月于北京大学


图书目录

第1章 概貌
1.1 Java技术和实时
l. 1.l 实时编程需求
1. 1.2 Java和嵌入式实时
1.2 实时的定义
1.2.1 测量的精度
1.2.2 一致性
1.2.3 效用函数曲线图
1.3 Java的问题
1.4 实时Java的问题
1.5 总结
第2章 Java虚拟机的体系结构
2.l 对"一经编写、随处运行"的理解
2.2 JVM组件
2.2.l 类加载
2.2.2 字节码解释器
2.2.3 安全管理器
2.2.4 垃圾收集器
2. 2.5 线程管理
2.2.6 输入/输出
2.2.7 图形
2.3 解释器实现
2.3.l 标准解释器
2.3.2 优化的解释器
2.3.3 JIT
2.3.4 代码片段
2.3.5 编译成独立的进程
2.3.6 本机方法
2.3.7 编译成本机方法
2.3.8 编译成JIT接口
第3章 硬件体系结构
3.l 单条指令执行的最坏情形
3.1.l 最坏情形的场景
3.1.2 实用的度量标准
3.2 易错硬件的管理
3.2.l 管理请求换页
3.2.2 管理DMA
3.2.3 管理高速缓存
3.2.4 管理地址转换高速缓存
3.2.5 管理中断
3.3 对JVM的影响
第4章 垃圾收集
4.l 引用计数
4.2 基本的垃圾收集
4.2.l 标记清除
4.2.2 碎片整理
4.3 复制式收集器
4.4 递增式收集
4.5 再生式垃圾收集
4.5.l 代间引用
4.5.2 大对象存储
4. 6 实时问题
第5章 优先级调度
5.l 调度术语
5.2 执行序列
5.3 抢占
5.4 固定优先级与动态优先级
5.5 优先级逆转
5.6 为什么要32个优先级
5.7 与优先级调度有关的问题
第6章 利用期限进行调度
6.l 底层机制
6.2 调度器的作用范围
6.3 一些系统实例
6.3.l 最早期限优先
6.3.2 最小松弛
6.3.3 周期调度
6.3.4 非周期性服务器
6.3.5 处理超负荷的情况
6.4 时间性通常是随机的
第7章 速率单调分析
7.1 原理
7.l. l Liu and Layland原理
7.1.2 图形化方法
7.1.3 Lehoczky、Sha及Ding原理
7.2 限制
7.2.l 独立的任务
7.2.2 期限与周期相同
7.2.3 多处理器系统
第8章 实时Java平台介绍
8.l 实时Java简史
8.2 规范的主要特征
8.2.l 线程和调度
8. 2.2 垃圾收集
8.2.3 异步事件处理器
8.2.4 异步控制传递
8.2.5 内存分配
8.2.6 内存访问
8. 3 实现
8.4 RW版的Hello World
第9章 闭包
9.l 语言结构
9.2 Java闭包
9.2.l 闭包结构
9. 2.2 RTSJ中的闭包
9.3 闭包的局限性
9.3.l 可读性
9.3.2 局部变量
9.3.3 构造器
9.3. 4 嵌套
第10章 高解析度时间
10.l 解析度
10.2 "时钟"
10.3 HighResolutionTime基类
10.4 绝对时间
10.5 相对时间
10.6 有理时间
第11章 异步事件
11.1 将事体绑定到事件
11.2 基本的异步事件操作
11. 3 没有事体的异步事件
11.3.1 时间触发
11.3.2 故障触发
11.3.3 软件事件触发
11.4 关于实现的讨论
第12章 实时线程
12.1 创建
12. 2 调度
12.2.l 逆转处理
12.2.2 固定优先级
12.2.3 可行性
12.3 无处理器的周期性线程
12.4 有处理器的周期性线程
12.5 与正常线程的交互
12.6 更改调度器
第13章 无堆内存
13.l 无堆内存的优点
13.2 分配制度
13. 3 规则
13.4 不朽内存中的分配机制
13.5 领域内存中的分配机制
13.5.l 分配时间
13.5.2 创建领域内存
13.5.3 分配机制
13.5.4 终结器
13. 6 使用嵌套的领域内存
13.6. l 领域堆栈(树)
13.6.2 DAG
13.6.3 嵌套领域的实际应用
13. 6.4 每个嵌套领域都包含两个内存区域
13.6.5 缺陷
13.6.6 使用executeInArea
13.6.7 使用标准类
13.7 使用共享的领域内存
13.7.l 领域堆栈被再次访问
13.7.2 领域端埠
13.8 难懂的条文
13.9 例于
第14章 无堆访问
14. 1 与调度器之间的交互
14. 2 规则
14.3 范例
14.4 最终评述
第15章 其他异步事件
15.l 异步事件和调度器
15.2 createReeaseMeters方法
15.3 被绑定的异步事件处理器
15.4 异步事件处理器与无堆内存
15.5 无堆事件处理器与无堆线程
15.6 凋度
15.7 异步事件处理器和线程
15.8 特殊的异步事件
第16章 复用不朽内存
16.l 使用固定对象分配器
16.1.l 载体对象
16.1.2 限制
16.2 回收RT线程
16.3 回收异步事件处理器
第17章 控制的异步传输
17.1 上下文环境中的线程中断
17.2 异步中断激发
17.2.1 Timed类
17. 2. 2 interrupt方法
17.2.3 fire方法
17.2.4 小结
17. 2.5 置换规则
17.3 异步异常的传播规则
17.3.l 不自觉的捕捉
17.3.2 不匹配的doInterruptible
17.3. 3 匹配的doInterruptible
17.3. 4 内幕
17.3.5 应用程序对异步中断的处理
17.4 不可中断的代码
17.5 旧式代码
17.6 使用ATC来终止线程
第18章 物理内存
18.l 物理内存和虚拟内存
18.2 物理内存管理器
18.2. 1 内存类型
18. 2.2 可移动的内存
18.3 不朽物理内存
18.4 领域物理内存
第19章 原始内存访问
19.l 安全性
19.2 读写
19.3 Get/Set方法
19.4 映射
19.5 RawMemoryFloatAccess类
第20章 无锁同步
20.l 免等待队列的原理
20.l.l 构造器
20.1.2 通用的方法
20.2 免等待写队列
20.2.1 方法
20.2.2 共享免等待写队列
20. 3 免等待读队列
20. 3.l 附加的构造器
20.3.2 方法
20.4 免等待双端队列
20.5 免等待队列与内存
20.6 实现注意事项
第21章 建议实践
21.1 RTSJ中功能强大并且容易使用的功能特性
21.1.1 实时线程
21.1.2 周期性线程
21.l.3 异步事件处理器
21.1.4 高解析度时间
21.1.5 事体
21.2 RTSJ中功能很强但有危险性的功能特性
21.2.l 简单
21.2. 2 易泄漏
21.2.3 不干净
21.3 RW中功能很强但须加倍小心的功能特性
21.3.l 领域内存
21.3.2 无堆异步事件处理器
21.3.3 无堆实时线程
21.3.4 异步中断式异常
21.4 优先级的选择


教学资源推荐
作者: 王珊珊 臧洌 张志航 编著
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著
参考读物推荐
作者: (美)Fred Long Dhruv Mohindra Robert C. Seacord Dean F. Sutherland David Svoboda 著
作者: [美] 卢克·韦林(Luke Welling), 劳拉·汤姆森(Laura Thomson) 著