一、前言
长久以来许多工程师们,都一直期盼著一个超大型的计算系统,这系统是由网路上许多机器,从超大型主机乃至嵌入在某些设备上的微小晶片,彼此相互合作而成。所有的工作,都可以在任何时间被分散到网路上的任何地方、任何种类的机器上去处理。这样的系统有很好的弹性,并且可以藉由不断地更新设备,来解决更多问题。
然而,我们要一致的语言,以及更强的通讯协定( superPRotocols)等,让网路上众多繁杂的成员,能彼此顺利地沟通。但是就目前的情况,要达到这样的目的很难,因此我们可以考虑把一种非凡的程式码(genetic code)嵌入到许多软硬体之服务中,使得网路上的成员可以轻易的相互分享彼此资源,这就是 Jini 所要达成的目标。
Jini 是由 SUN 公司 R&D 的Bill Joy 所提出的一项技术。我们可以藉著使用Jini,创造出一个富有弹性、轻易治理、且可随时随地使用各种服务的网路计算环境。为了让使用者知道网路上有哪些服务可被使用,我们必须建立一个联盟( federation ),让网路上的服务主动加入。当有某个服务加入联盟时,也等於同时向整个网路告知:「我可以被使用,有谁要我的服务?」。使用者透过联盟,可以得知有哪些服务可以使用。然而,我们要如何才能很简单、很轻易地使用这些服务关於这个问题,也就是 Jini 的工作重点之一。
让我们来看看Jini 是怎堋做的。网路上的服务要能够成为联盟的一份子,不管是硬体服务也好、软体服务也好,都必须嵌入Jini 的程式码。此外,网路上还必须提供 JVM的环境,才能执行Jini程式以获得这些服务。
Jini的程式码是利用 SUN 公司所提供的 Jini package 撰写而成。Jini package使用的语言是java,并且包含了许多处理网路上资源的相关功能。例如:如何帮助网路服务寻找(discovery)、以及加入(join)联盟;或者帮助网路服务处理分散式的承租(leasing)、交易( transactions)等的问题。而这些网路服务彼此沟通时,所应用的技术是 RMI(Java Remote Method Invocation )。简言之,网路上的服务藉由 Jini 所提供的介面,得以相互沟通、合作,来完成使用者的
二、体系结构
Jini system 是由基础建设( infrastrUCture)、程式设计模型( programming model )、服务( services) 三方面所构成。如图一所示 :
基础建设( infrastructure)
Jini 基础建设的核心包含以下几个部分:
Discovery Protocol:
提供了如何让网路上任何种类的资源加入联盟的方式。
eXtended RMI :
Jini的元件彼此沟通时所使用的机制。
Distributed Security:
定义了Jini 联盟成员的使用权限。
Lookup Service:
用来展现联盟中的所有成员,以及帮助使用者寻找网路资源,或者负责提供联盟中的资源给使用者用。
程式设计模型( programming model )
Jini 提供一些分散式的程式设计模型,而 Jini 的基础构造,就是利用这些模型来组合。模型所提供的介面(Interface),包括以下几个类型:
Leasing Interface:
负责治理物件被使用的时间。
Two Phase Commit Interface :
是一个轻量级的(light-weight)、物件导向的( object-oriented)介面。负责治理分散式交易( transaction)的动作,如:roll back 、roll forward 等。
Events Interface:
在分散式计算的环境中,必须确保程式执行的先後顺序,利用事件的观念可以帮助我们解决这个问题。
服务(services)
有了Jini的架构以及程式设计模型後,我们可以利用这些技术来设计治理网路资源的服务,以促进分散式计算的发展。例如:Javaspaces、Two Phase Commit Manager。 三、JavaSpace
Jini提供了在分散式环境中寻找( look-up)、注册( registration)、租借(leasing)等功能。而 JavaSpaces则负责治理分散式物件的处理程序( processing)、分享(sharing)、以及流通(migration )等。因此 Jini 与 JavaSpaces 彼此存在著相互合作的关系 。以军队作比喻, Jini扮演的是军官的角色,负责分派许多武器装备给军队。JavaSpaces则扮演军队的角色,负则使用那些被分派的武器以执行命令。简单的说, JavaSpaces就似乎网路上的一个市场,它提供一个简单、快速、统一的介面,让网路上分散的资源可以被分享、协调与流通 。
JavaSpaces是用 Java所发展的技术,并且以RMI实作其网路通讯的功能,一般应用在n-tiers 架构的中间层( middle tiers) 。JavaSpaces虽然能提供求者与供给者之间查询与沟通的机制,但它并不是资料库,而是以简单的messaging system为基础,进而提供更强大的功能。