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

Java 与分布式系统
作者 : (德)Marko Boger
译者 : 曹学军
出版日期 : 2003-05-01
ISBN : 7-111-11811-1
定价 : 29.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 240
开本 : 16开
原书名 : Java in Distributed Systems: Concurrency, Distribution and Persistence
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书主要讨论Java在分布式应用开发中所承担的角色。内容涵盖了线程、套接字技术、远程方法调用(RMI)、CORBA、航行者技术(Voyager)、移动代理技术、JDBC技术、面向对象的数据库技术、Java元组空间技术以及 Jini技术。提供了一个统一解决并发、分布式以及持久化问题的解决方案。本书适合于在分布式应用系统中运用Java的开发人员,也适合于学习分布式系统或者分布式对象技术课程的学生,还可供致力于研究分布式Java开发艺术的研究者参考。
结构清晰的教程式介绍,主要讨论Java在分布式应用开发中所承担的角色。
涵盖的内容包括线程和套接字技术、远程方法调用(RMI)、CORBA、航行者技术(Voyager)、移动代理技术、JDBC技术、面向对象的数据库技术、Java元组空间技术以及Jini技术。
本书还介绍了在Java语言开发中的一些前沿技术,其中包括本书作者自己开发的Dejay语言 (分布式Java),该语言是一个开放源代码的项目,其目标是要提供一个统一解决并发、分布以及持久化问题的解决方案。

图书前言

“写一本书就是经历一场冒险。开始的时候,笔下的书就像是一个玩具,一种消遣。往后它会逐渐变成能够控制你的主妇,接下来它会变成你只能俯首听命的主人,最终它会成为你的绝对统治者。”
—温斯顿·丘吉尔写自他的回忆录

