首页>参考读物>计算机科学与技术>综合

Java实时编程
作者 : (美)Greg Bollella Eric J. Bruno
译者 : 田思源 等译
出版日期 : 2010-02-08
ISBN : 978-7-111-29282-1
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 284
开本 : 16
原书名 : Real-Time Java Programming: With Java RTS
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书主要讲述使用Java RTS进行Java实时编程的各类主题。主要内容包括3个部分:第一部分“实时计算概念”,明确定义计算领域中的实时概念,并讨论了许多实时应用程序设计和开发的理论;第二部分“高级Java RTS”,提供充足的示例代码来说明Java RTS的内部运作机制及其使用;第三部分“使用Java RTS”,讨论了实际的案例研究。

图书特色

Sun公司的Java实时系统(Java RTS)在多个广泛的环境中得到了实践验证,其中包括金融、控制系统、制造和防务。Java RTS和RTSJ标准(JSR-001)消除了对于复杂、专用的实时语言和操作系统的需要,利用Java超常的生产率和为人所熟知的特点,节省了资金。
在实时Java编程中,Sun公司的两位实时编程专家介绍了开发者成功使用Java RTS及其API所需要的深入知识和实际代码示例,并阐明了用任何RTSJ兼容的环境进行实时编程的基础。
本书的内容包括:
Eric J. Bruno Sun公司系统工程师,专门从事于金融界的Java RTS。他是《Dr. Dobb’s》期刊的撰稿编辑,并撰写在线Java博客。
Greg Bollella 博士、Sun公司杰出工程师,领导实时Java研发。他是JSR - 001、Java实时规范(RTSJ)的规范组组长,并曾经领导在Java社区进程下的实时Java专家小组。他撰写了多部图书、文章,以及有关实时计算的专业论文。
实时原理和概念,以及实时应用设计和开发的独特要求。
如何把Java应用于实时环境。
垃圾回收和Java SE回收器。
使用Java RTS API尽可能高效地解决实际实时系统问题。
当前领先的Java RTS开发和调试工具。
实时垃圾回收、线程、调度和分派。
新的RTSJ内存模型。
异步事件处理和异步控制转移。
作者简介:
使用Java RTS进行实时Java编程

图书前言

“要实现伟大的理想,需要两件事:一个计划和不太足够的时间。”
  ——伦纳德·伯恩斯坦(Leonard Bernstein), 美国指挥家、作曲家

  在写作本书时,实时编程的历史,特别是用Java实时编程,才刚刚开始。但是,我们预测,在不久的将来,实时Java,即来自Sun公司的Java实时系统(Java RealTime System,Java RTS),将主要用于实时应用领域,例如金融领域、关键控制系统、生产线、军事和其他政府系统等的软件。这个预测是在Java曾经处于被认为“太慢”而不适用于开发关键任务和其他企业系统时的阴影中作出的。
  然而,正如Java已经迅速向世界证明它能够执行得足够好,即适应最苛刻的企业系统,Java RTS也正在向实时世界积极证明它自己。除去必要的、复杂的、专业的实时语言和操作环境,Java RTS为系统带来了Java语言的所有的优势和经验,并满足实时性要求。实际上数十年在实时领域进行研究得到的知识和经验,现在已经为每一个Java开发者唾手可得,仅需要对新的类库多一点理解。
  在20世纪90年代末期,Greg Bollella在芝加哥出差时,有了推出一个Java实时版本的想法。不久之后,JSR001开始被使用,而规范处于早期阶段。该规范是由Greg领导,成员包含涉及实时调度理论、微处理器设计、嵌入式系统设计和语言设计等领域的众多精英。最后,制订的规范定义了Java在实时空间是如何使用的,Java RTS符合该规范,并得以实现。
