对jini设备的硬件要求
虽然jini本身是一个软件系统,但是一个真正投入使用的jini系统则由一系列软件和相应的硬件组成。显然,以往一般的电子设备是不可能直接加入到jini系统中来的。我们只有全面了解支持jini技术的硬件规范,才会对jini技术的未来有一个更深入的了解。
jini结构需要以java语言中的数据类型定义服务,且以服务的不同实例来以不同方法实现该数据类型。一个服务可以是不同类型的成员,允许了一个服务实例可以为客户提供不同功能。这是一个标准的面向对象软件的方法。jini系统分布式的特点允许了java语言的数据类型可以以一个软件和硬件的结构来唯一地实现。
实现这种功能的思想核心十分简单。服务以一个接口定义,支持接口的代理对服务客户是可见的,代理的功能模块由服务提供者上载到查找服务上,随后以客户所发现的服务的一部分被下载到客户方。这种服务相关的功能模块需要用java语言编写以保证可移植性。但是,既然这代码来自被使用服务的个体实例,它的代理就可以详细地知道特定服务功能模块的细节。下载的代码不但知道实现这种服务的软件,还可知道服务所在的硬件。在极端情况下,硬件就是服务的全部,下载的软件是一个网络级的设备驱动程序,在得到来自客户方的java语言的方法调用后,在网络连线的另一端产生了对硬件的特定硬件代码调用。
对查找服务(lookup service)的要求
一个服务提供的实际功能对提供这个功能的实体要求很少,实际上,jini软件服务可以用这样一种方式来运行设备:客户方下载的jini程序直接向硬件发送相应的二进制代码直接执行。在这种情况下,jini设备所需的智能是最少的。java程序与设备控制器交互的方式与设备在一局部计算机总路线下的交互是十分类似的(当然,还须在通信方面对网络中心做一些修改)。
但是,提供服务仅是对jini服务要求的一部分。要成为jini系统的一个部件,服务还必须参加到jini的发现协议中来,并向jini查找服务注册其自身信息。
这两方面的需要是密切联系的。jini发现协议的主要目标是使得设备、服务或获得本地jini查找服务的一jini远程方法调用(rmi)的引用。一旦这个引用被得到,服务需在jini查找服务中注册,允许jini系统中的其它成员发现和使用这个服务。
jini查找服务的接口是一个完全的rmi接口,服务的实现使用了rmi所有的机制,包括分布的垃圾回收和代码的动态下载。因此,服务被假定有一个对jini查找服务的引用,该查找服务运行在一个完全的或是至少支持rmi的java虚拟机之上。
当我们考虑到jini查找服务的另一个实现方案,即除jini查找服务自已定义的接口之外还支持其它远程接口,(net.jini.core.lookup.serviceregistrar)因为这种方案有一个不同的rmi代理而不是像现在的方案那样:一个有完全jvm和rmi的设备可以下载它。一个没有完全jvm和rmi的设备需要一个处理这种服务实现的不同方法。
除此之外,服务的注册还需要net.jini.core.lookup.serviceitem对象的产生,这个对象由一系列的jini对象组成。在查找服务包含这些入口则需要net.jini.core.entry.entry的jini对象的产生,所有这些对象最简单的产生方式就是由一jvm构造。
最后,jini查找服务的注册被租用,返回的租用需要续租以使服务继续在查找服务中显示。查找服务规范没有包括由注册返回的租用对象。所有这些被定义成jini语言中的接口,必须被以租用返回的(本地)对象支持。因而查找服务的设计需要那些类代码下载到注册的服务中以使租用可以被续租,实现了net.jini.core.lease的租用接口。
实现jini服务的三种不同途径设备拥有常驻的jvm
成为jini系统联邦一部分的一个明显的设计方案就是让其包含计算能力、内存和稳定的存储空间,这些是拥有一完全的jvm以及支持jini基础结构所需的java应用环境的那些部分所需的(尤其是那些部分包括代码载入、rmi和任何所需安全机制)。这将使设备进入专门的计算入口,设备的一部分将专门为jini结构所需的部分java api服务。在这种途径下,硬件抽象实现在了一设备局部软件抽象之后,该软件抽象了在客户与服务连接的的代理代码之后。
这样的设备可以对jini和java技术有完全的支持,包括上载与设备通信的的代码和下载可能为设备提供服务所需的代码。这样的设备在网络通信上使用本机rmi协议,并在通信协议和特定的控制设备自己运行的软件协议之间有一个宽松的联系。用这种途径,设备成为一通过嵌入式jini平台提供特定服务(或服务集)的专门网络应用。
实际上,这种途径以rmi服务器的实现使用了硬件解决方案,在两个方向上隔离了硬件:先上载到jini查找服务后下载到服务客户的本地代理代码来提供;在服务设备上的本地jvm和由jini程序写的代码允许客户代理和硬件自身的调解。
通过设备上的jvm中介,一个使用这种途径的设备可以简单地在设备上实现多种服务。这样的设备可以在对客户和客户与服务之间的网络协议无影响的情况下自身发展。尽管简单、灵活,这种途径会增加设备的成本。设备需要一可运行jvm的微处理器,产生存储类所需的内存和一些存储jvm和jdk软件类的常驻存储(如磁盘或nvram)。所有这些都加到了那些执行设备提供的jini服务所需的硬件之上。
满足这些需要不要调用jvm的主机版本,或一个在设备上运行的完全的jdk。jvm可以在任何形式的微内核或设备的硬件上直接运行。并且jdk的大部分不为一设备所需要,占用当前版本jdk相当大部分的如图形和ui(user interface)类不被需要。版本的其它部分同样可抛弃,“被剥皮”的jdk足以满足jini设备的需要。确定这样一个jdk子集的大小和部件是值得一做的;这与embeddedjava技术加上额外的rmi类的规模类似。
对于这种途径来说,重要的是可以下载用java语言写的任何代码,并可以使用rmi通信系统和处理一个虚拟机一般的需要。通过一标准jvm,设备在jini系统联邦中有一完全的成员资格,且在它提供给联邦的其它成员的代理与它自身通信方式上有足够的弹性。
使用专门jvm的设备
假如制造商愿意放弃jini分布式结构提供的某些灵活性,我们可以降低对其进入(jini设备生产)的要求。为此,设备生产商需在设备中实现对jini发现与查找服务的接口,包括对某种租用专门的处理和对这种租用直接续租的能力,该租用由查找服务分发。并且设备还应有下载对服务有用代码的能力。这是一专门的功能集,比整个jvm需要的少得多,可由小得多的代码来实现。
这样的设备将包括一jini环境专门设计的jvm,允许访问jini发现和查找服务以及续租一特别顺序的租用。它限制了这样一个设备的灵活性,因为设备不可以变化软件。对由查找服务分发的租用的专门认知也使得这样的设备只能与专门的查找服务打交道。但是,这种服务功能上的欠缺可由简化设备总体得以弥补。
多个设备共用一虚拟机(物理上的)
此种方法使用了一个完全的jvm,但通过一系列不同设备完成jvm的开销(包括软件和硬件)。通过这种方法,一系列的设备都使用一物理上共同的jvm作为设备和jini系统之间的中间层。设备载入java程序到局域虚拟机,允许局域虚拟机与设备交互,然后将局域jvm作为与jini查找服务和jini发现服务和jini租用交互的代理。
除了设备使用的jvm是共享之外,这种方法与第一种途径十分相似,它仍然是一个完全的jvm,允许代码的下载和完全的jini平台功能。然而,这和设备的实现最有可能是允许多个(或是不同的)物理设备被插入到一个完全的设备以获得jini应用环境的共享。
这样的设备最适合被看成是一“jini设备港”,用以提供动力、网络连接和一运行jvm的处理器以及jdk的适当部分。用于提供某种jini服务的物理设备被插入到设备港中并向港报告。它可用一适当的协议(允许设备生产商既生产基本设备又生产设备港)或其它某种工业标准,局部设备认证计划。作为局部声明的一个部件,允许设备既作为本地机器的设备又作为网络级设备。
在发现新的本地设备以后,jini设备港将向jini查找服务注册由新设备提供的服务(先为设备港所知)。设备港还有责任在jini查找服务入口续租和发现任何作为代理的设备从网络上的删除。设备港用向jini查找服务提供设备交给它的代码,以使服务的客户可下载。
设备服务的客户将认为它是在与注册在jini查找服务的设备交互,但实际上它是与设备港交互。设备港可作为它所代理的特定设备的“发报机”(dispatcher),在由服务代理使用的网络协议和设备港与实际设备的协议之间有一转换协议。
在这种方式中,设备厂商成本的降低来自多设备共享一个设备“港”的能力,这个设备港有智能、内存或是其它组件(如电源)。通过在多个设备共享这些资源,与jini系统联邦交互所需的额外开销可被众多设备共同分担。设备厂商所需做是实现设备与jini设备港之间的协议,该协议存在于设备港中,必须提前定义并且不可随时间改变。
应用实例:家庭网络
家庭网络(home net)是日益为人所知的新概念。用网络把各种数字化的家用电器连接起来显然是大有前途的。但是,如果家用电器是像目前的pc机一样地上网,恐怕会因为不易安装、使用等原因而不为普通家庭用户所接受。然而,jini的出现则为家庭网络扫清了障碍。
当越来越多的家用电器内置了微处理器,对通用的控制与使用方法的需要也将日盗明显。使用jini技术的数字设备可存在于家庭方方面面,给予家庭用户一个全新的家电使用概念。
jini技术给予了使用者一个统一的、更方便地获得他们的邻居,甚至于整个世界所提供的服务的方法。用jini软件,一个膝上型电脑或是家用计算机可以加入到由其他电子设备共同组砀局域服务“共同体”中来。你只需“告诉”你自己的电脑你要做的事,由它们自动在“共同体”内寻找合适的资源服务完成实际的工作。
此外,实现jini技术所需的代码较少,各种家庭的应用都可以用上它,向自己家中加入高科技产品将就像插个插头一样简单。
闽公网安备 35060202000074号