站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题Jini技术综述

Jini技术综述

摘要: 随着嵌入式系统在各种电子设备中的广泛使用,计算机技术的发展将进入一个无所不在的计算(Pervasive Computing)阶段......
<iframe align=right frameBorder=0 height=300 marginHeight=0 marginWidth=0 scrolling=no src="http://www.chinabyte.com/tag/cont_flash_software.html" width=360></iframe>  引言

  随着嵌入式系统在各种电子设备中的广泛使用,计算机技术的发展将进入一个无所不在的计算(Pervasive Computing)阶段。随之而来的各种电子设备联网是一种必然的趋势,与人类生活息息相关的各种家电设备能够联成网络并接入互联网,人类可以在任何时间、任何地点统一控制各种家电,让家电协同工作,那将极大地改变和影响我们的生活。比如,电视机接入互联网,人们可以通过电视机来浏览网页、获取信息;又比如,你可以在下班前一小时,通过互联网控制家里的电饭煲和微波炉开始工作,当你到家时,晚饭已做好;再比如,你在办公室加班,而电视台正在播放你所喜爱的电视节目,你可以通过互联网控制家里的录像机把节目录下来……

  所有这一切正在逐步变成现实,Jini技术的出现为电子设备的联网提供了一条崭新的道路。

  动态的分布式系统

  Jini系统是以Java技术为中心的分布式系统,它可以使各种数字设备无需配置、安装或人工干预地在一个临时的设备集合(称之为联邦)中共同工作。联邦中的任何设备无论大小都可以自行管理,组成一个服务网络,联邦中的每一成员都给联邦中的其它成员提供资源和服务,同时又从其它成员中获取自己所需的资源和服务。Jini结构提供一套机制使得电子设备和应用程序能够随时加入或退出联邦,形成一个动态的分布式系统。

图1

  Jini系统提供了在分布式系统中进行服务的建立、查找、通讯和使用机制。Jini结构的设计充分利用了Java程序代码可以在机器之间移动的能力,各个服务之间通过提供服务协议(service protocol)进行通讯(服务协议是用Java语言写的一套接口)。Jini系统必须运行在Java虚拟机上,如图1所示。

  每一个Jini设备都应该有自己的存储器和计算功能,没有存储器和计算功能的设备也能够联入Jini系统,但是必须由其它Jini设备作为代理(proxy)来控制,该代理可以是软件也可以是硬件。

  基础结构即插即用

  Jini系统的任意服务可以随时加入和退出联邦,而且加入联邦时不需要进行安装和配置,达到了即插即用的效果。无论是在编程接口级还是在用户接口级,服务都构成了Jini系统交互的基础。

  Jini系统的核心是三条协议:lookup ,discovery,join。它们构成了Jini技术的基础结构(infrastructure)。

  查找服务(Lookup service) 是Jini系统的中心机制,任何服务都是由查找服务发现并确定,系统用户与系统的联系也是通过查找服务实现的。查找服务相当于网络中所有服务的公告牌,它把指明某服务所提供性能的接口与实现该服务的对象集对应起来。查找服务中的对象也可以包含其它查找服务,从而构成层次式的查找服务。查找服务用于用户在网络中查找和调用服务,而服务是由它的接口类型(用Java编程语言编写)或其它属性描述的。

  某设备或应用程序插入网络时,它所提供的服务首先发现网络并被网络所接纳,这一过程需要通过发现协议(discovery)和加入协议(join):该服务首先通过发现服务在网络中找到一合适的查找服务,然后通过join协议加入查找服务。

  如图2所示,某一服务提供者需要加入Jini系统中(服务提供者提供的服务可以是硬件也可以是软件),它首先要寻找网络中的查找服务,于是它在局域网中广播,请求加入到查找服务中,附近的查找服务将识别该服务。这个过程称之为发现(discovery)。需要注意的是在服务提供者中包含有用于通讯的服务对象(service object)和描述该服务特点的服务属性(service attributes)。服务对象中包含Java接口,其中包括用户和应用程序所要调用来执行服务的方法,以及其它描述信息等。

图2 发现过程

  于是,服务提供者与查找服务进行通讯,服务提供者把自己的服务对象和服务属性注册到查找服务中,也就是把服务对象和服务属性发送到查找服务中。这个过程采用的是加入协议(Join),如图3所示。