定义“实时”
  虽然本书的第1章全面讨论并定义了实时系统,但是最好在早期设置好场景,并商定确切的定义。实时编程的总体目标是确保系统执行其任务,在定义的最后期限之前,对现实世界的事件作出响应。无论最后期限以微秒或天来衡量,只要任务在需要的最后期限之前完成,该系统即被认为是实时的。这个简单的定义是计算机科学整个学科的基础,在学术界和工业界经过了数年的研究和发展。
  换言之,现实世界的事件发生(如物体掠过一个传感器,或一个股票市场数据源变化的到来)时到代码完成处理该事件的时间的延迟应该是有界的。满足最后期限的能力必须在任何时间是可预测和有保证的,以便提供一个实时系统所需要的确定性。
  满足实时系统的要求可能非常费力,以致创建出专门的编程语言、操作系统、系统框架和调度算法。人们划分不同的研究领域,使用成套的工具,甚至成立整个公司来解决实时问题。正是由于这些原因,Sun创建了Java实时系统。
Java的实时规范
  Sun的Java实时系统是与Java实时规范(RTSJ)百分之百兼容的实现。RTSJ也叫做JSR001,是整个Java社区过程(JCP)被建立的第一个Java规范请求(JSR)。实时Java是许多第一中的第一,并且,通过建立JCP,它不仅为本身的目标(即 Java实时编程)铺平了道路,而且在语言特性方面为Java的发展奠定了基础。
  RTSJ是一个标准,定义了Java应用程序在真实世界环境中的行为。它是由来自世界各地的许多公司的许多领域(例如,嵌入式系统设计、语言设计、操作系统设计、处理器设计、实时调度理论等)的专家创建的,是真正全球性的努力。首要目标不是确定用Java如何实现实时行为,而是完全不改变 Java语言。实现这一目标的重要性,如同数以千计的开发者现在所知道的,是要确保Java可用于实时领域,不需要妥协。
  一个Java的实现能够称为“实时”,则必须符合RTSJ。任何其他都是非标准的,如Java社区作为整体所定义的。这确保了用Java开发的实时应用程序将能够运行在任何兼容RTSJ的JVM上,而且其在实时环境中的行为表现是已经定义的,而无需专门的扩展或者硬件。任何其他做法将违背Java建立的原则。Java RTS是符合RTSJ的,因而是基于标准的。
本书的重点和面向的读者
  本书着重介绍Java RTS、它的API,以及用Java如何建立真正的实时应用。这样做的目的是,为读者提供用Java建立实时应用的实用知识和实例。只要有可能,将通过使用实际工作代码示例,提供关键教义和可视化图示,使复杂的概念清晰化。
  虽然Java RTS是本书的重点,但是所有从本书获得的知识将是默认兼容于 RTSJ的。对于RTSJ的理解不是阅读本书的前提,但强烈建议你阅读这一规范,因为它是这里所介绍的内容的基础。你可以在http://wwwrtsjorg获得最新的规范和相关材料。
  本书的主要读者是(各级)架构师和开发人员,他们需要用时间关键的代码建立应用。本书针对下面不同类型的开发者:
   正在使用或没有使用Java RTS开发有实时要求的应用的Java开发者
   有兴趣学习Java RTS的API并将其用于未来项目的Java开发者
   希望使用Java用于实时应用开发的非Java实时应用程序开发者
   希望使用Java RTS部署在一个通用操作系统上(而不是专用的操作系统、平台或语言)的架构师和开发人员
  对于这些开发者,Java RTS和RTSJ代表着不受限于专门的硬件、操作系统和语言的自由。当这种自由与Java的生产力和大的开发人员社区结合,Java RTS代表的是一个明智的商业选择和潜在的巨大资金的节省。
