Jini
是由 SUN 公司 R&D 的Bill Joy
所提出的一项技术。我们可以藉著使用Jini,创造出一个富有弹性、容易管理、且可随时随地使用各种服务的网路计算环境。为了让使用者知道网路上有哪些服
务可被使用,我们必须建立一个联盟( federation
),让网路上的服务主动加入。当有某个服务加入联盟时,也等於同时向整个网路告知:「我可以被使用,有谁 要我的服务?」。使用者透过联盟,可以得知有哪
些服务可以使用。然而,我们要如何才能很简单、很轻易地使用这些服务关於这个问题,也就是 Jini 的工作重点之一。
Jini(发音为DJEE-nee,像“魔术师”的阿拉伯语)是一个新思想,Sun微系统称作“自发网络”。有了Jini体系结构,用户就能够把打印机,存储设备,扬声器和任何设备直接插入网络,并且,网络上的每台电脑,设备和用户将会知道新加入的和可用的设备。每个可插设备都会立即在网络设备注册处定义自己。当某人要使用或访问这个资源时,他们的电脑将能够从这个资源上下载必要的程序来与其通信。这样一来,操作系统中就不再需要专门的设备支持软件,即我们所说的设备驱动程序。操作系统将会通过网络注册获悉所有可访问设备。
Jini可以看作是继Java编程语言之后迈向使网络变为一台大电脑的下一步。Jini承诺能使制造商生产可独于操作系统(像Windows95)连入网
络的设备。打印机只要装上一个很小的,特殊用途的并很可能是嵌入式微芯片的操作系统,它就可以被插到网络中并且立即被各种不同电脑的用户所共享:例如
Windows,Macintosh,UNIX。移动设备可以被传送并很方便地插入网络,这样一来,其他用户就都可以使用这个设备了。
Jini是以Java技术为核心的分布式系统,它通过使用一个简易的"即插即用"模型,能够随时改变硬件或者软件的配置,从而提供了一个支持快速配置的分
布式计算环境。Jini的迷人之处在于它能够使各种数字设备无需配置、安装或者人工干预,就能够在一个临时的称为服务联盟(federations
of
services)的设备集合中共同工作。联盟中的任何设备无论大小都可以自行管理,共同组成一个服务网络,联盟中的每一个成员都可以为其它成员提供资源
或服务,同时又可以从其它成员那里获取自己所需的资源和服务,Jini提供一套完善的机制使得硬件设备或者软件组件能够随时加入或者退出联盟。
Jini是一个主动的、响应式的分布式基础结构,它提供了在分布式环境中进行服务的建立、查找、通讯和调用的一整套机制。Jini技术被设计成可以运用在
任何有能力连入网络的器件上,而不论该器件运行什么软件或运行在哪种硬件设备之上。Jini技术是以网络器件中的一个构件的
面貌出现的,它为器件如何连入网络、共享信息和与网络进行互操作建立了一套规则,而同时又保持了对用户的完全透明。Jini本身与平台无关,采用它的器件
不再受到所用软件、处理器、设备驱动器,或传统网络协议的制约,其唯一要求只是一个能够运行Java字节码的虚拟机.
让我们来看看Jini 是怎么做的。网路上的服务要能够成为联盟的一份子,不管是硬体服务也好、软体服务也好,都必须嵌入Jini 的程式码。此外,网路上还必须提供 JVM的
环境,才能执行Jini程式以获得这些服务。Jini的程式码是利用 SUN 公司所提供的 Jini package 撰写而成。Jini
package使用的语言是Java,并且包含了许多处理网路上资源的相关功能。例如:如何帮助网路服务寻找(discovery)、以及加入
(join)联盟;或者帮助网路服务处理分散式的承租(leasing)、交易(
transactions)等的问题。而这些网路服务彼此沟通时,所应用的技术是 RMI(Java Remote Method Invocation )。简言之,网路上的服务藉由 Jini 所提供的介面,得以相互沟通、合作,来完成使用者的要求。
任何带支持Java的操作系统的设备都能够被插到网络中。(对很多设备来说,操作系统都比例如,Windows 2000小得多,因为它只提供了这个设备需要的函数。)当一个设备被插到Jini网络中时,它立即被目录服务层注册为网络的一员。它必要的程序对象被放在了JavaSpace层,这样一来,当其他网络成员要使用这个设备的时候就可以发现和下载它们。在JavaSpace中对象的实际通信是通过使用远程方法调用(RMI)接口和层来实现的。支持boot,join,和discover协议的这层用于使设备,用户,应用程序通告并自我注册以及发现其他设备。
一、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
彼此存在著相互合作的关系[3] 。以军队作比喻,
Jini扮演的是军 官的角色,负责分派许多武器装备给军队。JavaSpaces则扮演军队的角色,负则使用那些被分派的武器以执行命令。简单的说,
JavaSpaces就好像网路上的一个市场,它提供一个简单、快速、统一的介面,让网路上分散的资源可以被分享、协调与流通[4] 。
JavaSpaces是用 Java所发展的技术,并且以RMI实作其网路通讯的功能,一般应用在n-tiers 架构的中间层( middle tiers)[5] 。JavaSpaces虽然能提供 求者与供应者之间查询与沟通的机制,但它并不是资料库,而是以简单的messaging system为基础,进而提供更强大的功能。
除了Jini之外, JavaSpaces技术也可被应用在其它系统与服务中,如: Workflow
systems 、Customer management systems、Supply chain management
、Intelligent rich data distribution、 Trading services 、Auction systems
、Resource allocation and management systems、Agent Systems、以及 Publish
and subscribe services等[4] 。
三、Jini的应用
Jini技术有一个主要目的:让许多电子产品可以容易的被加入至网路上,也就是随插即用(plug-and-play) [6] 。任何物件,如:
DVD、CD
、VCR、桌上型电脑、可携式电脑、印表机、扫描器、磁碟机、播放器、电话、电视机、警报系统、医疗器材、空调系统、厨具、汽车引擎、汽车的丁器板等,只
要利用Jini技术,就可以结合各类的电子产品成为网路上的资源服务[6] ,而使用者只 透过电话或无限通讯器材就能使用这些服务。
想像一个剧情:一个使用者坐在公园里,想要透过掌上型电脑来使用网路上的印表机,但是他并没有任何印表机的驱动程式。首先,Jini会启动
Lookup服务(类似 JavaSpaces),到联盟(federation
)中搜寻符合使用者条件的印表机。找到之後,Jini会跟那台印表机沟通,取得它的驱动程式,并且传至使用者的掌上型电脑。使用者於是可以轻易的使用网路
上的印表机。
我们也可以把家中的电器用品都结合到网路上,这样可以让我们在任何时间、任何地点来控制家里的电器,这将是多堋令人期待的一个理想。
目前已经有许多公司正在发展相关的技术,这些公司包括Axis、Canon、 Computer
Associates、Datek 、Enocanto、Epson 、Ericsson、FedEx 、Mitsubishi、 Norwest
Mortgage 、Novell、ODI、 Oki、Quantum、 Salomon Brother、 Seagate、以及 Toshiba等。
四、Jini如何与众不同?
Jini具有创建庞大的电子设备网络的潜力。用户可使用标准计算机设备与之相连,或从网络本身获得这些服务(存储器、存储和计算)。因此,Jini在至少以下10个主要方面有别于传统操作系统:
它规模小。
Jini的内核只需要一台Java虚拟机,4KB常驻内存和一些计算环路(computing cycles)。Jini系统大约为600 KB。
该系统完全基于对象。
即,其组件包括可远程执行的方法,如果某个方法与其执行环境不兼容(如浮点代码),则它能自动装载正确的方法。
Jini的基本控制结构简单。
对象通过JavaSpaces (管理诸如对象处理、共享和移植等功能的系统)的基本操作--- read, write和take ---和标准Java RMI接口实现通信。
所有服务均通过简单的"租用"提供。
租用是依赖 于时间的(到期后可延续),并允许对同一服务有多个租用。
Jini包括标准Java安全性构造。
因为环境具有分布式特点,所以这一点非常重要,因为在执行对象的地方必须具备安全性。
借助JavaSpaces,Jini还包含可了交易 服务(两阶段提交)和持续性(即 persistency,最初 是 用Object Design公司的ObjectStore PSE Pro for Java )。
在Jini内部,像安全策略等基本信息群均可访问。这些信息群几乎可以无限地汇集起来,放置在大型网络中。
Jini支持Java编程模式。Java服务和协议( JavaBeans等)仍可为广大程序员使用。
资源可免费授权(或近乎免费)。
最重要的是,Jini提供插入即可执行的能力,新连接的设备能立刻得到网络的认可(通过引导、join and discovery
协议),并可访问任何已经授权的服务。Sun公司把这一特点比作标准电话网的拨号 ,并且正在考虑使用JavaTone品牌来描述整个环境。
五、Jini为什么重要? mandate
目前的网络计算环境非常复杂。Windows 98和Windows NT
Workstation等客户机操作系统都包含1000万到2000万行代码。这些系统的规模 和复杂性 要求使用昂贵的、资源密集型计算设备,
它们能够随各新版软件的面市而不断升级。
在现有网络中添加新的设备也是同样的情况。虽然Microsoft公司在其操作系统上增加了plug-and-play (即插即用)功能,但对多数信息服务企业来说,新硬件的添加、配置和安装设备驱动程序总是一个问题。
对那些必须为成千上万用户维护稳定的计算环境的系统管理员 来说,对客户机端软件不断 复制使 其工作负担加重,且成本增加,同时也限制了能与网络相连且有效使用的设备的范围。
Jini的重要性体现在,它可能 能够做到:将服务的可用性扩展到更加广泛的电子设备的同时,降低维护分布式计算环境的成本和复杂程度。
降低企业网络拥有成本是一个重要的问题。确实,在企业2000年问题解决以后,这个问题将成为各企业信息服务部门下一个10年的主要课题。
除了降低成本以外,Jini还可能创建全新一代的网络服务和产品。服务已经打破了本地计算机系统的界限,并将发展到与远程设备功能相符,并且当功能受到限
制时可以从网络上动态地提供。请想象一下这样一种智能化家庭网络吧:它控制着从电脑到烤面包器、从分布式超级计算机到能把呼叫自动传输给您(可能是您的计
算机、电话、电视和蜂窝设备)的电话网。Jini有可能使这一切及更多其它的应用成为现实。
六、结论
Jini让许多电器设备、网路服务结成联盟( federation)。
Jini的最上层以 Lookup机制为基础的目录服务( directory service ),让许多含有
Jini技术的资源,来注册以及被公布於网路上。下一层则利用JavaSpaces
技术来管理联盟的资源,以让使用者或其他应用程式使用资源。底层则是以RMI为基础的协定,用来规范物件之间在网路上的沟通。
如同SUN公司所说:「网路就是电脑(The network is the
computer)」。网路的出现提供了无限的计算资源,让我们可望达成一个超大型的计算系统。Java技术使得分散式计算变得容易可行,Jini
则实现网路就是一个超大型电脑的理想。