每天,软件开发的世界都在变化着。一方面,计算机辅助系统运用日益广泛,你可以从芯片卡、洗衣机或者面包烤箱中找到一个中央处理器。另一方面,计算机网络在飞速地增长,因特网的出现使得网络系统的规模更是达到了极至。所有这些都给开发分布式系统应用带来了重要的契机。
分布式系统在产业界和商业界已经存在了相当长的一段时间。不过,由于当时的这些系统都是专为一些极为特殊的应用而开发的,因此创建这样的一套分布式系统需要花费相当高昂的成本。时至今日,分布式系统已经演变成为一个无所不在的基础架构,而且还在不断地渗入到越来越多的应用领域。过去恐怕只有像银行或者航空这样的大型产业才有财力支持这类分布式系统的开发,而现在,我们的很多商业团体甚至个人就完全有能力开发各种分布式系统了。
因特网技术已被证明是一种非常可靠的技术,它现在越来越受到人们的欢迎,用途也越来越广泛,我们只需要通过WWW就可以很容易使用它。暂且不说通过内部网、外部网和电子商务系统对全球经济带来的显著贡献,今天的因特网本身就提供了一种技术和基础架构,极大地促进着分布式系统的开发。
在这样的背景环境下,Java编程语言就显得非常重要了。一方面,通过它的跨平台移植能力和“下载”使用的特性,Java提供了一种开发分布式应用的可能性,它意味着Java代码可以通过因特网从一台服务器下载到浏览器中加载并在客户机的浏览器中执行;另一方面,用Java还可开发出分布式应用系统,该系统不仅在单机,而且还可分布在多台机器上运行。
这两方面能力的结合,给Java带来了所有其他流行编程语言都无法提供的机会。对于以Applet形式下载Java代码来说,现在已经有很多书做了详尽的介绍。但直到现在,人们还是从各个孤立的角度来看待如何使用Java创建分布式应用系统的技术。而本书将对使用Java开发分布式应用程序的各种现行技术做一个全面的介绍。
本书的结构
在本书的引言部分,我们将对Java和分布式系统的重要性和它们之间的关系做些讨论和解释。本书的内容将按下列方式分成两大部分。
第一部分  分布式系统中的Java技术  我们将对今天分布式系统中能够用到的技术做全面的概要介绍。重点主要放在三个方面:并发处理、分布式和持久化技术。这三个方面在每个实际运行的分布式系统中都充当着主要的角色。并发处理的问题是通过Java线程技术来解决的。分布式通信技术既包括了套接字技术,也涵盖了RMI和CORBA,以及移动代理技术在内的各个方面的内容。我们结合关系数据库和面向对象的数据库系统,以及集成了持久化技术的Java语言环境来探讨持久化存储技术。所有的三个方面的内容都会借助元组空间的概念统一起来说明,这里提到的元组空间是并行系统中的一种分布式存储机制。最后,我们会引入Jini,它是一种可以很方便地检索分布式系统中服务的基础架构技术。
第二部分  分布式Java  我们将会分析开发合适的 Java语言是如何能够简化分布式系统编程的。开始,分析其他的分布式编程语言及其局限性,以及由此演化而来的分布式Java语言的能力。随后,讨论一个可以大大简化分布式系统编程的概念。最后,引入建立在上述概念基础上的一个叫Dejay的分布式编程语言,它是一种分布式的Java语言。结合几个例子来对它加以说明。
我们都会联系实际来阐述每个单独的技术,当然我们也会提供一些简单的例子。为了更好地比较相关的技术,同样一个问题我们会在不同的章节采用不同的技术给出解决方案。而这些方案中相同的代码部分列到附录中供大家统一参考。
目标读者
本书是从作者根据在德国汉堡大学举办的以分布式、因特网和 Java为主题的多个研讨班的课程内容,以及作者本人在分布式系统的编程语言领域的研究工作整理而成。适合如下读者阅读:
已经具有Java背景知识并且对分布式系统编程感兴趣的学生。本书很适合作为演讲会、实际课程和研讨班的辅助材料使用。
希望在分布式系统中涉猎不同编程技术的编程人员。本书展示了分布式系统编程技术的发展现状。同时为多种不同技术的相互比较提供了基础。
本书还适合有编程背景的决策者阅读,他们能够通过本书了解各种不同的分布式系统设计方案。
希望了解技术进展并渴望学习全新的、有创意的技术的研究人员。
对于本书介绍到的所有技术,我们会列出最重要的概念并借助简单的例子加以说明。其中我们对所有的编程接口都不会做详尽的阐述。因为本书并不想成为参考手册,但本书提供的是任何参考手册所不能提供的:它对一个专门领域做了广泛和全面的介绍,每种技术的详尽程度都控制在合理的范围内。
本书约定
这是一本关于Java的书,因此,肯定会有大量的Java代码。大多数的例子会尽可能的短小,只重点强调其核心的地方,我们并不希望让这些内容淹没在一大堆程序代码中。正因为如此,大多数的例子程序都没有什么图形用户界面,多采用一种文本控制台程序的方式获得输入和输出。
代码中引用的方法不管它有没有参数都采用一个空括号表示(例如,someMethod()),如果一些文本中指的是代码片断中的特定区域或者说原来被引用的源代码又增加了几行新的内容,这些都会使用粗体字表示。
命令行输入,例如调用javac Java编译器的文字,前面会带上一个大于号如下所示:
系统的屏幕输出,通常情况下也就是屏幕输出结果,前面带一个竖线来,如下所示:
图1  例子中使用的计算机和网络结构
由于本书关注的是分布式系统,很多例子中执行一个应用程序都需要多台计算机。因此,我们要用到一个异构的网络,它由两个通过因特网互联的子网组成。每个子网中又包含了不同型号和操作系统的计算机。在图1所示的网络中,每台计算机都有一个IP地址(注,这些IP地址都不是真实的地址)和名字。
这些名字从符号上代表着可以用做测试计算机的不同的硬件平台和与之对应的操作系统。这里用到的名字有sun、lin、mac、nt和win,再加上 gate1和 gate2来充当连到因特网的网关。需要的话,这些名字和IP地址将用在正文中、样例程序中或者各种输入输出的内容中来区分不同的机器。下面的例子中显示出从机器 sun发了一个消息给机器lin:
主页和源代码
本书有一个主页,可以通过链接  http://www.dpunkt.de/produkte/dejay访问。在那你可以找到本书的一些章节的节录、勘误信息和本书中所有例子的源代码。
Dejay(本书第二部分介绍的分布式Java)有着它自己的域名。其中有关的信息、附属文档和源代码都可以通过访问http://www.dejay.org免费获得。
致谢
本书全部使用免费软件写成。使用的操作系统是带有新近开发的KDE图形用户界面的Linux系统。文本处理程序使用的是kLyX, 这是一个充分发掘LATEX的功能并能将所有的复杂性都隐藏在一个简单易用的界面之下的非常有用的工具。所有的图片都使用一个叫xfig的软件创建。程序代码使用Sun公司的JDK 1.1.7,并与JDK 1.2完全兼容。对一些章节的内容来说(Jini和元组空间的部分内容),JDK1.2是必需的。我特别感谢所有参与开发这些软件并将这些知识和技能无私地奉献给公众的人们。
本书的大多数内容均源自我在汉堡大学的分布式系统领域的教学活动。这里特别要提到的是“因特网”课程、“分布式系统的对象技术”研讨班和“开放的分布式软件应用的实现”研讨班。很多参与的学生教会我如何教学,给我的课程提出批评性和建设性的意见。他们的奉献给予了我很多的帮助。他们用新颖的想法激发着我,帮我找出不足,他们阅读我的图书草稿,帮我剔除错误,对我的纰漏提出改正建议,对此我衷心地感谢他们。我还要特别感谢通过文章和论文来支持我的工作的所有人。我要向开发Dejay的主创人员:Jan Raap、Thorsten Sturm、Tobias Baier、Nils Poppendiek和Per Fragmann表示感谢。我还要特别提到Marco Kaiser,他在很多方面给了我强有力和可信赖的支持。手稿的审阅方面我需要感谢Dr Claudia Linnhoff-Popien教授、Dr Christian Zeidler、Stefan Middendorf和Uta Arnold。
我同时要感谢在分布式系统工作组中工作的同事们。他们营造了一个很好的氛围,举行了很多的对话和讨论,也给予了我很多的支持和帮助。我要深深感谢Dr Winfried Lamersdorf教授,他的远见卓识,平易近人和无私帮助最终促成了本书的面世。
最后,我要感谢dpunkt.verlag工作小组,特别是 Christa Preisendanz, 感谢他们在本书创作过程中的良好合作。