本书的结构
  本书分为三个主要部分:
  第一部分——实时计算概念:奠定了使用Java RTS的基础。它明确定义了计算领域中的实时概念,并讨论了许多实时应用程序设计和开发的理论。
   这包括第1章至第4章。
  第二部分——高级Java RTS:带你深入了解Java RTS的API,提供充足的示例代码来说明其内部的运作和Java RTS的使用。你将更深入地了解RTSJ适用于解决实际问题的原理。
   这包括第5章至第10章。
  第三部分——使用Java RTS:第三部分讨论了全面的案例研究,其中Java RTS用于解决实际实时系统的问题,以及用于开发和调试Java RTS应用程序的工具。
   这包括第11章和第12章。
  本书的章节划分如下:
  第1章——实时入门:本章提供了实时系统的全面定义,然后将它们与高性能系统和高吞吐量系统进行比较。定义并探讨了其他关键术语,如可预测性、抖动、延迟和确定性。本章的后半部分包含了实时调度的高层次讨论。本章采用类比、说明和图示来解释这些概念,便于读者的理解。
  第2章——实时与Java SE:本章探讨了在实时环境中使用标准的Java。出现的问题,如Java垃圾回收器的执行,以及即时编译器等,将作为麻烦的来源讨论。本章详细讨论Java SE 6和即将发布的Java SE 7中的垃圾回收,最后对实时垃圾回收算法进行概述。
  第3章——Java实时规范:RTSJ定义了Java在实时空间的行为。事实上,RTSJ是第一个Java规范请求(JSR),并且是Java社区过程(JCP)形成的一大原因。该规范由Greg Bollella领导,包括来自世界各地的学术界和工业界的专家参与制订,现在叫做实时Java开发标准。本章提供了RTSJ的简要概述。
  第4章——Sun Java实时系统:本章是我们对实时Java进行的探讨,首先讨论了Java RTS——Sun公司实现的RTSJ产品。阅读本章将帮助你在Solaris或Linux上建立并运行一个可工作的Java RTS系统。
  第5章——线程、调度和新内存模型:作为第一个深入Java RTS的API的一章,这一章的重点是为你提供新的线程模型,以及RTSJ引入的不同内存模型。
  第6章——同步:本章探讨Java RTS中的线程是如何同步的。还深入探讨Java虚拟机中所做的一些改进,以尽量减少内部同步多线程访问共享资源时的延迟。
  第7章——实时时钟API:Java RTS提供对高精度定时器和确定性定时器对象的支持。在本章中,我们将研究实时时钟API,以及如何为确定性操作创建定时器对象。
  第8章——异步事件:Java RTS让你更好地控制工作在一个系统中的调度。本章探讨可以用来在实时应用中控制事件处理的类。
  第9章——异步控制转移和线程终止:在本章中,我们将探讨Java RTS为可调度对象从一个方法到另一个方法转移控制,终止任务提供的细粒度控制。
  第10章——实时垃圾回收器内部机制:本章深入介绍实时垃圾回收器的内部工作原理,并介绍了它如何运行。充分理解RTGC如何工作,如何影响系统,以及如何进行调整,将帮助你建立更有效的Java RTS应用。
  第11章——证券交易系统:本章探讨了Java RTS在类似于交易商、投资银行和金融世界交换使用的金融应用中的使用。在投资、银行、金融领域,由于垃圾收集造成的延迟引入错过重要市场事件的风险。由此造成的拖延可能直接转化为在这些市场的亏损。
  第12章——Java RTS工具:本章讨论可用于开发和调试Java RTS应用程序的工具。
保持更新
  没有一本书是完成的,像Java RTS这样的重要技术也不是一成不变的,它们会不断地演变。检查网站http://wwwericbrunocom/realtime,以获得更新和额外的内容,以及示例和许多案例研究的完整代码。我们也将让你保持对RTSJ,以及Sun公司的实现——Java RTS变化的更新。

上架指导

计算机\程序设计

封底文字

使用Java RTS 进行实时Java 编程

面向开发者和架构师的Java RTS 权威指南

· 面向转向实时系统领域的Java开发者和架构师,以及转向Java的实时系统开发者。
· 从头至尾逐步分析应用示例,确定其限制并讨论解决它们的API和设计模式。
· 作者为实时Java标准过程的前任组长和华尔街实时系统的顶级开发者。

