Jini技术常见问题解答
内容提要
Jini技术和补充网络技术 Jini技术概述
问题1:什么是JiniTM技术?
Jini技术是基于Java技术的一种新的技术突破,它使各种设备可以非常简单地连接到任意无准备的网络(impromptu network)上,从而使得对新的网络服务的访问和发送变得就象接入电话一样简单。建立在Java软件基础结构之上的Jini技术可以使所有类型的数字设备,在不需要大量的计划、安装或人为干预的情况下,共同运行在一个社区(community)中。每个设备可提供该社区中的其它设备可能需要使用的服务。这些设备还提供了它们自己的用户接口或程序接口,这就保证了可靠性和兼容性。
问题2:什么是无准备社区(impromptu community)?
用无准备社区可以描述当两个或多个使用Jini技术的设备一起共享它们的服务时的情形。由于设备之间不需要为连接到该社区而具备彼此间的预先了解,因此可以说该社区是无准备的。Jini技术允许设备动态地建立通信以共享和交换网络中的服务。无准备社区是一种动态环境,它消除了对设备配置或安装驱动的需求。
例如,假设有一台接入网络的照相机。在不需要安装驱动、插入CD-ROM或软盘以及从键盘键入命令的情况下,该照相机即可立即连入网络。该照相机标识它自己并提供服务。如果照相机能够说话,它可能会说:"我是照相机,谁要照相?"你可能有一台使用Jini技术的要加入到该网络的膝上型电脑,这时你可能访问该照相机,照一张相,并把照片发送到你自己的磁盘驱动器上,或为打印而将它发送到另一个设备上。
问题3:Jini技术有哪些益处?
所有的Jini技术都是为了简化网上的交互。Java平台已经将这种简化启动,而Jini则将其进一步完善。简化意味着改善的生产力、费用降低和便于使用。Jini技术让你使用网络就象使用电话一样的简单。它使ISVs、IHVs和部件制造商得以扩展到新的市场,并提供基于网络的改良的产品和服务。Jini软件还允许传统的服务供应商能够动态地增加和管理网络服务。
问题4:Jini技术一般都用在哪些地方?
几乎所有需要处理数字信息输入和输出的设备都有可能连接到使用Jini技术的社区,这不仅包括传统的计算机硬件和软件,而且还包括应用消费品,如个人数字助理(PDA)、数字相机、录象机、电视、DVD播放机、蜂窝电话和CD播放机等。传统的部件和外设制造商对此已显示了极大的兴趣,他们都希望将自己转化为增值网络服务供应商。另外,企业服务供应商对此也非常有兴趣,他们期望简化并扩展他们的网络能力。
问题5:Jini技术迎合了什么发展趋势?
随着处理器和其它技术设备价格的下降,传统的计算机的定义和用途正在扩展。使用的技术也从原来的单用户PCs和几百万美元的大型计算机发展到今天的基于网络的计算应用。对能够将全球连通的宽带网络的投资仍在进行。网络设备本身也不限于传统的计算机。相反地,从数字相机到蜂窝电话到家用电器都使用了某种类型的微处理器,并且具备一定程度的网络智能。但是,今天的网络对一般用户来说仍然是复杂的,不容易管理和使用。他们正在寻找更简单而可靠的网络解决方案。通过采用象实用工具一样的网络以达到对信息、数据和服务的共享和计算,这种方式将变得越来越普遍。分布式计算技术将被用来驾御网络的各种功能。在许多领域,由于Java技术的普遍采用,将会提供一种"编写一次,随处运行"的软件平台。网络的这种发展趋势--随处可用、简单、采用Java以及分布式计算技术--为Jini技术的产生奠定了基础。
问题6:业界对Jini技术的反响如何?
反响非常热烈。市场上对有关能够简化网络的技术的需求是非常大的。对出于研究和非赢利(组织内部)目的的用户,Sun可免费提供Jini技术的源代码。因而,一大批组织机构已开始调研Jini技术。同时,一大批从事电子消费品、计算机外部设备、企业级计算、计算机系统、网络服务供应以及软件的公司也已购买了Jini技术许可证,并在其商业化的数字产品和服务中使用Jini技术。
问题7:Jini技术的主要设计者有哪些?
在 Bill Joy 和 Jim Waldo 的领导下,一些在分布式计算领域的精英参加了Jini技术开发项目。他们包括Java远程方法调用(Java RMI)的发明和设计者Ann Wollrath、JavaSpaces技术的设计者、同时也是与James Gosling共同完成"Java programming language"的作者Ken Arnold、以及 X 协会的负责人和查找/发现(Lookup/Discovery)的设计者Bob Scheifler。
问题8:我从哪里可以找到有关Jini技术的更多信息?
从下列网址可以找到有关Jini技术的更多信息:http://www.sun.com/jini
Jini技术详解
问题9:Jini技术是如何运作的?
基于有关协议和一套Java技术接口,Jini技术使设备和应用程序可进入到网上虚拟机的无准备社区之中。采用Jini技术的设备使用一种被称作发现(discovery)的进程来寻找同样也采用Jini技术的设备。然后这些设备可向Jini技术的查找服务(lookup service)发送对象--这些对象代表了该设备所提供的服务以及它们的定义特征和属性。当一个设备需要使用社区中的一项服务时,它可以从Jini技术的查找服务中下载所需的对象,包括任何代码,如应用程序、设备驱动或用户接口等。
问题10:当一个新设备被接入网络时,会怎么样呢?
为将设备的服务提供给本地社区,该设备必须使用Jini技术来注册它所提供的服务。这可通过两个步骤来完成。首先,该设备轮询本地网络以确认Jini技术的查找(lookup)服务的所在位置;然后,再将自己注册在该查找服务上。这两个步骤被称作discovery和join进程。对该设备提供的每一个服务,该进程都向查找服务上载一个Java对象,作为该服务的接口。
问题11:Jini软件可在什么设备上运行?
Jini软件即Java软件代码。它可以运行在任意的数字设备上,如蜂窝电话、数字相机、个人数字助理(PDA),甚至还包括智能磁卡等。
问题12:为了使用Jini技术,是不是网上的所有设备都必须采用Java平台。
不是。这些设备可以允许网上的其它部件代表它们来执行需要Java技术的Jini软件。通过将Jini软件所需要的某些特定的Java功能委托给第三者,一个设备可以不必有它自己的虚拟机,并且在几乎不需要有附加代码的情况下,即可成为Jini技术网络的部件。成为网络社区的组成部分所需要的所有功能可由网络中与该设备有伙伴关系的另一系统来实现。
问题13:我怎样才能知道我在网上具有一个Java虚拟机?
不管你知道还是不知道,你的机器可能已经正在使用一个或者几个Java虚拟机了。它们被嵌套于大多数Web浏览器以及各种设备中。如果对一个发现(discovery)的询问(query)出现了一个响应,则表示在网络上具有了一个Java虚拟机。
问题14:一个应用程序是如何使用Jini软件的?
为使用社区中的服务,一个应用程序必须首先用发现协议来定位一个Jini技术的查找服务,然后它则可以使用该查找服务来定位能够提供所需服务类型的设备。应用程序则可以从该查找服务中下载一个可被用来与选定的设备进行交互的Java对象,该对象被用来处理任何有关设备的细节;运行应用程序的机器不需要具备该设备的驱动程序。
问题15:如果一个设备被断开连接,会怎么样呢?
Jini使用一种被称作"租用(leasing)"的技术来检测什么时候一个服务是不可用的。当一个设备在查找服务注册后,它会收到一个"租用"。这个租用必须被定期更新。如果未被更新,查找服务则会将该设备从服务列表中删除。删除一个设备不影响由其余社区成员所提供的状态或服务。
问题16: Jini技术适用于我现在的网络吗?
因为Jini技术是基于Java平台的, 所以它可以运行于任何具有至少一个Java虚拟机(JVM)的网络, 包括采用传统操作环境的网络, 如采用Novell Netware或microsoft Windows的网络。
问题17: 使用Jini技术需要替换现存软件或硬件吗?
不需要。通过添加某些Jini软件, 现存数字设备可被升级, 以达到使用Jini技术的目的。例如, 一旦你的PC拥有了Jini软件, 它便可以使用其它设备的服务, 并且其本身也可被当作一个服务而提供给其它设备。甚至于那些连接在你的PC上的设备,如磁盘或打印机,在添加了适当的Jini软件后,也可以作为服务提供给其它设备。
即使PC被升级以使用Jini技术,该PC上使用的现有软件也不需要改动。通过改变软件而在网络上提供服务则需要对软件进行升级。
Jini技术的开发
问题18:我可以将Jini技术添加到我的现行软件上吗?我应该怎样做?
可以。第一步,要为你的代码提供一个Java软件的包装器,这样这些代码即可在一个Java虚拟机(JVM)内运行。你可以找到有关这个过程的很好的文本说明,因为目前有数以千计的开发者都要实现这个过程。第二步是将那些可告知你的程序来宣布它自己的代码添加到查找服务上。我们将提供一些示例代码及升级工具来帮助你完成这一步。
问题19:什么是Jini技术社区?
Jini技术社区由任意对创建应用程序或服务感兴趣的开发组织或个人所组成。该社区的成员必须执行基本的Sun社区资源许可(Sun Community Source Licence (SCSL))协议以获得对Jini技术源代码的访问。他们分享一定的权力和责任以保护Jini技术的开放的和可扩展的性质。这些成员可参加用户小组、开发论坛及顾问讨论会,还可能获得来自Sun Microsystems和其它社区成员的开发与技术支持。
问题20:Sun拥有哪类计划可以支持各类组织使用Jini技术进行开发?
为鼓励Jini技术社区内的创新,Sun为使用Jini技术的商业性的产品提供全方位的技术信息、支持服务以及市场支援。从具有深入技术信息和共享资源库的免费Web站点,到专业级的技术支持以及超级合作营销机会,Sun的计划可帮助开发者为Jini技术探索新的用途,开发具有创新的产品和服务,以及为使用Jini软件创建用户需求。
问题21:有可以使用的Jini技术开发工具吗?
因为Jini技术是基于Java平台的,所以任何可被用在Java软件开发上的现有开发工具都可被用在Jini软件的开发上。除此之外,实用工具类和实现正在被开发,并可免费获取。 这将会减低使用Jini技术的服务和客户(clients)的开发难度。
问题22:是否有创建Jini技术部件或服务的可视开发工具?
在当前这个早期阶段,还没有为Jini技术使用的商业性的可视工具包。然而,我们的确期望社区成员能够提交这类工具,并且我们鼓励商务公司为Jini技术开发类似于用在其它技术上的工具包。
问题23:现在就可以获得Jini技术吗?我怎样才能得到它?
可以。Jini技术Core Platform (内核平台)的源代码和规范可以从网上下载。网址是:http://www.sun.com/jini/。虽然可免费下载,但你必须通过鼠标的点击来表示接受 Sun 的社区资源许可协议(Sun Community Source Licence (SCSL))。
问题24:社区资源许可协议是如何运作的?
Sun的社区资源许可(SCSL)协议是为在开发者社区中发布资源代码而设计的一种许可模型。该模型是根据Sun Microsystems最近发布的由Richard Gabriel和Bill Joy设计的社区资源许可原则(Community Source Licensing Principles)而提出的。
为了促进和提高Jini技术,按照SCSL协议,Sun在开发者社区中基本上与其他成员分享了源代码的权利。Sun还致力于建立一种责任以保证兼容性;并提出了一种业务模式--通过提倡协议的接受者创建专利改进项目,以奖励创新和发明。
有关社区资源许可协议的进一步运作细节,请参见我们的网址的Licensing部分,网址是:http://www.sun.com/jini/licensing/。
问题25: Jini技术的价格体系是怎样的?
对那些希望对Jini技术的源代码进行评估、改进、完善和作为内部使用的协议接受者来说, 只要遵守Sun社区资源许可(SCSL)协议, 就可以免费使用Jini技术源代码。一旦你或你的公司决定将Jini技术产品作为商业性的使用, 你则必须同意SCSL(附件E)中的有关商业性使用条款, 并签定Jini Compatibility Logo(Jini兼容性标志)许可协议。标志许可包括了使用标志的年度价格或单价(per-unit fee)。
问题26:我能够使源代码更新吗?
所有的Jini技术的协议的接受者都可以访问我们的Jini技术站点。在这里,我们为协议的接受者(包括Sun本身)安排了一个区域,使他们可以将程序调试、更新、使用的工具、示例以及与Jini技术有关的其它技术支持问题发送给社区的其他成员。我们期待着每天都收到新的信息。Sun将在适当的时候、适当的位置将核心代码做必要的改动。所有的情况都会在网上通知。
问题27:我如何将代码回赠给Jini技术社区?
在我们的网址上有这方面的详细步骤。该网址是: http://developer.java.sun.com/developer/products/jini/index.html.
Jini和Java技术
问题28:使用Jini技术需要哪个版本的Java软件?
Jini技术依赖于最近发布的Java 2 软件的一些特性。其设备间的通信是使用Java远程方法调用(RMI)来完成的。安全性是通过扩展Java软件安全性模型来提供的。对象序列化(Object serialization)被用来将设备接口传递给查找服务以及任何希望利用该设备的应用程序。
问题29:Sun为什么在Jini技术中使用了Java远程方法调用(Java RMI)?
Java RMI是Jini技术的基本底层结构,因为只有RMI才具有使Jini软件的体系结构得以实现的能力。Java RMI允许对象(包括它们的行为)按照它们实际的Java软件类型进行传递。这就允许了一个期望获得基础类型的对象的子类型的传递,以及使相同服务接口得以按不同方式实现的代码能够按指令传递到该服务的客户端。
没有Java RMI,Jini技术就不可能实现。
问题30:Jini技术可以与Microsoft的虚拟机一起运行吗?
不可以。因为Jini技术依赖于Java 2 环境,包括增强的RMI、安全性以及集合类。目前发行的Microsoft虚拟机没有实现Java 2 。
问题31:为什么Jini技术与Java平台是分离的?
Jini技术是Java平台的扩展,它将Java技术的优势带到了网络之中。然而,它与Java平台又是截然不同的--例如,它不适合于独立的系统(stand-alone system)。再者,鉴于Jini技术的以网络为中心的特性,因而它也不适于在一般的Java平台中使用。
问题32:Jini技术是如何与Java技术的其它功能协调运行的?
Jini软件的底层结构是用Java编程语言编写的,它可以与所有的Java核心技术协同工作。
问题33:Jini技术适应Enterprise JavaBean部件吗?
Enterprise JavaBeans(EJB)部件可作为服务器部件的开发和部署模型。通过将Jini软件的底层结构添加到这些部件上,EJB可以容易地成为Jini技术的服务。
问题34:什么是JavaSpaces技术?
JavaSpaces技术是为Java软件对象的相关组的简单通信和存储而提供的服务。
问题35:我是否需要完整的事务管理程序来使用Jini技术?
使用Jini技术不需要任何事务处理管理程序。服务可以使用免费的Jini两阶段提交事务管理程序,也使用对它们合适的任何其它事务管理程序,或者根本不使用事务管理程序。
问题36: 我可以在eJava和pJava技术中使用Jini技术吗?
这两种技术都将实现在Java 2环境基础上的改善,以便更好地支持Jini软件。有关开发工作的时间表将很快公之于众。
Jini技术和操作系统
问题37: Jini软件是一种网络操作系统吗?
不是。Jini软件是一种运行于Java平台之上, 用来创建一个虚拟机联盟的结构。每个虚拟机都运行在一个系统之上,操作系统又在网络上。网络操作系统是一种包含了与其它计算机通过网络进行通信的软件的操作系统。UNIX和Novell Netware就是网络操作系统的例子。
问题38: Windwos CE不能做同样的事情吗?
不能。Windows CE是一种可被安装在与传统的计算机相独立的设备上的操作系统。Jini软件不是操作系统, 它是一种编程模型, 它使开发者可以创建并管理它们自己的操作环境, 并连接到一个普通的网络上。该设备可自行管理自己, 并按照基于网络的一套规则运转, 其使用的操作系统是基于用户的考虑来决定的。
问题39: Jini技术与Microsoft的"即插即用"相比是怎样的?
Microsoft的"即插即用"特性并不是在所有方面都是可以利用的。从目前所报道的有关它的底层结构的情况看,我们认为:这一特性根本不可和Jini技术相比较。"即插即用"特性是绑缚在Microsoft操作系统上、由Microsoft领导的一个封闭的集团所定义的。而Jini技术则是独立于操作系统、由Jini软件用户社区所控制的,该用户社区具有免费访问、 扩展和更改Jini技术源代码的权力。"即插即用"是关于如何连接设备的,它要求把设备的驱动代码提供到客户或由用户手工安装驱动程序。而Jini技术是关于如何连接服务的,这种服务既可以是设备,也可以是软件,而且,Jini技术固有的代码灵活性允许设备将它们的驱动程序代码传递到客户,而不需要用户的干预。
Jini和其它查找技术
问题40:将使用Jini技术的网络上的查找技术与其它诸如LDAP和JNDI(Java Naming and Directory Interface(tm))等目录服务相比,结果会怎么样呢?
Jini技术中的查找服务是一个轻型的、但功能强大的服务库。
它使用Java平台的类型系统作为名空间,这种结构是独特的--这意味着它不是存储固定的名-值对(name-value pairs),而是存储对象和反映对象实际行为的对象图。这在一个分布式系统中有两个明显的优势。第一,你可以按照你所期望的行为,而不是仅仅用它们的名称来搜索一个对象或一个服务。第二,当你在目录中一旦发现一个对象时,即使以前不曾"见过"它,你也可以立即知道如何使用它。
例如,或许你要查找一个存储服务。你可以直接发出对某种行为的请求,如可移动的、固定的、本地的、远程的等等。按照你的请求,你可以收到若干选择,包括可写的CD、Zip驱动或其它许多任意的安装在你的网络上的介质类型。一旦你选择了某种你要使用的服务,则该服务的接口和驱动程序会自动地包含在你的选择之中,你不必担心它们是否曾经被安装过。
Jini的查找技术被设计为对这些请求的一种服务。而LDAP和JNDI可支持对你同样重要的其它服务。Jini技术不必替换你的现存系统,企业级目录服务可被提供为Jini技术服务中的服务,这就使客户可以容易地找到它们所需要的企业级信息。
问题41:什么是SLP,它与Jini软件的关系是怎样的?
Jini技术和SLP(服务定位协议)都是网络上的动态查找服务机制。然而,与SLP不同的是,Jini技术是基于Java平台的,它提供了代码的灵活性。代码的灵活性意味着你可以在网络上移动代码以及与它相关的行为(代理)。你可以在Jini技术的查找服务中存储任何Java对象或对象图(object graph),包括驱动程序、代理(proxies)、智能代理(smart proxies)和GUI等。应用程序可以用查找服务提取并执行它们。
问题42:我听说一种称作Salutation的业内新发明,它与Jini技术类似吗?
Salutation提供了类似于被称作Information Management Service(IMS)的服务库那样的查找服务,这与Jini技术的查找服务类似。然而,IMS只支持按照名-值对的搜索,而不支持象Jini技术那样的按照对象类型的搜索。Salutation允许服务之间的相互搜索,但一旦找到后,它便直接使用RPC。由于Jini软件是基于Java技术的,因而它支持代码的可移动性。这就允许你使用代理(agent)在网络上移动行为。
问题43:HAVi是家庭网络的新发明,Jini技术适用于它吗?
HAVi(家庭音频/视频交互操作性)是一种针对家用电子设备的家庭网络系统。Jini技术不但应用于家庭网络环境,也应用于企业和Internet。HAVi组织最近已宣布,它将使用Java编程语言作为它选定的语言,这就使它可以更容易地将HAVi集成到使用Jini软件的网络中。我们期望看到基于Jini技术的软件桥梁能够允许无缝共享HAVi设备和服务。
问题44:HP的JetSend协议与Jini软件是一种相似的技术吗?
HP JetSend是为固定功能和可编程的设备而设计的信息交换协议。Jini技术为软件服务和硬件服务都提供了一种体系结构,并为动态行为支持代码的灵活性。利用Jini技术,服务可被动态地发现并自动注册,驱动程序也可被自动地安装。通过在JetSend设备和Jini技术之间提供一个网关,JetSend设备可与Jini技术一起运行。
Jini技术和补充网络技术
问题45:Jini技术适应firewire技术吗?
Firewire技术主要致力于如何使PC与外部设备的连接变得更简单。通过提供将外部设备连接于较大的网络和Internet的方法, Jini技术进一步完善了Firewire和USB技术。Jini技术还提供了附加的服务, 如租用、事务处理和JavaSpace技术等。我们期望看到建立在那些重要技术之上的Jini技术。
问题46: Jini技术适用于USB吗?
通用串行总线(USB)是一个网络传输层, 设计它的目的是为了在硬件中采用 "即插即用"功能。虽然它解决了某些Jini技术可以解决的问题, 但Jini技术使USB向更深一步发展了。Jini技术是一个单独的、统一的传输层, 它可与网络直接会话; 使用Jini技术的服务既可以是硬件, 也可以是软件。Jini技术适用于USB, 正象它适用于以太网和Firewire一样。
问题47: Jini技术适用于家用电话线网络联盟(Home Phoneline Networking Alliance (HPNA))吗?
HPNA是一个创新, 它为家庭现有电话配线提供了 "以太网"的能力。HPNA所要解决的问题主要是各种现存家用配线(较老的单对非双绞线、3类双绞线和5类双绞线)以及如何管理在各种配线拓扑上的带宽限制。这种技术不是针对 "自发网络" 的概念的, 在自发网络中的设备的引导和加入是与家庭或办公室中的其它设备一起进行的。HPNA可能是Jini技术在家庭中的一个潜在的发送机制, 这里,家庭的网络配线已经不存在, 或者说安装这样的配线的费用是不能接受的。
问题48:Jini技术适合于Bluetooth吗?
Bluetooth是为在PDA、膝上电脑、移动电话和其它便携式设备之间使用低成本、短距离无线电链接而制定的网络传输技术规范。当两个Bluetooth设备相互靠近时,它们可以自动探测到对方,并建立网络链接。然后,它们便可以利用Jini技术去寻找能够提供它们所需要的服务的其它设备。Jini技术适用于Bluetooth,正象它适用于其它网络传输协议一样。
摘自SUN中国站