Marko Boger
1999年8月于汉堡

作者简介

(德)Marko Boger:暂无简介

译者简介

曹学军:暂无简介

图书目录

前言
第1章  引言 1
1.1  Java的重要性 1
1.2  分布式系统的重要性 5
1.3 并发、分布式和持久化 6
1.4  参考资料 9
第一部分  分布式系统中的Java技术
第2章  Java中的并发处理技术 11
2.1  Java线程 13
2.2  同步机制 19
2.2.1  监控器 19
2.2.2  信号量 20
2.2.3  读写锁 22
2.3  并发和分布式处理 24
2.3.1  服务器和处理者 24
2.3.2  异步调用 25
2.4  参考资料 27
第3章  Java 套接字技术 29
3.1  TCP/IP 29
3.1.1  协议层 29
3.1.2  端口 31
3.2  套接字 31
3.3  流 32
3.4  过滤器 34
3.5  使用套接字技术的聊天系统 36
3.6  多播技术 40
3.7  iBus:可靠的多播系统 43
3.7.1  协议栈 45
3.7.2  使用iBus技术的聊天系统 47
3.8  参考资料 49
第4章  RMI 50
4.1  RMI的体系结构 51
4.2  一个简单的例子 52
4.2.1  服务器端 52
4.2.2  客户端 54
4.3  使用RMI技术的聊天系统 55
4.4  参考资料 59
第5章  CORBA 60
5.1  OMG的组织结构 61
5.2  标准化过程 61
5.3  OMA—无所不包的体系架构 62
5.4  CORBA体系架构 63
5.5  IDL 65
5.6  IDL编译器 68
5.7  IDL-Java映射 71
5.8  一个简单的例子 74
5.9  使用CORBA实现的聊天系统 75
5.10  启动服务器 78
5.11 启动客户端 79
5.12  参考资料 80
第6章  航行者 81
6.1  航行者的运行期环境 82
6.2  远程对象 84
6.3  对象的迁移 87
6.4  远程调用 92
6.5  群组通信 94
6.6  参考资料 97
第7章  移动代理 99
7.1  Aglets 102
7.2  航行者系统中的移动代理 108
7.3  参考资料 111
第8章  JDBC 112
8.1  JDBC的结构 113
8.2  建立到数据库的连接 115
8.3  查询和结果 116
8.4  例子:一个公告板 117
8.5  参考资料 120
第9章  面向对象的数据库 121
9.1  ObjectStore 122
9.2  访问持久对象 122
9.3  后处理器 125
9.4  使用 ObjectStore 的公告板系统 126
9.5  对象的重新激活 131
9.6  参考资料 135
第10章  一门持久化编程语言 136
10.1  PJama 136
10.2  持久存储 137
10.3  固化 139
10.4  垃圾收集 140
10.5  一个简单的例子:持久化计数器 140
10.6  参考资料 142
第11章  Java中的元组空间 143
11.1  JavaSpaces 144
11.2  TSpaces 147
11.3  参考资料 150
第12章  Jini 151
12.1  需求 152
12.2  服务 152
12.3  发现和加入 153
12.4  查找 156
12.5  租用 158
12.6  Jini的启动 159
12.7  参考资料 160
第二部分  分布式Java
第13章  分布式编程语言和并发处理技术 161
13.1  分布式编程语言: Emerald 162
13.2  统一对象的理念 164
13.2.1  本地编程和分布式编程的差异 164
13.2.2  等待时间 165
13.2.3  内存访问 166
13.2.4  局部故障 166
13.2.5  并发 168
13.2.6  保留差异 168
13.3  Java是一门分布式编程语言吗 169
13.4  并发处理的一个概念:Eiffel SCOOP 171
13.4.1  通过处理器的并发 172
13.4.2  并发和同步 173
13.4.3  分布 174
13.5  作为分布式 Java 必需具备的要求 174
13.6  参考资料 175
第14章  虚处理器 177
14.1  虚处理器的概念 179
14.2  迁移 181
14.3  分布和并发 182
14.4  持久化 183
14.5  参考资料 185
第15章  Dejay:一门分布式Java语言 186
15.1  一个简单的例子 186
15.2  虚处理器 188
15.3  远程对象 190
15.4  迁移 192
15.5  名字服务 194
15.6  持久化 194
15.7  异常处理 195
15.8  dejayc编译器 196
15.9  程序启动 196
15.10  各种限制 197
15.11  参考资料 198
第16章  一些例子 199
16.1  分布 199
16.2  并发 206
16.3  持久化 214
16.4  参考资料 217
附录A  聊天系统的用户界面 218
附录B  公告板界面 221
参考文献 226

教学资源推荐
参考读物推荐
作者: [西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno Garcia) 奥斯卡·德尼茨·苏亚雷斯(Oscar Deniz Suarez) 何塞·路易斯·埃斯皮诺萨·阿兰达(Jose Luis Espinosa Aranda) 等著
作者: 谢佳标 著
作者: 任侃 曹越 吴杰 等著