Sun公司的Java实时系统(Java RTS)在多个广泛的环境中得到了实践验证,其中包括金融、控制系统、制造和防务。Java RTS和RTSJ标准(JSR-001)消除了对于复杂、专用的实时语言和操作系统的需要,利用Java超常的生产率和为人所熟知的特点,节省了资金。

在实时Java 编程中,Sun公司的两位实时编程专家介绍了开发者成功使用Java RTS 及其API所需要的深入知识和实际代码示例,并阐明了用任何RTSJ兼容的环境进行实时编程的基础。

主要内容包括:

· 实时原理和概念,以及实时应用设计和开发的独特要求。
· Java如何被应用于实时环境。
· 垃圾回收和Java SE回收器。
· 使用Java RTS API 尽可能高效地解决实际实时系统问题。
· 当前领先的Java RTS开发和调试工具。
· 实时垃圾回收、线程、调度和分派。
· 新的RTSJ内存模型。
· 异步事件处理和异步控制转移。

作者简介

(美)Greg Bollella Eric J. Bruno:作者简介 Eric J. Bruno,Sun 公司的系统工程师,专门从事于金融界的Java RTS。他是《Dr. Dobb 's》期刊的撰稿编辑,并撰写在线Java博客。Greg Bollella,博士、Sun 公司的杰出工程师,领导实时Java研发。他是JSR - 001,Java实时规范(RTSJ)的规范组组长,并曾经领导在Java社区进程下的实时Java专家小组。他撰写了多本图书、文章,以及有关实时计算的专业论文。

译者简介

田思源 等译:暂无简介

译者序

将广泛使用的Java应用于实时领域,是一项有益的探索。
  Java因其自身特点,如垃圾回收和即时编译,并不适合实时应用。从另一个角度看,Java广大的用户群和成熟的开发环境,对于降低实时系统采用专用语言和操作系统环境所造成的开发门槛,有着相当的吸引力。
  Java实时规范(RTSJ,也称为JSR001)和Java实时系统(Java RTS)是在这个方向的一个尝试,并取得了不错的进展。
目前,Java RTS还有其局限,例如,不支持硬实时。
  本书介绍了实时系统的基本原理和概念、Java的垃圾回收、如何使用Java RTS的API 解决实际问题、实时垃圾回收、线程调度和分派、新的RTSJ内存模型,以及异步事件处理和异步控制转移。
  本书第三部分给出了一个用Java RTS实现的证券交易系统的例子,以及从从非实时Java到RTS的转变过程和它们之间的差别。同时,还介绍了开发用到的有关工具,主要包括基于Netbeans和Eclipse的集成开发环境、线程调度展示台和Java RTS Dtrace 探针。
  本书基于RTSJ 102和Java RTS 21。Java RTS 22已于2009年9月发布。
  希望能看到Java RTS的进一步发展和真正的实际应用。
  在翻译过程中,得到了机械工业出版社华章分社的朋友陈冀康的大力帮助,在此表示感谢。
  最后,我要感谢外甥女妞妞对我的支持和帮助。
  由于时间有限,书中难免存在译释不当之处,恳请读者批评指正。
译者
2009年岁末于西山

图书目录

译者序
前言
致谢
作者简介
第一部分实时计算概念
第1章实时系统概述
11实时系统质量
12可预见性和确定性
121确定延迟
122确定抖动
123硬实时与软实时
124等时实时
125实时与实快
126实时与吞吐量
127任务完成价值
13实时计算
131高速公路类比
132高速公路类比——添加优先车道
14实时调度
141调度约束
142调度算法
143实时操作系统
144RTPOSIX操作系统扩展
15参考资料
第2章实时与Java SE
21Java是实时语言吗
211无界定延迟和抖动的来源
212缺乏严格的线程优先级
22垃圾回收
221究竟什么是垃圾回收
222常见的垃圾回收算法
23Sun Java SE 6 HotSpot中的垃圾回收
231Java对象世代
232回收器
233内存分配
234安全点
235未来:垃圾优先( G1)
24实时垃圾回收算法
241基于工作的垃圾回收
242基于时间的垃圾回收
243汉瑞克森的垃圾回收
244Sun公司的Java实时系统中的RTGC
25Java的困境
第3章Java实时规范
31实时 Java 基础
32RTSJ内部机制
321调度

