Jini技术介绍

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 一:Jini白皮书什么是Jini?   Jini是Sun公司的研究与开发项目,它能极大扩展Java技术的能力。Jini技术可使范围广泛的多种硬件和软件---即可与网络相连的任何实体---能够自主联网。   Jini可以使人们极其简单地使用网络设备和网络服务,就象今天我们使用电话一样---通过网络拨号即插即用。Jini的目标是最大限度地简化与网络的交互性。   Jini利用了Java技术的优势。Jini包含了少量类库格式的Java代码和某些惯例,可在网络上创建一个Java虚拟机的"王国",就象我们人类创造一个社区一样。在这个王国里的人、设备、数据和应用程序等网络公民均被动态地连接起来,从而能够共享信息和执行任务。   主要趋势---网络的普及这个世界正在网络化。例如,在今天,一个企业要想取得成功就必须建立网络。商业网络正在不断扩大,而且已经能够与供应商和客户实现直接交互。与无线网络的交互也几乎成为家常便饭。企业和消费者都要求能与网络进行更广泛的交流。出差在外的人无不希望在到达饭店后就能把自己的计算机插入网络接口,不但能与自己单位的工作环境进行交互工作,而且还能与饭店的本地服务,如打印机或传真机等进行交互工作。父母可能希望只需使用移动电话或笔记本电脑就能与家里的摄像机相连,通过它来察看家里的情况。人们无不希望随时随地能够连接和立即使用本地的定制服务。在不远的将来,我们将看到网络渗透到很多其它环境。例如,将会出现把电视机和立体声设备等音频/视频设备与家庭办公室的电脑和外设连接起来的网络,并控制安全监视器和温控恒温器等网络设备。电缆和ASDL等高带宽媒介将为家庭提供全新的服务。服务供应商不断为驾驶员提供越来越多的服务,网络也必将随之进入汽车领域。除导航系统外,游览景点和当地餐馆名单等本地服务也将出现在驾驶员的屏幕上。只要汽车与远程诊断设备相连,它就能自动完成对汽车的维护,并在汽车出现问题时通知驾驶员。   商业机遇---网络服务Jini所能带来的商业机遇是新型的网络服务。   例如,产品制造商将在基于网络的产品上提供新的服务。例如,磁盘可被看作与网络相连的存储服务,能向磁带和其它新型服务提供自动存储备份。联网的摄像机可能将提供诸如安全监视等新型成像服务。这些新的服务使制造商成为新型的网络服务供应商。   Jini还能帮助传统的服务供应商提供新型服务。   例如,某媒体服务供应商可能希望向某消费者的家庭打印机提供报纸打印服务。无线服务供应商可能希望通过蜂窝电话提供相似的服务。   Jini还可简化对现有服务的管理。   在隔天交货的情况里,Jini简化了分布在各处的工人与网络连通的方式。在个人银行里,基于Jini的计算机和外设可简化分行的系统管理。对于无线服务供应商,Jini可使蜂窝电话具备类似于电话的网络功能:屏幕大小、处理能力、使所提供的服务根据每一部电话的特点而专门设计。   问题是,在今天的环境中,联网还是太复杂了。例如,无论是把PC连接到网络上,还是使用联网的打印机都非常复杂。只有经验丰富的系统管理员才有能力处理装载驱动程序、设置配置文件等复杂的工作。显然,我们不可能指望一般消费者也能管理今天这样复杂的网络。   今天的网络还很脆弱和很不灵活。对网络稍加改动就可能造成不可挽救的大混乱。向网络中添加诸如磁盘存储等功能的过程也很复杂。例如,要想添加一个磁盘驱动器,我们就必须打开机箱,处理设置跳线器,并解决一系列复杂的设置问题。即使专家也会头疼。   实际上,从消费者的角度看,他们所需要的只不过是把硬件和软件插入联网的环境,并立即就能使用可用的服务:就象我们今天插接电话一样。在今天,当消费者从商店购买一部电话后,他不必对电话进行配置。消费者只需给电话服务供应商打一个电话,服务就会送上门。最后,消费者只需把电话插好,就能使用电话服务了。自主的联网。   Jini的价值Jini的作用就是能简化与网络的交互性。   从消费者的角度看,消费者把可插接的设备和软件插入网络,就像今天插接一部电话一样简单。   从传统服务供应商的角度看,Jini简化了Services Delivery (服务提供)的管理。设备不但能向网络推出增值服务,而且还能提供设备的属性和功能。现在,服务供应商可以针对每台设备设计服务。当然,Jini还将有可能打开一扇通向新的网络化服务的大门。   从产品制造商的角度看,Jini打开了全新的市场。因为Jini简化了设备向网络提供增值服务的能力。所以,产品就不仅仅作为商品而投入竞争,而是作为增值服务的产品参与竞争。   从Java程序员的角度看,Jini简化了编写分布式应用程序的工作,因而,任何Java程序员都能利用基于Jini的新设备编写应用程序和服务。因此,企业不再需要聘用有限的专家资源编写分布式应用程序,任何Java程序员都能为基于Jini的网络开发服务。   Jini的起源Bill Joy在1994年之前向Sun公司实验室提交了一份包括以下三个主要概念的建议书:   可在所有平台上运行的语言运行该语言的虚拟机,和允许分布式虚拟机像单一系统那样工作的网络化系统到1995年,这种语言和虚拟机相继面市,即Java编程语言和Java虚拟机。但该系统的概念则仍保留在Sun公司的研究与开发实验室,作进一步的研究和开发。这个系统的概念就是Jini。   Jini战略部署与合作伙伴Sun公司部署了广泛的战略,力求将Jini推向市场。我们可以这样说,Jini与任何向网络化环境提供产品和/或服务的企业都密切相关。这包括传统的设备制造商、服务供应商和软件开发商。 Jini将如何进行授权?   为推动Jini的进一步创新,使其尽快被市场所接受,Jini源代码将象Netscape公司的Mozilla模型一样向所有开发商公开。为确保兼容性和质量,正在考虑对商业产品进行标记。围绕授权方式的很多具体细节目前仍在最后确定过程之中。拟议中的授权草案将于今年8月公布。   Jini技术概述   Jini技术可划分为两个范畴:体系结构和分布式编程。此外,还将提供在Jini上运行的网络服务。   基础结构   Jini基础结构解决设备和软件如何与网络连接并进行注册等基本问题。 基础结构的第一种要素称作Discovery and Join (发现与联合)。Discovery and Join解决设备和应用程序在对网络一无所知的情况下如何向网络进行首次注册这样的难题。   基础结构的第二个要素是Lookup (搜索)。Lookup可被看作网络中所有服务的公告板。   Network Services ---网络服务Other Services ---其它服务Leasing ---租用Transactions ---交易Distributed Event---分布式事件Other OS ---其它操作系统Other CPU ---其它CPU DISCOVERY AND JOIN 设备或应用程序插入网络后需要完成的第一个任务就是发现该网络,并使网络发现该设备或应用程序。我们之所以使用Discovery and Join这样的说法,是因为设备或应用程序事前不可能对网络有任何了解。   Discovery的工作原理如下:   当基于Jini的设备插入网络后,它就通过一个众所周知的端口向网络发送一个512字节的多路广播Discovery包。在其它信息中,该包包含对自己的引用。   Jini Lookup在众所周知的端口上进行监听。当接收到Discovery包后,Lookup就利用该设备的接口将Lookup的接口传递回插接的设备或应用程序。   现在,该设备或应用程序已经发现了该网络,并准备将其所有特性上载到Jini Lookup。上载特性是Discovery and Join中Join这方面的特性。   现在该设备或应用程序使用在Discovery阶段所接收到的Lookup接口与网络相连。上载到Lookup的特性包括该设备或应用程序所提供的所有增值服务(如驱动程序、帮助向导、属性等)。   LookupLookup是网络上所有服务的网络公告板。Lookup不但存储着指向网络上服务的指针,而且还存储着这些服务的代码和/或代码指针。   例如,当打印机向Lookup注册时,打印机将打印机驱动程序或驱动程序接口上载到Lookup。当客户机需要使用打印机时,该驱动程序和驱动程序接口就会从Lookup下载到客户机。这样,就不必事先把驱动程序装载到客户机上。   打印机还可能把其它增值服务装载入Lookup。例如,打印机可能存储关于自己的属性(如它是否支持postscript,或它是否为彩色打印机)。打印机还可能存储可在客户机上运行的帮助向导。   如果网络上没有Lookup,则网络就会使用一个Peer Lookup (对等Lookup )程序。当需要服务的客户机在网络上找不到Lookup时,Peer Lookup就开始工作。在这种情况下,客户机可发送与Lookup所用的相同的Discovery and Join包,并要求任何服务供应商进行注册。随后,服务供应商就会在客户机上注册,尽管那不是Lookup。   分布式编程Jini分布式编程为Java增添了创建分布式系统所必需的其它功能。尤其是Jini分布式编程可提供租用、分布式交易和分布式事件。   租用租用与租用一套公寓很类似。我们在租用一套公寓时,一般会商定使用该公寓的时间。类似地,在Jini中,对象彼此之间商定租期。例如,当某设备使用Discovery and Join协议发现网络时,它就注册一段租用时间。在租约到期之前,该设备必须重新商定租期。这样,如果租约到期或设备拔下后,该设备在Lookup中的记录就会被自动删除。这就是分布式垃圾收集的工作原理。   分布式事件在单一的计算机中,事件肯定能被接收方接收到,序列也肯定能按照顺序进行。   但在分布式环境中,分布的事件可能不是按照顺序被接收,或者,某个事件还可能丢失。   为便于在Java环境中处理分布的事件,Jini为分布的事件提供了一个简单的Java API。例如,当一个分布的事件发生时,该事件都带有一个事件号和序列号。利用这种信息,接收方就能检查事件是否丢失(序列号丢失)或事件是否按照顺序接收(序列号顺序不对)到。   分布式交易在分布式Java环境中,有时需要一种很简便的方法,来确保在整个交易完成之前,在该交易中发生的所有事件都被真正提交了(两阶段提交)。   为便于进行此类分布式计算,Jini提供了一种简单的Java API。该API可使对象起动一个能管理交易的交易管理器。每个参与交易的对象都向交易管理器注册。   当交易发生时,如果某个参与的对象说,交易中的某个事件没有发生,则此信息就被送回交易管理器。随后,交易管理器就告诉所有参与的对象回滚(rool back)到前一个已知状态。类似地,如果所有对象都完成了其交易的过程,则整个交易就向前进行。   Jini上的网络服务在Jini基础结构和分布式编程之上,可提供便于分布式计算的网络服务。JavaSpace就是这样的一种网络服务。   欲知有关JavaSpace的详细情况,请访问http://java.sun.com/products/javaspace我们期待着将来在Jini上建立更多其它的网络服务。   欲知有关Jini技术的详细情况,请访问http://java.sun.com/products/jini  
目 录 译者的话 序一 序二 前言 第一部分 基 础 第1章 一种新的计算模式 1 1.1 Jini的历史 1 1.1.1 Jini的设想 2 1.1.2 更广泛的应用 3 1.1.3 Jini的公开 4 1.1.4 许可证 4 1.1.5 共享源码许可 4 1.2 获取和安装Jini 5 1.2.1 安装Java 2 6 1.2.2 安装Jini 7 1.2.3 设置环境 9 1.2.4 启动Jini运行时的服务 10 1.2.5 通过GUI启动所需服务 11 1.2.6 用命令行方式启动所需服务 15 1.2.7 运行例子程序 19 1.3 参考读物和资源 20 第2章 分布式系统 21 2.1 网络中的焦点 21 2.1.1 传统网络系统 21 2.1.2 网络并不透明 22 2.2 新的分布式计算模型 25 2.2.1 需要强类型 26 2.2.2 远程多态性的例子 27 2.2.3 远程特性是接口的一部分而与实现 无关 28 2.3 参考读物 29 第3章 Jini模型 31 3.1 Jini设计的中心 31 3.1.1 简明性 31 3.1.2 可靠性 31 3.1.3 可伸缩性 32 3.2 设备不可知论 33 3.3 Jini不是什么 33 3.3.1 Jini不是名字服务器 33 3.3.2 Jini不是JavaBeans 34 3.3.3 Jini不是企业JavaBeans 34 3.3.4 Jini不是RMI 34 3.3.5 Jini不是分布式操作系统 34 3.4 Jini的五个基本概念 34 3.4.1 发现 35 3.4.2 查找 37 3.4.3 租借 41 3.4.4 远程事件 45 3.4.5 事务 51 3.5 后面的内容 56 第4章 部署方案 57 4.1 成为Jini服务 57 4.2 如何为设备和服务使用Jini 58 4.3 在通用计算机上运行Jini 58 4.4 在支持Java的设备上运行Jini 60 4.4.1 JiniJava子集 60 4.4.2 版本问题 61 4.5 Jini使用设备代理 61 4.6 基本Jini服务的需求 63 4.7 适于使用Jini的情况 63 4.8 不适于使用Jini的情况 64 4.9 参考读物 64 4.10 后面的内容 64 第二部分 Jini 的开发 第5章 Jini起步 65 5.1 运行Jini服务 65 5.2 按部署情况进行开发 66 5.2.1 运行多个HTTP服务器 67 5.2.2 警惕代码基问题 67 5.2.3 设置安全管理器 68 5.2.4 注意安全策略 68 5.2.5 注意CLASSPATH 68 5.2.6 考虑把可下载代码捆绑为 一个JAR文件 68 5.2.7 小结 69 5.3 第一个Jini程序:Hello, World 69 5.3.1 实现服务代理 72 5.3.2 “包装”应用程序 73 5.3.3 使用发现和查找 75 5.3.4 其他细节 76 5.3.5 使用服务模板来寻找服务 78 5.3.6 查找一个服务 79 5.3.7 编译并运行例子程序 80 5.4 扩展Hello, World程序的事件能力 84 5.4.1 编写远程事件接收器 86 5.4.2 通过Notify ( )请求事件 87 5.4.3 编译并运行程序 88 5.5 带有租借的Hello,World例子 91 5.5.1 一个简单的方法 92 5.5.2 编译和运行程序 97 5.6 使用可激活的后端进程 99 5.7 后面的内容 109 第6章 深入理解:发现 110 6.1 发现是什么 110 6.1.1 用组划分群体的名称空间 111 6.1.2 发现的分类 111 6.1.3 发现机制的要求 112 6.2 发现概述 112 6.2.1 IP组播基础 112 6.2.2 服务发起的发现 113 6.2.3 查找服务发起的发现 113 6.2.4 “直接”发现 114 6.3 在应用程序中使用发现 115 6.3.1 DiscoveryListener接口 115 6.3.2 DiscoveryEvent封装了发现信息 115 6.3.3 使用LookupDiscovery控制组播 发现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值