Jini 能给您带来什么
Jini是实现大规模分布式计算的一种关键技术。它不仅可以解决网络兼容性的问题,更加不同凡响的是,通过这种技术可以在网络计算机设备和应用程序之间进行有效的交互和合作。Jini通过使用面向对象的语言JAVA,将即插即用特性赋予了各种各样的设备,例如PC、手持式电脑、蜂窝电话以及48KB的小内存设备,从而减少了网络上的冲突。但是,Jini网络的实现还需要开发人员艰苦不懈的努力。在此之前,程序员们仍要面临编写分布式应用程序的挑战。
Jini是一种用JAVA语言编写的代码,这种代码可以在网络上自动地检测计算机设备,并且注册它们所提供的服务。它是为在网络上提供分布式操作系统服务而采纳的开放式体系结构的核心部分。
Sun公司为下个世纪的网络计算绘制了一幅蓝图,将这幅蓝图变为现实的技术就是Jini。Jini是一种基于JAVA的体系结构,它提供操作系统的服务,并且将其功能扩展至整个网络。更一般地讲,Jini是在JAVA虚拟机(JVM)顶端运行的一个JAVA软件,为设备提供即插即用的网络功能。Sun在它的蓝图中描绘了这样一幅场景:在未来,任何一台装有微处理器以及小容量RAM的设备之间都能够相互合作,从而达到了计算上一个崭新的境界。虽然这是一种超前意识,但是采用Jini至少使我们离未来的蓝图又进了一步———它可以使我们免受设备驱动程序不兼容的困扰,并且不再让用户在登录到网络上时遇到麻烦。
举个例子,在Sun所勾画出的蓝图中,用户可以将掌上型电脑插入网络插槽并且能够被立即识别出来,从而自动地成为了网络的一部分。有了这样的手持式设备,用户就可以方便地访问一台计算机上的数据,并且利用另外一台计算机所提供的服务来处理这些数据;接下来他还可以在最近的一台打印机上打印数据,而不用在掌上型电脑上预装打印机驱动程序。这样不可思议的事是通过这部掌上型电脑自动下载一个基于JAVA的打印机驱动程序来实现的。网络与应用程序之间这种自动而便捷的集成可以应用到从PC到蜂窝电话的几乎任何一种电子设备之上。
这种分布式的计算体系结构并不新奇,Sun公司的Jini也不是实现下世纪网络世界的操作系统唯一的技术。Lucent Technologies公司在1997年推出了为嵌入式系统设计的Inferno技术,该技术在逻辑上与JAVA极为相似,也包含了虚拟机概念、编程语言以及通信协议;Oak Ridge国家实验室也推出了称为并行虚拟机(PVM)的技术,它旨在通过网络上完全不同的机器之间进行合作而提供一种低价位的超级计算机;IBM力推的T Spaces在概念与实现上与Sun也很类似;而脚踩两条船的Microsoft也正在研究分布式操作系统,他们关于分布式操作系统的大手笔项目称做Millennium。Microsoft希望通过Millennium取得两大伟绩:一是将桌面操作系统完全而无缝地分布到世界范围的网络中去,二是将程序员带往不再考虑底层机器细节的更高抽象层次上。这两个目标对于分布式系统来讲是相当关键而密不可分的。但是,由于Sun拥有JAVA编程语言以及相应的虚拟平台,它在将操作系统引入下个世纪中处于一个极为特殊的地位。
Jini是如何工作的
Jini解决的并不是诸如一个特定的应用程序如何在网络上进行工作这样的细节问题,而是为这些服务提供一种极为关键的能力,使得它们彼此之间可以意识到对方的存在,进而建立起相互的连接。Jini的核心是Sun JDK1.2中的JAVA Remote Method Invocation(RMI),这是一种使JAVA对象之间可以在网上实现交互的网络服务。这样看来,Jini就可以看作是JAVA软件组件模型JAVABeans在理论与实践上的一种延伸了。
Jini网络就像是一个市场,在其中商人们贩卖自己的商品。在Jini网络中,商人们就是最终用户、设备或者应用程序。贩卖的过程是这样的:一个新的商人来到这个市场,他宣告了自己的到来,并且很快建立起了商店;然后他将所卖的商品以及提供的服务写下来,像许多其他的商人一样写在一张卡片上,而这些卡片的信息就公布在一个布告栏中;Jini提供了这种销售的机制,根据它的规定,商人们被授予在布告栏上贴广告的地方,并在那里发布消息;顾客们则在布告栏前驻足,寻找他们感兴趣的卡片信息,然后从卡片上抄下与商家联系的方式;接下来顾客就与商人在诸如“什么时候交货”或者“怎么买卖”这样的细节问题上讨价还价;而商人们交易时所遵循的交易规则是由Sun的另外一个标准JAVASpaces来规定的;对于顾客来讲,商人之间的自由交易是不可见的。
Jini所蕴涵的意思当然比这个比喻要来得丰富得多:例如消息在布告栏上不会被偷走,以及广告所占据的实际空间并不需要考虑等等。但是,这个虚拟市场也存在着固有的问题:例如这些商人对他们的顾客缺乏判断的准则,还有当网络发生故障、商家突然消失时如何进行交易也是需要考虑的问题
Jini中,这个由商人和顾客组成的市场被称为一个“联盟”。Jini通过一种“发现并加入”(Discovery and Join)服务为该联盟分配空间;它的另一种“查找”(Lookup)服务用来在布告栏中发布信息,并且接受交易要求;Jini由一种“出租”(Leasing)模型来解释何时可以将卡片从布告栏上撤走,以及制订合同所需遵循的规则;并且由一张“访问控制列表”(Access Control List)来规定谁可以使用特定的服务;服务的提供与进行由JAVASpaces和实际的应用程序共同操纵;商人之间交流所采用的通用语言由JAVA的RMI规定来决定。
Jini和JAVASpaces一起为当前集中式的系统服务带来了一种转变。一个操作系统实际上就是一些子功能的集合,但是它进行的是一些复合式的操作。Jini和JAVASpaces打破了这种单一的模式,而把许多服务分布到网络的不同部分上去,从而将OS分成了若干子系统,并且将这些子系统分散到了网络、客户机以及服务器上。对于实现分布式的合作来说,Jini是这种JAVA基础结构中起步性的关键步骤。由于JAVA具备面向对象的特性以及执行可传输代码的能力,Jini可以在网络上分发大量的软件对象。这些独立的应用程序或者对象可以根据用户的需要在网络上传输,从而与其他对象进行交互。
Jini是如何工作的
Jini将会给企业带来的影响
Jini和分布式系统在降低网络交互的复杂性方面将使企业得益非浅。许多公司内部的计算机设备种类繁多,诸如PC、打印机、手持式设备、蜂窝电话以及服务器等等,简直令人头痛。比方说,如果一台打印机发生了故障,那么立刻所有的网络用户就需要修改他们工作站上的打印设置。而Jini能自动识别网络上的变化,并且对用户透明地在网络上传输像打印驱动程序这样的代码,从而彻底地解决了这样的问题。Jini的梦想也为崭新的商业运作模式创造了可能,Sun希望在不远的将来,新的经营模式会产生于基于Jini的灵活机动的网络,比如出租大型硬盘组的磁盘空间等等。由于公司们正在致力于挖掘新的商机,Jini很可能为现在任何人都想象不到的计算机硬件工作模式提供其所需要的基础。
Jini走出第一步
像Jini这样的分布系统技术毫无疑问会成为今后十年里发展的主要力量,但是,Jini的应用还很不成熟。目前,它只不过是为开发人员更好地利用网络及其资源编写应用程序的基础工具。在更为基础的层次上,厂商们需要为他们所有可能在Jini网络上运行的设备编写基于JAVA的驱动程序,或者为驱动程序编写JAVA接口。
问题在于:何时Jini才能走出研究和开发阶段,何时它才能成为真正的产品从而造福于企业?
Jini的实质是JAVA。而在网络或者多台计算机上提供分布式的服务正是JAVA的目标。由于Jini基础结构使用的是JAVA RMI以及面向对象的编程,因此Jini对于JAVA和面向对象的程序员来说会显得更为直接,但是编写分布式应用程序比一个单独应用程序来说总归复杂得多。例如,开发一个经常在一开始时用作介绍的应用程序“Hello World”,在集中的操作系统以及应用模型中,可能只需编写几行代码就可以在屏幕上显示出“HelloWorld”消息,甚至新手在几分钟之内就可以编写出这个程序。但是如果是在分布式的环境中,编写同样应用程序的复杂性就会大大提高了。程序员们必须考虑到诸如网络故障、延迟以及安全等方面的问题。尽管Jini和JAVAspaces提供了分布式的安全模型以及对象处理机制,但是让它们能为今天的程序员们所应用还要经过相当长的时间。正像其他计算机方面的问题一样,这是一个培训和普及的问题,因为程序员们需要学习如何编写出高质量的分布式应用程序。
从另一方面看,Jini已得到了令人鼓舞的支持。Sun已经同诸如Quantum和Ericsson这样的公司建立起了伙伴关系,他们们均表示要采用该技术;Novell也表示要为Jini提供创建目录的服务。尽管目前重要的合作伙伴并未作出任何许诺,但至少一家并不著名的公司———Malaysian已经将Jini应用了起来。
Jini在很多方面是大多数传统操作系统无法匹敌的。虽然像Microsoft这样的公司正在研究自己的分布式计算系统,但目前Jini仍是领先的。一方面,程序员们已经可以创建Jini应用程序了,对于JAVA程序员来说,他们已经熟悉了许多Jini的特性;另一方面,由于JVM的普及,Jini必须与各种各样的环境进行合作和集成。由于分布式系统的前景无可限量,我们可以打赌:Sun或者是Microsoft将为未来的分布式操作环境制订标准。Jini建立在JAVA坚强的基石之上,并且JAVA深入人心,它代表了早些时候在计算模式上要进行广泛而深远转变的一种热潮;而Microsoft则控制了当前OS的标准。
创造强有力的系统和应用程序,从而更好地利用网络资源、使用分散的资源来解决大型的问题,这就是我们的目标。将这个梦想变为现实还需要长时间的努力,但至少目前,Jini已经在解决网络上互操作性的矛盾上给我们带来了希望,同时是它使得设备驱动程序的问题已经成为了过去。
Jini的作用
为分布式系统中的设备提供即插即用的网络功能
与Jini竞争的技术
Lucent的Inferno
Oak Ridge国家实验室的并行虚拟机(PVM)
IBM 的T Spaces
Jini的短处
对编程人员要求高,编程复杂,需要学习一段时间才能掌握
摘自中国计算机报出版日期:1998-11-05总期号:774本年期号:84