322内存管理
323资源共享
324异步事件处理(AEH)
325控制的异步转移
326物理内存访问
33可选的RTSJ工具
34实时Java 的未来
第4章Sun Java实时系统
41Java RTS程序设计的前奏
411操作系统支持
412Solaris与实时
413Linux与实时
42安装Java RTS
421Solaris 上的安装
422Linux上的安装
43确定性指南
431使用实时线程
432调整实时垃圾回收器
433关键预留内存
434处理器绑定
435编译Java RTS代码
436解释RTGC统计
437使用RTSJ的时钟 API
44命令行选项
441RTGC相关选项
442与内存相关的选项
443线程相关的选项
444异步相关选项
445编译器和解释器选项
446Java RTS优化选项
第二部分高级Java RTS
第5章线程、调度与新内存模型
51可调度对象
511实时调度器
512SchedulingParameters
513发布参数
52实时线程
521使用RealtimeThread
522使用NoHeapRealtimeThread
523实现周期线程
524错过最后期限处理程序
525实现非周期性线程
53内存模型
531内存访问规则
532作用域内存
533物理内存
第6章同步
61资源共享
611优先级倒置控制
612行动中的优先级继承
62非等待线程通信
621使用WaitFreeWriteQueue
622使用WaitFreeReadQueue
第7章实时时钟API
71Clock API
72Java RTS高精度时间操作
73叠加的股票数据提供的例子
第8章异步事件
81异步事件处理
82创建一个异步事件处理程序
821内部应用程序事件
822约束异步事件处理程序
823与事件触发计数一起工作
824处理POSIX事件
825指定内存区域
83基于时间的事件
831一次性定时器
832周期定时器
第9章异步控制转移和线程终止
91异步控制转移
911实现可中断代码
912实现Timed操作
92异步线程终止
第10章实时垃圾回收器内部机制
101RTGC操作理论
1011并发标记
1012并发清扫
1013并发清零
102RTGC内存分配
1021堆布局
1022线程局部分配缓冲器
1023对象分裂
1024数组分裂和缓存
103RTGC策略
1031全时RTGC策略
1032隔离的RTGC策略
1033基于时间的RTGC策略
1034孤立的RTGC策略
第三部分使用Java RTS
第11章证券交易系统
111股票市场
1111限价订单
1112止损订单
112交易系统实现
1121系统架构
1122交易引擎
113Java SE版本
1131MarketManager类
1132OrderManager类
114Java RTS 版本
115Java RTS 没有堆的版本
1151OrderManager类
1152MarketManager类
116应用程序配置
第12章Java RTS工具
121Java RTS开发
1211使用NetBeans插件进行远程调试
1212替代的开发环境
122线程调度展示台(TSV)
1221TSV日志文件格式
1222使用TSV日志文件
1223记录应用程序的事件
1224用TSV查看器工作
123Java RTS DTrace探针
1231用于Schedulable的DTrace探针
1232用于内存的DTrace探针
1233用于线程的DTrace探针
1234用于AsyncEventHandlers的DTrace探针
1235用于编译的DTrace探针
1236用于RTGC的DTrace探针
1237用于类加载的DTrace探针
1238用于VM活动的DTrace探针
1239特定应用程序的DTrace探针
参考文献

教学资源推荐
作者: 袁毅,陆建平
作者: 郭晓平 朱鸣华 编著
作者: 中国计算机学会 主编
作者: 雷震甲 编著
参考读物推荐
作者: (美)Andrew Stellman; Jennifer Greene 著