图3 加入过程

  如图4所示,当Jini系统中的客户需要服务时,它根据服务的类型或属性向查找服务查询合适的服务,然后查找服务把查询的结果返回给客户,当客户决定使用某一服务时,查找服务将把所需服务的服务对象的拷贝发送给客户。

图4 查找过程

  如图5所示,客户通过该服务对象与服务提供者进行直接联系,调用服务。服务对象与服务提供者之间的私有协议,对用户隐藏了实现的细节。

图5 服务过程

  在没有查找服务的情况下,客户可以使用一种替代的技术,称为点查找(Peer lookup)。这种情况下,客户可以发出与查找服务所用的同样的鉴别包,请求服务提供者进行注册。服务提供者将把客户当作查找服务来进行注册。然后客户可以从所有的注册请求中选择它所需要的服务,而抛弃不需要的服务。这种情况实质上是客户临时充当查找服务。

  分布式的编程模式

  Jini系统的编程模式也是分布式的,包括租用(leasing)、分布式的事务处理(distributed transactions)和分布式的事件处理(distributed events)三种重要机制。

  租用机制使客户对服务的访问是基于租约的,租约保证了一段时间内的授权访问。租约必须在服务的使用者和服务提供者之间进行协商,这也是服务协议的一部分。租约在到期之前不续约的话,资源将被释放。租约可以是唯一的,也可以不是唯一的,非唯一租约允许多用户共享资源。

  一系列的操作都包装在一个事务中,而不管这些操作是在一个单一服务内还是跨越多个服务。Jini的事务接口提供了一服务协议用于协调两阶段提交(two-pahse commit)。事务由使用这些接口的服务实现。

  Jini结构支持分布式事件,一个对象可以允许其它对象注册对此对象感兴趣的事件,并且在该事件发生时得到通知。这使得基于事件的分布式程序能以有多种可靠性和扩展性保证的方式编写。

  基础结构是编程模式的基础,同时也利用了编程模式的各种机制。某一服务若想加入到查找服务中,它必须租用查找服务中的入口,因而查找服务就能够准确反映当前所有的服务。如果有服务加入或离开查找服务,相应的事件就会发生,而所有对此类事件感兴趣并注册过的对象将得到通知。编程模式建立在由基础结构所支持的代码移动性能之上。

  基础结构以及使用该基础结构的服务都是存在于Jini系统实际环境中的计算实体。服务使用了一组接口,这些接口定义了可以在服务和基础结构之间通讯的通讯协议。这些接口结合在一起就构成了Java语言编程模型的分布式扩展,也就是Jini编程模型。Jini与Java的关系如图6所示。

图6 Jini是Java在分布式环境中的扩展

  Jini系统中服务之间的通讯主要是通过远程方法调用(RMI)来实现。RMI是传统的远程过程调用机制在Java语言中的扩展,RMI既可以把数据也可以把代码封装成对象在网络上进行移动,大部分Jini系统的简单性就是这样实现的。

  Jini系统安全模型的设计是以两个概念为基础的:负责人和访问控制列表。被访问的Jini服务往往代表着某些实体负责人——通常能追溯到系统中的特殊用户。某一服务可以请求访问其他服务,由与实现该服务对象相连的访问控制列表决定。

  Jini系统的关系如图7所示。

图7 Jini结构层次

  基础机构、服务和编程模型的结合,其共同工作的设计以及相互构造的特点,使得整个系统简单化、统一化、易于理解。

  广阔的应用前景

  Jini技术的出现为数字化电子设备和现有计算机网络之间的连接构筑了一条通道,各种电子设备的联网将产生许多服务,生成新的经济增长点,推动计算机产业和信息家电产业的发展。目前,美国Sun公司已和日本的索尼、夏普、东芝、日立,荷兰的飞利浦等八家公司,联合研制开发基于Jini技术的家电产品。而对于国内的家电厂商和计算机厂商来说,需要联合起来,进行家电的数字化改造和家电联网关键技术的研究开发,争取在后PC时代的竞争中处于有利的地位,Jini技术的出现提供了一条非常重要但并不是唯一的道路。




↑返回目录
前一篇: 过桥问题编程解决
后一篇: 分布式编程模式中的租约、事务和分布式事件机制